cli update

This commit is contained in:
Leifer
2022-10-24 17:55:07 +02:00
parent 40b08622ec
commit 5dc81f60c0
13 changed files with 561 additions and 23 deletions

Binary file not shown.

18
packages/cli/README.md Normal file
View File

@@ -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)

View File

@@ -1,4 +1,4 @@
- [X] Revisar version de NODE
- [X] Revisar OS
- Obtener Package Manager
- Revisar las libreria de WhatsappWeb para obtener version reciente
- [X] Obtener Package Manager
- [X] Revisar las libreria de WhatsappWeb para obtener version reciente

View File

@@ -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(``)
}

20
packages/cli/clean.js Normal file
View File

@@ -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 }

18
packages/cli/install.js Normal file
View File

@@ -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 }

View File

@@ -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()
})();

View File

@@ -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"
}
}

View File

@@ -0,0 +1,3 @@
{
"whatsapp-web.js":"latest"
}

View File

@@ -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 }