create-proyect-cli 1.1.0 → 2.0.1

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.
package/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ /node_modules
2
+
package/README.md CHANGED
@@ -1,47 +1,81 @@
1
- # Create Proyect CLI
1
+ # Create Proyect CLI 🚀
2
2
 
3
- Este CLI te permite realizar diversas acciones relacionadas con repositorios y proyectos, proporcionando una interfaz interactiva para simplificar tareas comunes. Puedes clonar repositorios, crear proyectos en Angular, React o Ionic, eliminar repositorios y ejecutar comandos npm en repositorios clonados.
3
+ [![npm version](https://img.shields.io/npm/v/create-proyect-cli.svg)](https://www.npmjs.com/package/create-proyect-cli)
4
+ [![Crates.io](https://img.shields.io/crates/v/create-proyect-cli.svg)](https://crates.io/crates/create-proyect-cli)
5
+ [![License: ISC](https://img.shields.io/badge/License-ISC-blue.svg)](https://opensource.org/licenses/ISC)
4
6
 
5
- ## Instalación
7
+ Este CLI te permite realizar diversas acciones relacionadas con repositorios y proyectos, proporcionando una interfaz interactiva ultrarrápida para simplificar tareas comunes. Originalmente escrito en Node.js y ahora **reescrito en Rust para un rendimiento nativo y tiempos de inicio instantáneos**.
6
8
 
7
- Para instalar y utilizar este CLI, sigue estos pasos:
9
+ Con esta herramienta puedes clonar repositorios, inicializar proyectos en múltiples lenguajes y frameworks, configurar bases de datos, contenedores Docker y gestionar dependencias de manera fluida.
8
10
 
9
- **1. Asegúrate de tener Node.js instalado en tu sistema.**
11
+ ## 📦 Instalación
10
12
 
11
- **2. Ejecuta el siguiente comando para instalar el CLI globalmente:**
13
+ Gracias a su nuevo motor en Rust, puedes instalar este CLI desde el ecosistema que prefieras:
12
14
 
13
- ` npm install -g create-proyect-cli `
15
+ ### Opción 1: Vía NPM (Recomendado para desarrolladores web)
14
16
 
15
- ## Uso
17
+ Si ya utilizas el ecosistema de JavaScript/Node.js, instala el binario globalmente a través de npm:
16
18
 
17
- Una vez instalado, puedes ejecutar el CLI desde cualquier ubicación en tu terminal usando el siguiente comando:
19
+ ```bash
20
+ npm install -g create-proyect-cli
21
+ ```
18
22
 
19
- `create-proyect-cli`
23
+ ### Opción 2: Vía Cargo (Para usuarios de Rust)
20
24
 
21
- El CLI te guiará a través de las diferentes acciones disponibles, proporcionando opciones interactivas para personalizar tu experiencia.
25
+ Si tienes Rust instalado en tu sistema, puedes compilar e instalar la herramienta directamente desde `crates.io`:
22
26
 
23
- ## Acciones Disponibles
27
+ ```bash
28
+ cargo install create-proyect-cli
29
+ ```
24
30
 
25
- **1. Clonar Repositorio:**
31
+ ## 💻 Uso
26
32
 
27
- Clona un repositorio Git proporcionando la URL del repositorio y la ubicación de clonación.
33
+ Una vez instalado, abre tu terminal en cualquier ubicación y ejecuta:
28
34
 
29
- **2. Crear Proyecto:**
35
+ ```bash
36
+ create-proyect-cli
37
+ ```
30
38
 
31
- Crea un nuevo proyecto en Angular, React o Ionic. Selecciona el tipo de proyecto y proporciona un nombre.
39
+ El menú interactivo te guiará a través de las diferentes acciones disponibles, sin necesidad de recordar comandos o banderas complejas.
32
40
 
33
- **3. Eliminar Repositorio:**
41
+ ## 🛠️ Acciones Disponibles
34
42
 
35
- Elimina un repositorio localmente. Ingresa la ubicación del repositorio que deseas eliminar.
43
+ ### 1. Crear Proyecto (Generador Inteligente)
44
+ Genera la estructura base para nuevos proyectos. El CLI soporta múltiples ecosistemas y te guiará con configuraciones interactivas:
36
45
 
37
- **4. Ejecutar npm en el Repositorio Clonado:**
46
+ * **Frontend & Móvil:**
47
+ * Angular
48
+ * React
49
+ * Vue (Vite)
50
+ * Ionic
51
+ * **Backend Avanzado (API Express - TypeScript):**
52
+ * Generación de estructura escalable (rutas, controladores, middlewares).
53
+ * **Bases de datos:** Elección interactiva entre MySQL, MongoDB, SQL Server, MariaDB o SQLite.
54
+ * **ORMs:** Configuración automática de Prisma, TypeORM o Mongoose.
55
+ * **Documentación:** Instalación opcional de Swagger (`swagger-ui-express`).
56
+ * **Docker:** Generación automática de `Dockerfile` y `docker-compose.yml` vinculando tu API con la base de datos seleccionada.
57
+ * **Otros Lenguajes:**
58
+ * **Python:** Crea un proyecto base e inicializa automáticamente su entorno virtual (`venv`).
59
+ * **Rust:** Inicializa un proyecto nativo con Cargo.
38
60
 
39
- Navega hasta la ubicación del repositorio clonado e instala las dependencias con el comando npm.
61
+ ### 2. Clonar Repositorio
62
+ Clona un repositorio Git proporcionando la URL y la ubicación destino, mostrando el progreso en tiempo real.
40
63
 
41
- ## Contribuir
64
+ ### 3. Instalar Dependencias
65
+ Navega automáticamente a la ubicación de tu proyecto y ejecuta la instalación de dependencias (`npm install`) en segundo plano.
42
66
 
43
- Si encuentras errores, tienes sugerencias de mejora o deseas contribuir de alguna manera, no dudes en crear un issue o enviar una solicitud de extracción.
67
+ ### 4. Eliminar Repositorio Local
68
+ Borra de forma segura y recursiva un directorio o repositorio local especificando su ruta.
44
69
 
45
- **¡Gracias por usar este CLI!**
70
+ ## 🤝 Contribuir
46
71
 
47
- **¡Esperamos que sea útil para tus proyectos!**
72
+ Si encuentras errores, tienes sugerencias de mejora o deseas agregar soporte para nuevos lenguajes, no dudes en crear un *issue* o enviar un *pull request* en el repositorio oficial.
73
+
74
+ **¡Gracias por usar este CLI! Esperamos que acelere la creación de todos tus proyectos.**
75
+
76
+ ---
77
+
78
+ ## 📄 Licencia y Autoría
79
+
80
+ * **Autor:** Carlos Ignacio Olano Mares
81
+ * **Licencia:** GPL
@@ -0,0 +1,212 @@
1
+ const { createWriteStream, existsSync, mkdirSync, mkdtemp } = require("fs");
2
+ const { join, sep } = require("path");
3
+ const { spawnSync } = require("child_process");
4
+ const { tmpdir } = require("os");
5
+
6
+ const axios = require("axios");
7
+ const rimraf = require("rimraf");
8
+ const tmpDir = tmpdir();
9
+
10
+ const error = (msg) => {
11
+ console.error(msg);
12
+ process.exit(1);
13
+ };
14
+
15
+ class Package {
16
+ constructor(platform, name, url, filename, zipExt, binaries) {
17
+ let errors = [];
18
+ if (typeof url !== "string") {
19
+ errors.push("url must be a string");
20
+ } else {
21
+ try {
22
+ new URL(url);
23
+ } catch (e) {
24
+ errors.push(e);
25
+ }
26
+ }
27
+ if (name && typeof name !== "string") {
28
+ errors.push("package name must be a string");
29
+ }
30
+ if (!name) {
31
+ errors.push("You must specify the name of your package");
32
+ }
33
+ if (binaries && typeof binaries !== "object") {
34
+ errors.push("binaries must be a string => string map");
35
+ }
36
+ if (!binaries) {
37
+ errors.push("You must specify the binaries in the package");
38
+ }
39
+
40
+ if (errors.length > 0) {
41
+ let errorMsg =
42
+ "One or more of the parameters you passed to the Binary constructor are invalid:\n";
43
+ errors.forEach((error) => {
44
+ errorMsg += error;
45
+ });
46
+ errorMsg +=
47
+ '\n\nCorrect usage: new Package("my-binary", "https://example.com/binary/download.tar.gz", {"my-binary": "my-binary"})';
48
+ error(errorMsg);
49
+ }
50
+
51
+ this.platform = platform;
52
+ this.url = url;
53
+ this.name = name;
54
+ this.filename = filename;
55
+ this.zipExt = zipExt;
56
+ this.installDirectory = join(__dirname, "node_modules", ".bin_real");
57
+ this.binaries = binaries;
58
+
59
+ if (!existsSync(this.installDirectory)) {
60
+ mkdirSync(this.installDirectory, { recursive: true });
61
+ }
62
+ }
63
+
64
+ exists() {
65
+ for (const binaryName in this.binaries) {
66
+ const binRelPath = this.binaries[binaryName];
67
+ const binPath = join(this.installDirectory, binRelPath);
68
+ if (!existsSync(binPath)) {
69
+ return false;
70
+ }
71
+ }
72
+ return true;
73
+ }
74
+
75
+ install(fetchOptions, suppressLogs = false) {
76
+ if (this.exists()) {
77
+ if (!suppressLogs) {
78
+ console.error(
79
+ `${this.name} is already installed, skipping installation.`,
80
+ );
81
+ }
82
+ return Promise.resolve();
83
+ }
84
+
85
+ if (existsSync(this.installDirectory)) {
86
+ rimraf.sync(this.installDirectory);
87
+ }
88
+
89
+ mkdirSync(this.installDirectory, { recursive: true });
90
+
91
+ if (!suppressLogs) {
92
+ console.error(`Downloading release from ${this.url}`);
93
+ }
94
+
95
+ return axios({ ...fetchOptions, url: this.url, responseType: "stream" })
96
+ .then((res) => {
97
+ return new Promise((resolve, reject) => {
98
+ mkdtemp(`${tmpDir}${sep}`, (err, directory) => {
99
+ let tempFile = join(directory, this.filename);
100
+ const sink = res.data.pipe(createWriteStream(tempFile));
101
+ sink.on("error", (err) => reject(err));
102
+ sink.on("close", () => {
103
+ if (/\.tar\.*/.test(this.zipExt)) {
104
+ const result = spawnSync("tar", [
105
+ "xf",
106
+ tempFile,
107
+ // The tarballs are stored with a leading directory
108
+ // component; we strip one component in the
109
+ // shell installers too.
110
+ "--strip-components",
111
+ "1",
112
+ "-C",
113
+ this.installDirectory,
114
+ ]);
115
+ if (result.status == 0) {
116
+ resolve();
117
+ } else if (result.error) {
118
+ reject(result.error);
119
+ } else {
120
+ reject(
121
+ new Error(
122
+ `An error occurred untarring the artifact: stdout: ${result.stdout}; stderr: ${result.stderr}`,
123
+ ),
124
+ );
125
+ }
126
+ } else if (this.zipExt == ".zip") {
127
+ let result;
128
+ if (this.platform.artifactName.includes("windows")) {
129
+ // Windows does not have "unzip" by default on many installations, instead
130
+ // we use Expand-Archive from powershell
131
+ result = spawnSync("powershell.exe", [
132
+ "-NoProfile",
133
+ "-NonInteractive",
134
+ "-Command",
135
+ `& {
136
+ param([string]$LiteralPath, [string]$DestinationPath)
137
+ Expand-Archive -LiteralPath $LiteralPath -DestinationPath $DestinationPath -Force
138
+ }`,
139
+ tempFile,
140
+ this.installDirectory,
141
+ ]);
142
+ } else {
143
+ result = spawnSync("unzip", [
144
+ "-q",
145
+ tempFile,
146
+ "-d",
147
+ this.installDirectory,
148
+ ]);
149
+ }
150
+
151
+ if (result.status == 0) {
152
+ resolve();
153
+ } else if (result.error) {
154
+ reject(result.error);
155
+ } else {
156
+ reject(
157
+ new Error(
158
+ `An error occurred unzipping the artifact: stdout: ${result.stdout}; stderr: ${result.stderr}`,
159
+ ),
160
+ );
161
+ }
162
+ } else {
163
+ reject(
164
+ new Error(`Unrecognized file extension: ${this.zipExt}`),
165
+ );
166
+ }
167
+ });
168
+ });
169
+ });
170
+ })
171
+ .then(() => {
172
+ if (!suppressLogs) {
173
+ console.error(`${this.name} has been installed!`);
174
+ }
175
+ })
176
+ .catch((e) => {
177
+ error(`Error fetching release: ${e.message}`);
178
+ });
179
+ }
180
+
181
+ run(binaryName, fetchOptions) {
182
+ const promise = !this.exists()
183
+ ? this.install(fetchOptions, true)
184
+ : Promise.resolve();
185
+
186
+ promise
187
+ .then(() => {
188
+ const [, , ...args] = process.argv;
189
+
190
+ const options = { cwd: process.cwd(), stdio: "inherit" };
191
+
192
+ const binRelPath = this.binaries[binaryName];
193
+ if (!binRelPath) {
194
+ error(`${binaryName} is not a known binary in ${this.name}`);
195
+ }
196
+ const binPath = join(this.installDirectory, binRelPath);
197
+ const result = spawnSync(binPath, args, options);
198
+
199
+ if (result.error) {
200
+ error(result.error);
201
+ }
202
+
203
+ process.exit(result.status);
204
+ })
205
+ .catch((e) => {
206
+ error(e.message);
207
+ process.exit(1);
208
+ });
209
+ }
210
+ }
211
+
212
+ module.exports.Package = Package;
package/binary.js ADDED
@@ -0,0 +1,128 @@
1
+ const { Package } = require("./binary-install");
2
+ const os = require("os");
3
+ const cTable = require("console.table");
4
+ const libc = require("detect-libc");
5
+ const { configureProxy } = require("axios-proxy-builder");
6
+
7
+ const error = (msg) => {
8
+ console.error(msg);
9
+ process.exit(1);
10
+ };
11
+
12
+ const {
13
+ name,
14
+ artifactDownloadUrls,
15
+ supportedPlatforms,
16
+ glibcMinimum,
17
+ } = require("./package.json");
18
+
19
+ // FIXME: implement NPM installer handling of fallback download URLs
20
+ const artifactDownloadUrl = artifactDownloadUrls[0];
21
+ const builderGlibcMajorVersion = glibcMinimum.major;
22
+ const builderGlibcMinorVersion = glibcMinimum.series;
23
+
24
+ const getPlatform = () => {
25
+ const rawOsType = os.type();
26
+ const rawArchitecture = os.arch();
27
+
28
+ // We want to use rust-style target triples as the canonical key
29
+ // for a platform, so translate the "os" library's concepts into rust ones
30
+ let osType = "";
31
+ switch (rawOsType) {
32
+ case "Windows_NT":
33
+ osType = "pc-windows-msvc";
34
+ break;
35
+ case "Darwin":
36
+ osType = "apple-darwin";
37
+ break;
38
+ case "Linux":
39
+ osType = "unknown-linux-gnu";
40
+ break;
41
+ }
42
+
43
+ let arch = "";
44
+ switch (rawArchitecture) {
45
+ case "x64":
46
+ arch = "x86_64";
47
+ break;
48
+ case "arm64":
49
+ arch = "aarch64";
50
+ break;
51
+ }
52
+
53
+ if (rawOsType === "Linux") {
54
+ if (libc.familySync() == "musl") {
55
+ osType = "unknown-linux-musl-dynamic";
56
+ } else if (libc.isNonGlibcLinuxSync()) {
57
+ console.warn(
58
+ "Your libc is neither glibc nor musl; trying static musl binary instead",
59
+ );
60
+ osType = "unknown-linux-musl-static";
61
+ } else {
62
+ let libcVersion = libc.versionSync();
63
+ let splitLibcVersion = libcVersion.split(".");
64
+ let libcMajorVersion = splitLibcVersion[0];
65
+ let libcMinorVersion = splitLibcVersion[1];
66
+ if (
67
+ libcMajorVersion != builderGlibcMajorVersion ||
68
+ libcMinorVersion < builderGlibcMinorVersion
69
+ ) {
70
+ // We can't run the glibc binaries, but we can run the static musl ones
71
+ // if they exist
72
+ console.warn(
73
+ "Your glibc isn't compatible; trying static musl binary instead",
74
+ );
75
+ osType = "unknown-linux-musl-static";
76
+ }
77
+ }
78
+ }
79
+
80
+ // Assume the above succeeded and build a target triple to look things up with.
81
+ // If any of it failed, this lookup will fail and we'll handle it like normal.
82
+ let targetTriple = `${arch}-${osType}`;
83
+ let platform = supportedPlatforms[targetTriple];
84
+
85
+ if (!platform) {
86
+ error(
87
+ `Platform with type "${rawOsType}" and architecture "${rawArchitecture}" is not supported by ${name}.\nYour system must be one of the following:\n\n${Object.keys(
88
+ supportedPlatforms,
89
+ ).join(",")}`,
90
+ );
91
+ }
92
+
93
+ return platform;
94
+ };
95
+
96
+ const getPackage = () => {
97
+ const platform = getPlatform();
98
+ const url = `${artifactDownloadUrl}/${platform.artifactName}`;
99
+ let filename = platform.artifactName;
100
+ let ext = platform.zipExt;
101
+ let binary = new Package(platform, name, url, filename, ext, platform.bins);
102
+
103
+ return binary;
104
+ };
105
+
106
+ const install = (suppressLogs) => {
107
+ if (!artifactDownloadUrl || artifactDownloadUrl.length === 0) {
108
+ console.warn("in demo mode, not installing binaries");
109
+ return;
110
+ }
111
+ const package = getPackage();
112
+ const proxy = configureProxy(package.url);
113
+
114
+ return package.install(proxy, suppressLogs);
115
+ };
116
+
117
+ const run = (binaryName) => {
118
+ const package = getPackage();
119
+ const proxy = configureProxy(package.url);
120
+
121
+ package.run(binaryName, proxy);
122
+ };
123
+
124
+ module.exports = {
125
+ install,
126
+ run,
127
+ getPackage,
128
+ };
package/install.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { install } = require("./binary");
4
+ install(false);
@@ -0,0 +1,545 @@
1
+ {
2
+ "lockfileVersion": 3,
3
+ "name": "create-proyect-cli",
4
+ "packages": {
5
+ "": {
6
+ "bin": {
7
+ "create-proyect-cli": "run-create-proyect-cli.js"
8
+ },
9
+ "dependencies": {
10
+ "axios": "^1.13.5",
11
+ "axios-proxy-builder": "^0.1.2",
12
+ "console.table": "^0.10.0",
13
+ "detect-libc": "^2.1.2",
14
+ "rimraf": "^6.1.3"
15
+ },
16
+ "devDependencies": {
17
+ "prettier": "^3.8.1"
18
+ },
19
+ "engines": {
20
+ "node": ">=14",
21
+ "npm": ">=6"
22
+ },
23
+ "hasInstallScript": true,
24
+ "name": "create-proyect-cli",
25
+ "version": "2.0.1"
26
+ },
27
+ "node_modules/@isaacs/cliui": {
28
+ "engines": {
29
+ "node": ">=18"
30
+ },
31
+ "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==",
32
+ "license": "BlueOak-1.0.0",
33
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz",
34
+ "version": "9.0.0"
35
+ },
36
+ "node_modules/asynckit": {
37
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
38
+ "license": "MIT",
39
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
40
+ "version": "0.4.0"
41
+ },
42
+ "node_modules/axios": {
43
+ "dependencies": {
44
+ "follow-redirects": "^1.15.11",
45
+ "form-data": "^4.0.5",
46
+ "proxy-from-env": "^1.1.0"
47
+ },
48
+ "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==",
49
+ "license": "MIT",
50
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz",
51
+ "version": "1.13.5"
52
+ },
53
+ "node_modules/axios-proxy-builder": {
54
+ "dependencies": {
55
+ "tunnel": "^0.0.6"
56
+ },
57
+ "integrity": "sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA==",
58
+ "license": "MIT",
59
+ "resolved": "https://registry.npmjs.org/axios-proxy-builder/-/axios-proxy-builder-0.1.2.tgz",
60
+ "version": "0.1.2"
61
+ },
62
+ "node_modules/balanced-match": {
63
+ "dependencies": {
64
+ "jackspeak": "^4.2.3"
65
+ },
66
+ "engines": {
67
+ "node": "20 || >=22"
68
+ },
69
+ "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==",
70
+ "license": "MIT",
71
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz",
72
+ "version": "4.0.2"
73
+ },
74
+ "node_modules/brace-expansion": {
75
+ "dependencies": {
76
+ "balanced-match": "^4.0.2"
77
+ },
78
+ "engines": {
79
+ "node": "20 || >=22"
80
+ },
81
+ "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==",
82
+ "license": "MIT",
83
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz",
84
+ "version": "5.0.2"
85
+ },
86
+ "node_modules/call-bind-apply-helpers": {
87
+ "dependencies": {
88
+ "es-errors": "^1.3.0",
89
+ "function-bind": "^1.1.2"
90
+ },
91
+ "engines": {
92
+ "node": ">= 0.4"
93
+ },
94
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
95
+ "license": "MIT",
96
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
97
+ "version": "1.0.2"
98
+ },
99
+ "node_modules/clone": {
100
+ "engines": {
101
+ "node": ">=0.8"
102
+ },
103
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
104
+ "license": "MIT",
105
+ "optional": true,
106
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
107
+ "version": "1.0.4"
108
+ },
109
+ "node_modules/combined-stream": {
110
+ "dependencies": {
111
+ "delayed-stream": "~1.0.0"
112
+ },
113
+ "engines": {
114
+ "node": ">= 0.8"
115
+ },
116
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
117
+ "license": "MIT",
118
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
119
+ "version": "1.0.8"
120
+ },
121
+ "node_modules/console.table": {
122
+ "dependencies": {
123
+ "easy-table": "1.1.0"
124
+ },
125
+ "engines": {
126
+ "node": "> 0.10"
127
+ },
128
+ "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==",
129
+ "license": "MIT",
130
+ "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz",
131
+ "version": "0.10.0"
132
+ },
133
+ "node_modules/defaults": {
134
+ "dependencies": {
135
+ "clone": "^1.0.2"
136
+ },
137
+ "funding": {
138
+ "url": "https://github.com/sponsors/sindresorhus"
139
+ },
140
+ "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
141
+ "license": "MIT",
142
+ "optional": true,
143
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
144
+ "version": "1.0.4"
145
+ },
146
+ "node_modules/delayed-stream": {
147
+ "engines": {
148
+ "node": ">=0.4.0"
149
+ },
150
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
151
+ "license": "MIT",
152
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
153
+ "version": "1.0.0"
154
+ },
155
+ "node_modules/detect-libc": {
156
+ "engines": {
157
+ "node": ">=8"
158
+ },
159
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
160
+ "license": "Apache-2.0",
161
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
162
+ "version": "2.1.2"
163
+ },
164
+ "node_modules/dunder-proto": {
165
+ "dependencies": {
166
+ "call-bind-apply-helpers": "^1.0.1",
167
+ "es-errors": "^1.3.0",
168
+ "gopd": "^1.2.0"
169
+ },
170
+ "engines": {
171
+ "node": ">= 0.4"
172
+ },
173
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
174
+ "license": "MIT",
175
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
176
+ "version": "1.0.1"
177
+ },
178
+ "node_modules/easy-table": {
179
+ "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==",
180
+ "license": "MIT",
181
+ "optionalDependencies": {
182
+ "wcwidth": ">=1.0.1"
183
+ },
184
+ "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
185
+ "version": "1.1.0"
186
+ },
187
+ "node_modules/es-define-property": {
188
+ "engines": {
189
+ "node": ">= 0.4"
190
+ },
191
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
192
+ "license": "MIT",
193
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
194
+ "version": "1.0.1"
195
+ },
196
+ "node_modules/es-errors": {
197
+ "engines": {
198
+ "node": ">= 0.4"
199
+ },
200
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
201
+ "license": "MIT",
202
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
203
+ "version": "1.3.0"
204
+ },
205
+ "node_modules/es-object-atoms": {
206
+ "dependencies": {
207
+ "es-errors": "^1.3.0"
208
+ },
209
+ "engines": {
210
+ "node": ">= 0.4"
211
+ },
212
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
213
+ "license": "MIT",
214
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
215
+ "version": "1.1.1"
216
+ },
217
+ "node_modules/es-set-tostringtag": {
218
+ "dependencies": {
219
+ "es-errors": "^1.3.0",
220
+ "get-intrinsic": "^1.2.6",
221
+ "has-tostringtag": "^1.0.2",
222
+ "hasown": "^2.0.2"
223
+ },
224
+ "engines": {
225
+ "node": ">= 0.4"
226
+ },
227
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
228
+ "license": "MIT",
229
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
230
+ "version": "2.1.0"
231
+ },
232
+ "node_modules/follow-redirects": {
233
+ "engines": {
234
+ "node": ">=4.0"
235
+ },
236
+ "funding": [
237
+ {
238
+ "type": "individual",
239
+ "url": "https://github.com/sponsors/RubenVerborgh"
240
+ }
241
+ ],
242
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
243
+ "license": "MIT",
244
+ "peerDependenciesMeta": {
245
+ "debug": {
246
+ "optional": true
247
+ }
248
+ },
249
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
250
+ "version": "1.15.11"
251
+ },
252
+ "node_modules/form-data": {
253
+ "dependencies": {
254
+ "asynckit": "^0.4.0",
255
+ "combined-stream": "^1.0.8",
256
+ "es-set-tostringtag": "^2.1.0",
257
+ "hasown": "^2.0.2",
258
+ "mime-types": "^2.1.12"
259
+ },
260
+ "engines": {
261
+ "node": ">= 6"
262
+ },
263
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
264
+ "license": "MIT",
265
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
266
+ "version": "4.0.5"
267
+ },
268
+ "node_modules/function-bind": {
269
+ "funding": {
270
+ "url": "https://github.com/sponsors/ljharb"
271
+ },
272
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
273
+ "license": "MIT",
274
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
275
+ "version": "1.1.2"
276
+ },
277
+ "node_modules/get-intrinsic": {
278
+ "dependencies": {
279
+ "call-bind-apply-helpers": "^1.0.2",
280
+ "es-define-property": "^1.0.1",
281
+ "es-errors": "^1.3.0",
282
+ "es-object-atoms": "^1.1.1",
283
+ "function-bind": "^1.1.2",
284
+ "get-proto": "^1.0.1",
285
+ "gopd": "^1.2.0",
286
+ "has-symbols": "^1.1.0",
287
+ "hasown": "^2.0.2",
288
+ "math-intrinsics": "^1.1.0"
289
+ },
290
+ "engines": {
291
+ "node": ">= 0.4"
292
+ },
293
+ "funding": {
294
+ "url": "https://github.com/sponsors/ljharb"
295
+ },
296
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
297
+ "license": "MIT",
298
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
299
+ "version": "1.3.0"
300
+ },
301
+ "node_modules/get-proto": {
302
+ "dependencies": {
303
+ "dunder-proto": "^1.0.1",
304
+ "es-object-atoms": "^1.0.0"
305
+ },
306
+ "engines": {
307
+ "node": ">= 0.4"
308
+ },
309
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
310
+ "license": "MIT",
311
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
312
+ "version": "1.0.1"
313
+ },
314
+ "node_modules/glob": {
315
+ "dependencies": {
316
+ "minimatch": "^10.2.0",
317
+ "minipass": "^7.1.2",
318
+ "path-scurry": "^2.0.0"
319
+ },
320
+ "engines": {
321
+ "node": "20 || >=22"
322
+ },
323
+ "funding": {
324
+ "url": "https://github.com/sponsors/isaacs"
325
+ },
326
+ "integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==",
327
+ "license": "BlueOak-1.0.0",
328
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz",
329
+ "version": "13.0.3"
330
+ },
331
+ "node_modules/gopd": {
332
+ "engines": {
333
+ "node": ">= 0.4"
334
+ },
335
+ "funding": {
336
+ "url": "https://github.com/sponsors/ljharb"
337
+ },
338
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
339
+ "license": "MIT",
340
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
341
+ "version": "1.2.0"
342
+ },
343
+ "node_modules/has-symbols": {
344
+ "engines": {
345
+ "node": ">= 0.4"
346
+ },
347
+ "funding": {
348
+ "url": "https://github.com/sponsors/ljharb"
349
+ },
350
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
351
+ "license": "MIT",
352
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
353
+ "version": "1.1.0"
354
+ },
355
+ "node_modules/has-tostringtag": {
356
+ "dependencies": {
357
+ "has-symbols": "^1.0.3"
358
+ },
359
+ "engines": {
360
+ "node": ">= 0.4"
361
+ },
362
+ "funding": {
363
+ "url": "https://github.com/sponsors/ljharb"
364
+ },
365
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
366
+ "license": "MIT",
367
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
368
+ "version": "1.0.2"
369
+ },
370
+ "node_modules/hasown": {
371
+ "dependencies": {
372
+ "function-bind": "^1.1.2"
373
+ },
374
+ "engines": {
375
+ "node": ">= 0.4"
376
+ },
377
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
378
+ "license": "MIT",
379
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
380
+ "version": "2.0.2"
381
+ },
382
+ "node_modules/jackspeak": {
383
+ "dependencies": {
384
+ "@isaacs/cliui": "^9.0.0"
385
+ },
386
+ "engines": {
387
+ "node": "20 || >=22"
388
+ },
389
+ "funding": {
390
+ "url": "https://github.com/sponsors/isaacs"
391
+ },
392
+ "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==",
393
+ "license": "BlueOak-1.0.0",
394
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz",
395
+ "version": "4.2.3"
396
+ },
397
+ "node_modules/lru-cache": {
398
+ "engines": {
399
+ "node": "20 || >=22"
400
+ },
401
+ "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==",
402
+ "license": "BlueOak-1.0.0",
403
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz",
404
+ "version": "11.2.6"
405
+ },
406
+ "node_modules/math-intrinsics": {
407
+ "engines": {
408
+ "node": ">= 0.4"
409
+ },
410
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
411
+ "license": "MIT",
412
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
413
+ "version": "1.1.0"
414
+ },
415
+ "node_modules/mime-db": {
416
+ "engines": {
417
+ "node": ">= 0.6"
418
+ },
419
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
420
+ "license": "MIT",
421
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
422
+ "version": "1.52.0"
423
+ },
424
+ "node_modules/mime-types": {
425
+ "dependencies": {
426
+ "mime-db": "1.52.0"
427
+ },
428
+ "engines": {
429
+ "node": ">= 0.6"
430
+ },
431
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
432
+ "license": "MIT",
433
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
434
+ "version": "2.1.35"
435
+ },
436
+ "node_modules/minimatch": {
437
+ "dependencies": {
438
+ "brace-expansion": "^5.0.2"
439
+ },
440
+ "engines": {
441
+ "node": "20 || >=22"
442
+ },
443
+ "funding": {
444
+ "url": "https://github.com/sponsors/isaacs"
445
+ },
446
+ "integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==",
447
+ "license": "BlueOak-1.0.0",
448
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz",
449
+ "version": "10.2.0"
450
+ },
451
+ "node_modules/minipass": {
452
+ "engines": {
453
+ "node": ">=16 || 14 >=14.17"
454
+ },
455
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
456
+ "license": "ISC",
457
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
458
+ "version": "7.1.2"
459
+ },
460
+ "node_modules/package-json-from-dist": {
461
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
462
+ "license": "BlueOak-1.0.0",
463
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
464
+ "version": "1.0.1"
465
+ },
466
+ "node_modules/path-scurry": {
467
+ "dependencies": {
468
+ "lru-cache": "^11.0.0",
469
+ "minipass": "^7.1.2"
470
+ },
471
+ "engines": {
472
+ "node": "20 || >=22"
473
+ },
474
+ "funding": {
475
+ "url": "https://github.com/sponsors/isaacs"
476
+ },
477
+ "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
478
+ "license": "BlueOak-1.0.0",
479
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
480
+ "version": "2.0.1"
481
+ },
482
+ "node_modules/prettier": {
483
+ "bin": {
484
+ "prettier": "bin/prettier.cjs"
485
+ },
486
+ "dev": true,
487
+ "engines": {
488
+ "node": ">=14"
489
+ },
490
+ "funding": {
491
+ "url": "https://github.com/prettier/prettier?sponsor=1"
492
+ },
493
+ "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
494
+ "license": "MIT",
495
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz",
496
+ "version": "3.8.1"
497
+ },
498
+ "node_modules/proxy-from-env": {
499
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
500
+ "license": "MIT",
501
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
502
+ "version": "1.1.0"
503
+ },
504
+ "node_modules/rimraf": {
505
+ "bin": {
506
+ "rimraf": "dist/esm/bin.mjs"
507
+ },
508
+ "dependencies": {
509
+ "glob": "^13.0.3",
510
+ "package-json-from-dist": "^1.0.1"
511
+ },
512
+ "engines": {
513
+ "node": "20 || >=22"
514
+ },
515
+ "funding": {
516
+ "url": "https://github.com/sponsors/isaacs"
517
+ },
518
+ "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==",
519
+ "license": "BlueOak-1.0.0",
520
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz",
521
+ "version": "6.1.3"
522
+ },
523
+ "node_modules/tunnel": {
524
+ "engines": {
525
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
526
+ },
527
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
528
+ "license": "MIT",
529
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
530
+ "version": "0.0.6"
531
+ },
532
+ "node_modules/wcwidth": {
533
+ "dependencies": {
534
+ "defaults": "^1.0.3"
535
+ },
536
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
537
+ "license": "MIT",
538
+ "optional": true,
539
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
540
+ "version": "1.0.1"
541
+ }
542
+ },
543
+ "requires": true,
544
+ "version": "2.0.1"
545
+ }
package/package.json CHANGED
@@ -1,28 +1,106 @@
1
1
  {
2
+ "artifactDownloadUrls": [
3
+ "https://github.com/CARLOSMARES/proyecto-cli/releases/download/v2.0.1"
4
+ ],
5
+ "author": "Carlos Ignacio Olano Mares",
6
+ "bin": {
7
+ "create-proyect-cli": "run-create-proyect-cli.js"
8
+ },
9
+ "dependencies": {
10
+ "axios": "^1.13.5",
11
+ "axios-proxy-builder": "^0.1.2",
12
+ "console.table": "^0.10.0",
13
+ "detect-libc": "^2.1.2",
14
+ "rimraf": "^6.1.3"
15
+ },
16
+ "description": "CLI para crear proyectos rápidamente",
17
+ "devDependencies": {
18
+ "prettier": "^3.8.1"
19
+ },
20
+ "engines": {
21
+ "node": ">=14",
22
+ "npm": ">=6"
23
+ },
24
+ "glibcMinimum": {
25
+ "major": 2,
26
+ "series": 35
27
+ },
2
28
  "name": "create-proyect-cli",
3
- "version": "1.1.0",
4
- "description": "",
5
- "main": "index.js",
29
+ "preferUnplugged": true,
30
+ "repository": "https://github.com/CARLOSMARES/proyecto-cli",
6
31
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1"
32
+ "fmt": "prettier --write **/*.js",
33
+ "fmt:check": "prettier --check **/*.js",
34
+ "postinstall": "node ./install.js"
8
35
  },
9
- "type": "module",
10
- "author": "Carlos Ignacio Olano Mares",
11
- "license": "ISC",
12
- "dependencies": {
13
- "figlet": "^1.7.0",
14
- "inquirer": "^9.2.12",
15
- "ora": "^7.0.1"
36
+ "supportedPlatforms": {
37
+ "aarch64-apple-darwin": {
38
+ "artifactName": "create-proyect-cli-aarch64-apple-darwin.tar.xz",
39
+ "bins": {
40
+ "create-proyect-cli": "create-proyect-cli"
41
+ },
42
+ "zipExt": ".tar.xz"
43
+ },
44
+ "aarch64-pc-windows-msvc": {
45
+ "artifactName": "create-proyect-cli-x86_64-pc-windows-msvc.zip",
46
+ "bins": {
47
+ "create-proyect-cli": "create-proyect-cli.exe"
48
+ },
49
+ "zipExt": ".zip"
50
+ },
51
+ "aarch64-unknown-linux-gnu": {
52
+ "artifactName": "create-proyect-cli-aarch64-unknown-linux-gnu.tar.xz",
53
+ "bins": {
54
+ "create-proyect-cli": "create-proyect-cli"
55
+ },
56
+ "zipExt": ".tar.xz"
57
+ },
58
+ "x86_64-apple-darwin": {
59
+ "artifactName": "create-proyect-cli-x86_64-apple-darwin.tar.xz",
60
+ "bins": {
61
+ "create-proyect-cli": "create-proyect-cli"
62
+ },
63
+ "zipExt": ".tar.xz"
64
+ },
65
+ "x86_64-pc-windows-gnu": {
66
+ "artifactName": "create-proyect-cli-x86_64-pc-windows-msvc.zip",
67
+ "bins": {
68
+ "create-proyect-cli": "create-proyect-cli.exe"
69
+ },
70
+ "zipExt": ".zip"
71
+ },
72
+ "x86_64-pc-windows-msvc": {
73
+ "artifactName": "create-proyect-cli-x86_64-pc-windows-msvc.zip",
74
+ "bins": {
75
+ "create-proyect-cli": "create-proyect-cli.exe"
76
+ },
77
+ "zipExt": ".zip"
78
+ },
79
+ "x86_64-unknown-linux-gnu": {
80
+ "artifactName": "create-proyect-cli-x86_64-unknown-linux-gnu.tar.xz",
81
+ "bins": {
82
+ "create-proyect-cli": "create-proyect-cli"
83
+ },
84
+ "zipExt": ".tar.xz"
85
+ },
86
+ "x86_64-unknown-linux-musl-dynamic": {
87
+ "artifactName": "create-proyect-cli-x86_64-unknown-linux-musl.tar.xz",
88
+ "bins": {
89
+ "create-proyect-cli": "create-proyect-cli"
90
+ },
91
+ "zipExt": ".tar.xz"
92
+ },
93
+ "x86_64-unknown-linux-musl-static": {
94
+ "artifactName": "create-proyect-cli-x86_64-unknown-linux-musl.tar.xz",
95
+ "bins": {
96
+ "create-proyect-cli": "create-proyect-cli"
97
+ },
98
+ "zipExt": ".tar.xz"
99
+ }
16
100
  },
17
- "keywords": [
18
- "cli",
19
- "command",
20
- "package",
21
- "pkg",
22
- "framework",
23
- "create",
24
- "proyect",
25
- "project"
26
- ],
27
- "bin": "./index.js"
28
- }
101
+ "version": "2.0.1",
102
+ "volta": {
103
+ "node": "18.14.1",
104
+ "npm": "9.5.0"
105
+ }
106
+ }
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { run } = require("./binary");
4
+ run("create-proyect-cli");
package/.travis.yml DELETED
@@ -1,12 +0,0 @@
1
- language: node_js
2
- node_js:
3
- - "node" # Usa la última versión de Node.js
4
-
5
- deploy:
6
- provider: npm
7
- email: "microsystemags@hotmail.com" # Tu dirección de correo electrónico asociada con tu cuenta de npm
8
- api_key: "$NPM_TOKEN" # Configura esta variable de entorno en la configuración de Travis CI
9
-
10
- branches:
11
- only:
12
- - main # O el nombre de la rama que desees
package/index.js DELETED
@@ -1,154 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { exec } from 'child_process';
4
- import inquirer from 'inquirer';
5
- import ora from 'ora';
6
- import figlet from 'figlet';
7
-
8
- // Función para clonar un repositorio
9
- function cloneRepository(repoUrl, cloneLocation) {
10
- const cloneCommand = `git clone ${repoUrl} ${cloneLocation}`;
11
- const cloneSpinner = ora('Clonando repositorio...').start();
12
-
13
- exec(cloneCommand, (error, stdout, stderr) => {
14
- if (error) {
15
- cloneSpinner.fail(`Error al clonar el repositorio: ${stderr}`);
16
- } else {
17
- cloneSpinner.succeed(`Repositorio clonado exitosamente en: ${cloneLocation}`);
18
- }
19
- });
20
- }
21
-
22
- //Funcion para instalar dependencias
23
- function installdependencias(location) {
24
- const install = 'npm install';
25
- const installSpinner = ora('Instalando Dependencias..').start();
26
- exec(`cd ${location}`, (error, stdout, stderr)=>{
27
- if(error){
28
- installSpinner.fail(`Error al ingresar a la carpeta: ${stderr}`)
29
- }else {
30
- exec(install, (error, stdout, stderr) => {
31
- if (error) {
32
- installSpinner.fail(`Error al Instalar las dependecias: ${stderr}`);
33
- } else {
34
- installSpinner.succeed('Dependencias Instaladas Exitosamente');
35
- }
36
- });
37
- }
38
- });
39
- }
40
-
41
- //Funcion para eliminar repo local
42
- function deleterepo(location) {
43
- const deleteRepo = `rm -rf ${location}`;
44
- const deleteSpinner = ora('Eliminando Repositorio Local..').start();
45
- exec(deleteRepo, (error, stdout, stderr) => {
46
- if (error) {
47
- deleteSpinner.fail(`Error al Eliminar el repositorio: ${stderr}`);
48
- } else {
49
- deleteSpinner.succeed('Repositorio Eliminado Correctamente');
50
- }
51
- });
52
- }
53
- // Función para crear un proyecto en Angular, React o Ionic
54
- function createProject(projectType, projectName) {
55
- let createCommand = '';
56
- let createSpinnerText = '';
57
-
58
- switch (projectType) {
59
- case 'Angular':
60
- createCommand = `npx ng new ${projectName}`;
61
- createSpinnerText = 'Creando proyecto Angular...';
62
- break;
63
- case 'React':
64
- createCommand = `npx create-react-app ${projectName}`;
65
- createSpinnerText = 'Creando proyecto React...';
66
- break;
67
- case 'Ionic':
68
- createCommand = `npx ionic start ${projectName} blank`;
69
- createSpinnerText = 'Creando proyecto Ionic...';
70
- break;
71
- default:
72
- console.error('Tipo de proyecto no reconocido.');
73
- return;
74
- }
75
-
76
- const createSpinner = ora(createSpinnerText).start();
77
-
78
- exec(createCommand, (error, stdout, stderr) => {
79
- if (error) {
80
- createSpinner.fail(`Error al crear el proyecto: ${stderr}`);
81
- } else {
82
- createSpinner.succeed(`Proyecto ${projectName} creado exitosamente.`);
83
- }
84
- });
85
- }
86
-
87
- // Presentación del texto con Figlet
88
- figlet('Create Project CLI', (err, data) => {
89
- if (err) {
90
- console.error('Error al generar el texto de presentación.');
91
- return;
92
- }
93
- console.log(data);
94
-
95
- const questions = [
96
- {
97
- type: 'list',
98
- name: 'action',
99
- message: '¿Qué acción desea realizar?',
100
- choices: ['Clonar repositorio', 'Crear proyecto', 'Instalar Dependencias', 'Eliminar Repositorio Local'],
101
- },
102
- {
103
- type: 'input',
104
- name: 'repoUrl',
105
- message: 'Ingrese la URL del repositorio:',
106
- when: (answers) => answers.action === 'Clonar repositorio',
107
- },
108
- {
109
- type: 'input',
110
- name: 'location',
111
- message: 'Ingrese la URL del repositorio local:',
112
- when: (answers) => answers.action === 'Eliminar Repositorio Local',
113
- },
114
- {
115
- type: 'input',
116
- name: 'cloneLocation',
117
- message: 'Ingrese la ubicación donde desea clonar el repositorio:',
118
- when: (answers) => answers.action === 'Clonar repositorio',
119
- default: './',
120
- },
121
- {
122
- type: 'input',
123
- name: 'location',
124
- message: 'Ingrese la ubicación donde desea instalar las dependencias:',
125
- when: (answers) => answers.action === 'Instalar Dependencias',
126
- default: './',
127
- },
128
- {
129
- type: 'list',
130
- name: 'projectType',
131
- message: 'Seleccione el tipo de proyecto:',
132
- choices: ['Angular', 'React', 'Ionic'],
133
- when: (answers) => answers.action === 'Crear proyecto',
134
- },
135
- {
136
- type: 'input',
137
- name: 'projectName',
138
- message: 'Ingrese el nombre del proyecto:',
139
- when: (answers) => answers.action === 'Crear proyecto',
140
- },
141
- ];
142
-
143
- inquirer.prompt(questions).then((answers) => {
144
- if (answers.action === 'Clonar repositorio') {
145
- cloneRepository(answers.repoUrl, answers.cloneLocation);
146
- } else if (answers.action === 'Crear proyecto') {
147
- createProject(answers.projectType, answers.projectName);
148
- }else if (answers.action === 'Instalar Dependencias'){
149
- installdependencias(answers.location);
150
- } else if(answers.action === 'Eliminar Repositorio Local'){
151
- deleteLocalRepo(answers.location);
152
- }
153
- });
154
- });