mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-18 11:39:15 +00:00
170 lines
4.5 KiB
JavaScript
170 lines
4.5 KiB
JavaScript
const { execFile } = require('node:child_process')
|
|
const { readFileSync, writeFileSync, readdirSync } = require('node:fs')
|
|
const { join } = require('path')
|
|
const process = require('node:process')
|
|
const util = require('node:util')
|
|
const semver = require('semver')
|
|
|
|
const cmd = util.promisify(execFile)
|
|
const OS_ENVIROMENT_WIN = process.platform.includes('win32')
|
|
|
|
const PATH_PACKAGES = join(__dirname, '..', `packages`)
|
|
const PATH_STARTERS = join(__dirname, '..', `starters`, `apps`)
|
|
const NPM_COMMAND = OS_ENVIROMENT_WIN ? 'npm.cmd' : 'npm'
|
|
const [PKG_NAME, PKG_STABLE] = process.argv.slice(2) || [null, null]
|
|
|
|
/**
|
|
* Revisar ultima version de una paquetes
|
|
* @param {*} pkgName
|
|
*/
|
|
const checkPkg = async (pkgName = '') => {
|
|
const { stdout } = await cmd(
|
|
NPM_COMMAND,
|
|
['show', `${pkgName}`, 'version'],
|
|
{
|
|
stdio: 'inherit',
|
|
}
|
|
)
|
|
|
|
return stdout.trim().replace('\n', '')
|
|
}
|
|
|
|
/**
|
|
* Revisar ultima version de una paquetes
|
|
* @param {*} pkgName
|
|
*/
|
|
const checkPkgStable = async (pkgName = '', version = '') => {
|
|
const { stdout } = await cmd(
|
|
NPM_COMMAND,
|
|
[
|
|
'show',
|
|
`${pkgName}@${version.split('.').shift()}.*`,
|
|
'version',
|
|
'--json',
|
|
],
|
|
{
|
|
stdio: 'inherit',
|
|
}
|
|
)
|
|
|
|
try {
|
|
const listVersions = JSON.parse(stdout).reverse()
|
|
console.log(`[${pkgName}]: `, listVersions)
|
|
return listVersions.at(0)
|
|
} catch (e) {
|
|
const listVersions = [stdout.trim().replace('\n').replaceAll('"', '')]
|
|
console.log(`[${pkgName}]: `, listVersions)
|
|
return listVersions.at(0)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Revisar todas las dependencias del provider
|
|
* @param {*} provider
|
|
* @param {*} stable
|
|
* @returns
|
|
*/
|
|
const checkEveryProvider = async (provider = '', stable = true) => {
|
|
const pkgDependencies = readFileSync(
|
|
join(PATH_PACKAGES, 'provider', 'src', provider, 'package.json')
|
|
)
|
|
try {
|
|
const { dependencies } = JSON.parse(pkgDependencies)
|
|
const devParse = Object.entries(dependencies)
|
|
const newDevParse = {}
|
|
for (const [pkgName, pkgVersion] of devParse) {
|
|
if (!stable) newDevParse[pkgName] = await checkPkg(pkgName)
|
|
if (stable)
|
|
newDevParse[pkgName] = await checkPkgStable(pkgName, pkgVersion)
|
|
|
|
console.log(newDevParse)
|
|
}
|
|
return newDevParse
|
|
} catch (e) {
|
|
console.log(e)
|
|
return {}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Actualizar depedencias con nuevas versiones
|
|
* @param {*} provider
|
|
* @param {*} list
|
|
* @returns
|
|
*/
|
|
const updateDependencies = async (provider = '', list = {}) => {
|
|
const pathProvider = join(
|
|
PATH_PACKAGES,
|
|
'provider',
|
|
'src',
|
|
provider,
|
|
'package.json'
|
|
)
|
|
|
|
try {
|
|
const pkgDependencies = readFileSync(pathProvider)
|
|
const { dependencies } = JSON.parse(pkgDependencies)
|
|
writeFileSync(
|
|
pathProvider,
|
|
JSON.stringify(
|
|
{ dependencies: { ...dependencies, ...list } },
|
|
null,
|
|
2
|
|
)
|
|
)
|
|
} catch (e) {
|
|
console.log(e)
|
|
return {}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Actualizar starters
|
|
* @param {*} provider
|
|
* @returns
|
|
*/
|
|
const updateStarters = async (provider = '', updateDev = {}) => {
|
|
provider = provider === 'web-whatsapp' ? 'wweb' : provider
|
|
const allStarters = readdirSync(PATH_STARTERS).filter((n) =>
|
|
n.includes(provider)
|
|
)
|
|
|
|
try {
|
|
for (const base of allStarters) {
|
|
const pkgDependenciesBase = readFileSync(
|
|
join(PATH_STARTERS, base, 'package.json')
|
|
)
|
|
const pkgBase = JSON.parse(pkgDependenciesBase)
|
|
writeFileSync(
|
|
join(PATH_STARTERS, base, 'package.json'),
|
|
JSON.stringify(
|
|
{
|
|
...pkgBase,
|
|
dependencies: { ...pkgBase.dependencies, ...updateDev },
|
|
},
|
|
null,
|
|
2
|
|
)
|
|
)
|
|
}
|
|
} catch (e) {
|
|
console.log(e)
|
|
return
|
|
}
|
|
}
|
|
|
|
const main = async () => {
|
|
if (PKG_NAME) {
|
|
const providerName = PKG_NAME ? PKG_NAME.split('=').at(1) : null
|
|
const providerStable = PKG_STABLE ? PKG_STABLE.split('=').at(1) : null
|
|
const list = await checkEveryProvider(
|
|
providerName,
|
|
providerStable === 'true'
|
|
)
|
|
await updateDependencies(providerName, list)
|
|
await updateStarters(providerName, list)
|
|
}
|
|
}
|
|
|
|
main()
|