From 5dc81f60c00325692c3fe26c626e72c0be859f8d Mon Sep 17 00:00:00 2001 From: Leifer Date: Mon, 24 Oct 2022 17:55:07 +0200 Subject: [PATCH] cli update --- .prettierrc.json | Bin 2 -> 280 bytes package-lock.json | 368 ++++++++++++++++++++++++++++++-- packages/README.md | 11 +- packages/cli/.prettierrc.json | Bin 0 -> 66 bytes packages/cli/README.md | 18 ++ packages/cli/TODO.md | 4 +- packages/cli/check.js | 8 +- packages/cli/clean.js | 20 ++ packages/cli/install.js | 18 ++ packages/cli/interactive.js | 53 +++++ packages/cli/package.json | 9 +- packages/cli/pkg-to-update.json | 3 + packages/cli/tool.js | 72 +++++++ 13 files changed, 561 insertions(+), 23 deletions(-) create mode 100644 packages/cli/.prettierrc.json create mode 100644 packages/cli/README.md create mode 100644 packages/cli/clean.js create mode 100644 packages/cli/install.js create mode 100644 packages/cli/interactive.js create mode 100644 packages/cli/pkg-to-update.json diff --git a/.prettierrc.json b/.prettierrc.json index 46b134b197f35e75e0784bedbf94a8dd124693b1..6d06d7a005e703b7aa35134a3a1a17cc4f387900 100644 GIT binary patch literal 280 zcmaKou?oU47=*vsr;yAYwBXXUPap`+DUDi4t(bNaUtN1`vb2I6A<6&W-G9mV^J2p` z!O-)>(%`l3Tq)^j1&g5&%istcv}Y@wrQ$4AEstAb=POo_x)mpSO|u47mQEo}_Uatf m@8swHDjxEg()K^|_w0nF|DgPilU`Km6q8(Z^K(7^#hVca<0xwY literal 2 JcmezW4*&xG0sa60 diff --git a/package-lock.json b/package-lock.json index 86634be..e3b801d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1308,6 +1308,35 @@ "node-fetch": "2.6.7" } }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/culvert": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", @@ -1373,6 +1402,18 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-package-manager": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", + "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", + "dev": true, + "dependencies": { + "execa": "^5.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/devtools-protocol": { "version": "0.0.981744", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", @@ -1719,6 +1760,41 @@ "node": ">=8.3.0" } }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -2423,6 +2499,15 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -2989,6 +3074,12 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -3027,6 +3118,15 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3225,6 +3325,18 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/nssocket": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", @@ -3287,6 +3399,21 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -3422,6 +3549,15 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -3749,6 +3885,28 @@ "read": "^1.0.4" } }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/proto3-json-serializer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.0.tgz", @@ -4386,6 +4544,27 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", @@ -4411,6 +4590,12 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -4648,6 +4833,15 @@ "node": ">=8" } }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -5127,15 +5321,6 @@ "which": "bin/which" } }, - "node_modules/which-pm-runs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", - "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/wmf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", @@ -5333,9 +5518,15 @@ "packages/cli": { "version": "1.0.0", "license": "ISC", + "dependencies": { + "whatsapp-web.js": "^1.18.0" + }, "devDependencies": { + "cross-spawn": "^7.0.3", + "detect-package-manager": "^2.0.1", "kleur": "^4.1.5", - "which-pm-runs": "^1.1.0" + "prompts": "^2.4.2", + "rimraf": "^3.0.2" } } }, @@ -6213,8 +6404,12 @@ "cli": { "version": "file:packages/cli", "requires": { - "kleur": "*", - "which-pm-runs": "^1.1.0" + "cross-spawn": "^7.0.3", + "detect-package-manager": "^2.0.1", + "kleur": "^4.1.5", + "prompts": "^2.4.2", + "rimraf": "*", + "whatsapp-web.js": "^1.18.0" } }, "cli-tableau": { @@ -6351,6 +6546,28 @@ "node-fetch": "2.6.7" } }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "culvert": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", @@ -6403,6 +6620,15 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, + "detect-package-manager": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", + "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", + "dev": true, + "requires": { + "execa": "^5.1.1" + } + }, "devtools-protocol": { "version": "0.0.981744", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", @@ -6660,6 +6886,31 @@ "uuid": "^8.3.0" } }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + } + } + }, "express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -7194,6 +7445,12 @@ } } }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -7679,6 +7936,12 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -7702,6 +7965,12 @@ "mime-db": "1.52.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -7854,6 +8123,15 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, "nssocket": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", @@ -7903,6 +8181,15 @@ "wrappy": "1" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -8002,6 +8289,12 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -8248,6 +8541,24 @@ "read": "^1.0.4" } }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "dependencies": { + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + } + } + }, "proto3-json-serializer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.0.tgz", @@ -8715,6 +9026,21 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", @@ -8737,6 +9063,12 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -8922,6 +9254,12 @@ "ansi-regex": "^5.0.1" } }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -9282,12 +9620,6 @@ "isexe": "^2.0.0" } }, - "which-pm-runs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", - "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", - "dev": true - }, "wmf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", diff --git a/packages/README.md b/packages/README.md index 18681e2..6214268 100644 --- a/packages/README.md +++ b/packages/README.md @@ -27,4 +27,13 @@ __Package Provider__ - Twilio __Package Input/Output__ -> Gestionar los diferentes mensajes entranates y poder responder, a la vez de mantener un registro de los datos \ No newline at end of file +> Gestionar los diferentes mensajes entranates y poder responder, a la vez de mantener un registro de los datos + +--------- +__Comunidad__ +> Forma parte de este proyecto. + +- [Discord](https://link.codigoencasa.com/DISCORD) +- [Twitter](https://twitter.com/leifermendez) +- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [Telegram](https://t.me/leifermendez) \ No newline at end of file diff --git a/packages/cli/.prettierrc.json b/packages/cli/.prettierrc.json new file mode 100644 index 0000000000000000000000000000000000000000..6716a2761831e45cf188075b8c7f57793f497389 GIT binary patch literal 66 zcmezWubP32K>-St7)lt57!nyW8FGL)k0G7GnIWGc7YGv>lo+gls+1T~8HyQ9fiy%{ GEdv0s=?ee= literal 0 HcmV?d00001 diff --git a/packages/cli/README.md b/packages/cli/README.md new file mode 100644 index 0000000..87e22bd --- /dev/null +++ b/packages/cli/README.md @@ -0,0 +1,18 @@ +# @bot-whatsapp/cli + +- [X] Revisar version de NODE +- [X] Revisar OS +- [X] Obtener Package Manager +- [X] Revisar las libreria de WhatsappWeb para obtener version reciente +- [X] Opcion interactiva de limpiar session +- [ ] Opcion de generar `json` con la configuracion +- [ ] Agregar `rollup` para limpiar el codigo + +--------- +__Comunidad__ +> Forma parte de este proyecto. + +- [Discord](https://link.codigoencasa.com/DISCORD) +- [Twitter](https://twitter.com/leifermendez) +- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [Telegram](https://t.me/leifermendez) \ No newline at end of file diff --git a/packages/cli/TODO.md b/packages/cli/TODO.md index 8970046..316ecb6 100644 --- a/packages/cli/TODO.md +++ b/packages/cli/TODO.md @@ -1,4 +1,4 @@ - [X] Revisar version de NODE - [X] Revisar OS -- Obtener Package Manager -- Revisar las libreria de WhatsappWeb para obtener version reciente \ No newline at end of file +- [X] Obtener Package Manager +- [X] Revisar las libreria de WhatsappWeb para obtener version reciente \ No newline at end of file diff --git a/packages/cli/check.js b/packages/cli/check.js index b1c4749..e87050a 100644 --- a/packages/cli/check.js +++ b/packages/cli/check.js @@ -1,6 +1,7 @@ -const {red, yellow} = require('kleur') +const {red, yellow, green, bgCyan} = require('kleur') const checkNodeVersion = () => { + console.log(bgCyan('🚀 Revisando tu Node.js')) const version = process.version; const majorVersion = parseInt(version.replace('v','').split('.').shift()) if(majorVersion < 16){ @@ -9,10 +10,13 @@ const checkNodeVersion = () => { ) process.exit(1) } + console.log(green(`Node.js combatible ${version}`)) + console.log(``) } const checkOs = () => { + console.log(bgCyan('🙂 Revisando tu Sistema Operativo')) const os = process.platform if(!os.includes('win32')){ const messages = [ @@ -28,6 +32,8 @@ const checkOs = () => { yellow(messages.join(' \n')) ) } + + console.log(``) } diff --git a/packages/cli/clean.js b/packages/cli/clean.js new file mode 100644 index 0000000..e3f200a --- /dev/null +++ b/packages/cli/clean.js @@ -0,0 +1,20 @@ +const rimraf = require("rimraf"); +const { yellow } = require('kleur') +const { join } = require('path') + + +const PATH_WW = [ + join(process.cwd(), '.wwebjs_auth'), + join(process.cwd(), 'session.json') +] + +const cleanSession = () => { + const queue = [] + for (const PATH of PATH_WW) { + console.log(yellow(`😬 Eliminando: ${PATH}`)) + queue.push(rimraf(PATH, () => Promise.resolve())) + } + return Promise.all(queue) +} + +module.exports = { cleanSession } \ No newline at end of file diff --git a/packages/cli/install.js b/packages/cli/install.js new file mode 100644 index 0000000..0d385cc --- /dev/null +++ b/packages/cli/install.js @@ -0,0 +1,18 @@ +const { readFileSync } = require('fs') +const { join } = require('path') +const { installDeps, getPkgManage } = require('./tool') + +const PKG_TO_UPDATE = () => { + const data = readFileSync(join(__dirname, 'pkg-to-update.json'), 'utf-8') + const dataParse = JSON.parse(data) + const pkg = Object.keys(dataParse).map((n) => `${n}@${dataParse[n]}`) + return pkg +} + + +const installAll = async () => { + const pkg = await getPkgManage() + installDeps('npm', PKG_TO_UPDATE()).runInstall() +} + +module.exports = { installAll } \ No newline at end of file diff --git a/packages/cli/interactive.js b/packages/cli/interactive.js new file mode 100644 index 0000000..9929b7a --- /dev/null +++ b/packages/cli/interactive.js @@ -0,0 +1,53 @@ +const prompts = require('prompts'); +const { installAll } = require('./install') +const { cleanSession } = require('./clean') +const { checkNodeVersion, checkOs } = require('./check') + +const questions = [ + { + type: 'text', + name: 'dependencies', + message: 'Quieres actualizar las librerias "whatsapp-web.js"? (Y/n)' + }, + { + type: 'text', + name: 'cleanTmp', + message: 'Quieres limpiar la session del bot? (Y/n)' + } +]; + + +(async () => { + console.clear() + checkNodeVersion() + checkOs() + const onCancel = prompt => { + console.log('Proceso cancelado!'); + return true; + } + const response = await prompts(questions, { onCancel }); + const { dependencies = '', cleanTmp = '' } = response + + const installOrUdpateDep = async () => { + const answer = dependencies.toLowerCase() || 'n' + if (answer.includes('n')) return true + + if (answer.includes('y')) { + await installAll() + return true + } + } + + const cleanAllSession = async () => { + const answer = cleanTmp.toLowerCase() || 'n' + if (answer.includes('n')) return true + + if (answer.includes('y')) { + await cleanSession() + return true + } + } + + installOrUdpateDep() + cleanAllSession() +})(); \ No newline at end of file diff --git a/packages/cli/package.json b/packages/cli/package.json index 48834ca..bec3d8f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -10,6 +10,13 @@ "author": "", "license": "ISC", "devDependencies": { - "kleur": "^4.1.5" + "cross-spawn": "^7.0.3", + "detect-package-manager": "^2.0.1", + "kleur": "^4.1.5", + "prompts": "^2.4.2", + "rimraf": "^3.0.2" + }, + "dependencies": { + "whatsapp-web.js": "^1.18.0" } } diff --git a/packages/cli/pkg-to-update.json b/packages/cli/pkg-to-update.json new file mode 100644 index 0000000..ee745df --- /dev/null +++ b/packages/cli/pkg-to-update.json @@ -0,0 +1,3 @@ +{ + "whatsapp-web.js":"latest" +} \ No newline at end of file diff --git a/packages/cli/tool.js b/packages/cli/tool.js index e69de29..640e81c 100644 --- a/packages/cli/tool.js +++ b/packages/cli/tool.js @@ -0,0 +1,72 @@ +const { red } = require('kleur') +const spawn = require('cross-spawn') +const { detect } = require('detect-package-manager') +const PKG_OPTION = { + npm: 'install', + yarn: 'add', + pnpm: 'add' +} + +const getPkgManage = async () => { + const pkg = await detect() + return pkg +} + +const installDeps = (pkgManager, package) => { + const errorMessage = `Ocurrio un error instalando ${package}` + let childProcess = [] + + const installSingle = (pkgInstall) => () => { + new Promise((resolve, reject) => { + try { + childProcess = spawn(pkgManager, [PKG_OPTION[pkgManager], pkgInstall], { + stdio: 'inherit' + }) + + childProcess.on('error', (e) => { + console.error(e) + console.error( + red(errorMessage) + ) + resolve() + }) + + childProcess.on('close', (code) => { + if (code === 0) { + resolve() + } else { + console.error(code) + console.error( + red(errorMessage) + ) + } + }) + + resolve() + } catch (e) { + console.error(e) + console.error( + red(errorMessage) + ) + } + + }) + } + + if (typeof package === 'string') { + childProcess.push(installSingle(package)) + } else { + for (const pkg of package) { + childProcess.push(installSingle(pkg)) + } + } + + + const runInstall = () => { + return Promise.all(childProcess.map((i) => i())) + } + return { runInstall } + +} + +module.exports = { getPkgManage, installDeps } \ No newline at end of file