@joystick.js/cli-canary 0.0.0-canary.653 → 0.0.0-canary.654

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- import n from"child_process";import d from"fs";import m from"../../../cli_log.js";import _ from"../../../command_exists.js";import p from"../../../get_platform_safe_path.js";import g from"../../../get_process_id_from_port.js";import l from"../../../kill_port_process.js";import r from"../../../path_exists.js";const{rename:f,readdir:y,mkdir:u}=d.promises,w=()=>{m(` MongoDB is not installed on this computer.
1
+ import i from"child_process";import g from"fs";import p from"../../../cli_log.js";import l from"../../../command_exists.js";import f from"../../../get_platform_safe_path.js";import w from"../../../get_process_id_from_port.js";import u from"../../../kill_port_process.js";import c from"../../../path_exists.js";const{rename:y,readdir:b,mkdir:h}=g.promises,k=()=>{p(` MongoDB is not installed on this computer.
2
2
 
3
3
  Download MongoDB at https://www.mongodb.com/try/download/community
4
4
 
5
- After you've installed MongoDB, run joystick start again, or, remove MongoDB from your config.databases array in your settings.development.json file to skip starting it up.`,{level:"danger",docs:"https://github.com/cheatcode/joystick#databases"})},b=async()=>{if(process.platform==="win32"){const t=(await y("C:\\Program Files\\MongoDB\\Server\\"))?.sort().reverse();return t&&t.length>0}return _("mongod")},k=(t=2610)=>new Promise(s=>{const o=["--port",t,"--dbpath",p(`./.joystick/data/mongodb_${t}`),"--quiet","--replSet",`joystick_${t}`];n.spawn("mongod",o.filter(a=>!!a)).stdout.on("data",async a=>{(a?.toString()).includes("Waiting for connections")&&n.exec(`mongo --eval "rs.initiate()" --verbose --port ${t}`,async(e,D,i)=>{if(e||i)console.warn(e||i);else{const c=await g(t);return s(parseInt(c,10))}})})}),h=async(t=2610)=>{const s=await r(".joystick/data/mongodb"),o=await r(`.joystick/data/mongodb_${t}`);return s&&!o&&await f(".joystick/data/mongodb",`.joystick/data/mongodb_${t}`),o||await u(`.joystick/data/mongodb_${t}`,{recursive:!0}),o},x=async(t=2610)=>{await b()||(w(),process.exit(1)),await h(t);try{return await l(t),await k(t)}catch(o){console.warn(o),process.exit(1)}};var F=x;export{F as default};
5
+ After you've installed MongoDB, run joystick start again, or, remove MongoDB from your config.databases array in your settings.development.json file to skip starting it up.`,{level:"danger",docs:"https://github.com/cheatcode/joystick#databases"})},v=async()=>{if(process.platform==="win32"){const o=await d();return o&&o.length>0}return l("mongod")},d=async()=>await b("C:\\Program Files\\MongoDB\\Server\\"),x=(o=[])=>process.platform==="win32"&&["6.0","7.0","8.0","9.0","10.0"].some(t=>o.includes(t))?"mongosh":"mongo",j=(o=2610,s=[])=>new Promise(t=>{const n=["--port",o,"--dbpath",f(`./.joystick/data/mongodb_${o}`),"--quiet","--replSet",`joystick_${o}`];i.spawn("mongod",n.filter(a=>!!a)).stdout.on("data",async a=>{if((a?.toString()).includes("Waiting for connections")){const m=x(s);i.exec(`${m} --eval "rs.initiate()" --verbose --port ${o}`,async(e,S,r)=>{if(e||r)console.warn(e||r);else{const _=await w(o);return t(parseInt(_,10))}})}})}),$=async(o=2610)=>{const s=await c(".joystick/data/mongodb"),t=await c(`.joystick/data/mongodb_${o}`);return s&&!t&&await y(".joystick/data/mongodb",`.joystick/data/mongodb_${o}`),t||await h(`.joystick/data/mongodb_${o}`,{recursive:!0}),t},D=async(o=2610)=>{const s=await v(),t=os.platform()==="win32"?await d():null;s||(k(),process.exit(1)),await $(o);try{return await u(o),await j(o,mongodb_windows_versions)}catch(n){console.warn(n),process.exit(1)}};var E=D;export{E as default};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@joystick.js/cli-canary",
3
3
  "type": "module",
4
- "version": "0.0.0-canary.653",
4
+ "version": "0.0.0-canary.654",
5
5
  "description": "The CLI for Joystick.",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
@@ -21,14 +21,31 @@ const warn_mongodb_not_installed = () => {
21
21
 
22
22
  const check_if_mongodb_exists = async () => {
23
23
  if (process.platform === "win32") {
24
- const mongodb_versions = (await readdir(`C:\\Program Files\\MongoDB\\Server\\`))?.sort().reverse();
24
+ const mongodb_versions = await get_mongodb_windows_versions();
25
25
  return mongodb_versions && mongodb_versions.length > 0;
26
26
  }
27
27
 
28
28
  return command_exists("mongod");
29
29
  };
30
30
 
31
- const start_mongodb_process = (mongodb_port = 2610) => {
31
+ const get_mongodb_windows_versions = async () => {
32
+ const mongodb_versions = (await readdir(`C:\\Program Files\\MongoDB\\Server\\`));
33
+ return mongodb_versions;
34
+ };
35
+
36
+ const get_mongo_command = (mongodb_windows_versions = []) => {
37
+ if (process.platform === 'win32') {
38
+ const has_mongodb_six_or_greater = ['6.0', '7.0', '8.0', '9.0', '10.0'].some((mongodb_version) => {
39
+ return mongodb_windows_versions.includes(mongodb_version);
40
+ });
41
+
42
+ return has_mongodb_six_or_greater ? 'mongosh' : 'mongo';
43
+ }
44
+
45
+ return 'mongo';
46
+ };
47
+
48
+ const start_mongodb_process = (mongodb_port = 2610, mongodb_windows_versions = []) => {
32
49
  return new Promise((resolve) => {
33
50
  const database_process_flags = [
34
51
  '--port',
@@ -49,7 +66,8 @@ const start_mongodb_process = (mongodb_port = 2610) => {
49
66
  const stdout = data?.toString();
50
67
 
51
68
  if (stdout.includes('Waiting for connections')) {
52
- child_process.exec(`mongo --eval "rs.initiate()" --verbose --port ${mongodb_port}`, async (error, _stdout, stderr) => {
69
+ const mongo_command = get_mongo_command(mongodb_windows_versions);
70
+ child_process.exec(`${mongo_command} --eval "rs.initiate()" --verbose --port ${mongodb_port}`, async (error, _stdout, stderr) => {
53
71
  if (error || stderr) {
54
72
  console.warn(error || stderr);
55
73
  } else {
@@ -82,6 +100,7 @@ const setup_data_directory = async (mongodb_port = 2610) => {
82
100
 
83
101
  const start_mongodb = async (mongodb_port = 2610) => {
84
102
  const mongodb_exists = await check_if_mongodb_exists();
103
+ const windows_latest_mongodb = os.platform() === 'win32' ? await get_mongodb_windows_versions() : null;
85
104
 
86
105
  if (!mongodb_exists) {
87
106
  warn_mongodb_not_installed();
@@ -92,7 +111,7 @@ const start_mongodb = async (mongodb_port = 2610) => {
92
111
 
93
112
  try {
94
113
  await kill_port_process(mongodb_port);
95
- const mongo_process_id = await start_mongodb_process(mongodb_port);
114
+ const mongo_process_id = await start_mongodb_process(mongodb_port, mongodb_windows_versions);
96
115
  return mongo_process_id;
97
116
  } catch (exception) {
98
117
  console.warn(exception);