-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Expand file tree
/
Copy pathindex.js
More file actions
129 lines (118 loc) Β· 4.49 KB
/
index.js
File metadata and controls
129 lines (118 loc) Β· 4.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import { dirname, join } from 'path'
import { createRequire } from 'module'
import { fileURLToPath } from 'url'
import { fork, setupMaster } from 'cluster'
import { unwatchFile, watchFile } from 'fs'
import cfonts from 'cfonts'
import { createInterface } from 'readline'
import yargs from 'yargs'
import express from 'express'
import chalk from 'chalk'
import path from 'path'
import os from 'os'
import { promises as fsPromises } from 'fs'
// https://stackoverflow.com/a/50052194
const __dirname = dirname(fileURLToPath(import.meta.url))
const require = createRequire(__dirname) //Incorpora la capacidad de crear el mΓ©todo 'requerir'
const {name, author} = require(join(__dirname, './package.json')) //https://www.stefanjudis.com/snippets/how-to-import-json-files-in-es-modules-node-js/
const {say} = cfonts
const rl = createInterface(process.stdin, process.stdout)
//const app = express()
//const port = process.env.PORT || 8080;
say('Gata\nBot\nMD', {
font: 'chrome',
align: 'center',
gradient: ['red', 'magenta']
})
say('Powered By GataDios', {
font: 'console',
align: 'center',
gradient: ['red', 'magenta']
})
var isRunning = false
process.on('uncaughtException', (err) => {
if (err.code === 'ENOSPC') {
console.error('Se ha detectado ENOSPC (sin espacio o lΓmite de watchers alcanzado), reiniciando....')
} else {
console.error('Error no capturado:', err)
}
process.exit(1)
})
async function start(file) {
if (isRunning) return
isRunning = true
const currentFilePath = new URL(import.meta.url).pathname
let args = [join(__dirname, file), ...process.argv.slice(2)]
say([process.argv[0], ...args].join(' '), {
font: 'console',
align: 'center',
gradient: ['red', 'magenta']
})
setupMaster({exec: args[0], args: args.slice(1)})
let p = fork()
p.on('message', (data) => {
switch (data) {
case 'reset':
p.process.kill()
isRunning = false
start.apply(this, arguments)
break
case 'uptime':
p.send(process.uptime())
break
}
})
p.on('exit', (_, code) => {
isRunning = false
console.error('β οΈ ERROR β οΈ >> ', code)
start('main.js') //
if (code === 0) return
watchFile(args[0], () => {
unwatchFile(args[0])
start(file)
})
})
const ramInGB = os.totalmem() / (1024 * 1024 * 1024)
const freeRamInGB = os.freemem() / (1024 * 1024 * 1024)
const packageJsonPath = path.join(path.dirname(currentFilePath), './package.json')
try {
const packageJsonData = await fsPromises.readFile(packageJsonPath, 'utf-8')
const packageJsonObj = JSON.parse(packageJsonData)
const currentTime = new Date().toLocaleString()
let lineM = 'β― β― β― β― β― β― β― β― β― β― β― γ'
console.log(
chalk.yellow(`β${lineM}
β${chalk.blueBright('ββ
β
β
β
β
β
β
β
β
β
β
β
β
β
β
')}
β${chalk.blueBright('β')}${chalk.yellow(`π₯οΈ ${os.type()}, ${os.release()} - ${os.arch()}`)}
β${chalk.blueBright('β')}${chalk.yellow(`πΎ Total RAM: ${ramInGB.toFixed(2)} GB`)}
β${chalk.blueBright('β')}${chalk.yellow(`π½ Free RAM: ${freeRamInGB.toFixed(2)} GB`)}
β${chalk.blueBright('β°β
β
β
β
β
β
β
β
β
β
β
β
β
β
β
')}
β${chalk.blueBright('ββ
β
β
β
β
β
β
β
β
β
β
β
β
β
β
')}
β${chalk.blueBright('β')} ${chalk.blue.bold('π’INFORMACIΓN :')}
β${chalk.blueBright('β')} ${chalk.blueBright('β
β
β
β
β
β
β
β
β
β
β
β
β
β
β
')}
β${chalk.blueBright('β')}${chalk.cyan(`π Nombre: ${packageJsonObj.name}`)}
β${chalk.blueBright('β')}${chalk.cyan(`π VersiΓ³n: ${packageJsonObj.version}`)}
β${chalk.blueBright('β')}${chalk.cyan(`π DescripciΓ³n: ${packageJsonObj.description}`)}
β${chalk.blueBright('β')}${chalk.cyan(`πΊ Project Author: ${packageJsonObj.author.name} (@gata_dios)`)}
β${chalk.blueBright('β')}${chalk.blueBright('β
β
β
β
β
β
β
β
β
β
β
β
β
β
β
')}
β${chalk.blueBright('β')}${chalk.yellow('π Colaborador:')}
β${chalk.blueBright('β')}${chalk.yellow('β’ elrebelde21 (Mario ofc)')}
β${chalk.blueBright('β°β
β
β
β
β
β
β
β
β
β
β
β
β
β
β
')}
β${chalk.blueBright('ββ
β
β
β
β
β
β
β
β
β
β
β
β
β
β
')}
β${chalk.blueBright('β')}${chalk.cyan('β° Hora Actual :')}
β${chalk.blueBright('β')}${chalk.cyan(`${currentTime}`)}
β${chalk.blueBright('β°β
β
β
β
β
β
β
β
β
β
β
β
β
β
β
')}
β°${lineM}`)
)
setInterval(() => {}, 1000)
} catch (err) {
console.error(chalk.red(`β No se pudo leer el archivo package.json: ${err}`))
}
let opts = new Object(yargs(process.argv.slice(2)).exitProcess(false).parse())
if (!opts['test'])
if (!rl.listenerCount())
rl.on('line', (line) => {
p.emit('message', line.trim())
})
}
start('main.js')