codecrypto-cli 1.0.3 → 1.0.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-sc.d.ts","sourceRoot":"","sources":["../../src/commands/deploy-sc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,eAAe,SAsIxB,CAAC"}
1
+ {"version":3,"file":"deploy-sc.d.ts","sourceRoot":"","sources":["../../src/commands/deploy-sc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,eAAe,SA6JxB,CAAC"}
@@ -125,7 +125,19 @@ exports.deployScCommand = new commander_1.Command('deploy-sc')
125
125
  if (options.broadcast) {
126
126
  forgeArgs.push('--broadcast');
127
127
  }
128
+ // Solo agregar --verify si se especifica explícitamente
129
+ // Advertir si se intenta verificar en una cadena personalizada
128
130
  if (options.verify) {
131
+ // Detectar si es una cadena personalizada (no es mainnet, sepolia, etc.)
132
+ const isCustomChain = options.url.includes('codecrypto.academy') ||
133
+ options.url.includes('localhost') ||
134
+ options.url.includes('127.0.0.1') ||
135
+ options.url.includes('8546') ||
136
+ options.url.includes('8545');
137
+ if (isCustomChain) {
138
+ console.warn(chalk_1.default.yellow('⚠️ Advertencia: La verificación en block explorer puede no funcionar para cadenas personalizadas'));
139
+ console.warn(chalk_1.default.yellow(' Si obtienes un error "Chain not found", omite el flag --verify'));
140
+ }
129
141
  forgeArgs.push('--verify');
130
142
  }
131
143
  if (options.slow) {
@@ -150,8 +162,17 @@ exports.deployScCommand = new commander_1.Command('deploy-sc')
150
162
  catch (error) {
151
163
  deploySpinner.fail('Error al desplegar el smart contract');
152
164
  console.error(chalk_1.default.red('\n❌ Error durante el despliegue'));
153
- if (error.message) {
154
- console.error(chalk_1.default.red(` ${error.message}`));
165
+ const errorOutput = error.stdout?.toString() || error.stderr?.toString() || error.message || String(error);
166
+ // Detectar error de verificación en cadena no soportada
167
+ if (errorOutput.includes('Chain') && errorOutput.includes('not found')) {
168
+ console.error(chalk_1.default.yellow('\n💡 Sugerencia: Parece que estás intentando verificar en una cadena personalizada.'));
169
+ console.error(chalk_1.default.yellow(' Intenta ejecutar sin el flag --verify:'));
170
+ console.error(chalk_1.default.cyan(` codecrypto deploy-sc ${scriptRelativePath} --url ${options.url}`));
171
+ }
172
+ else {
173
+ if (errorOutput) {
174
+ console.error(chalk_1.default.red(` ${errorOutput}`));
175
+ }
155
176
  }
156
177
  process.exit(1);
157
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-sc.js","sourceRoot":"","sources":["../../src/commands/deploy-sc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy-sc.js","sourceRoot":"","sources":["../../src/commands/deploy-sc.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,9 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const commander_1 = require("commander");
5
5
  const deploy_1 = require("./commands/deploy");
6
6
  const deploy_sc_1 = require("./commands/deploy-sc");
7
- const user_1 = require("./commands/user");
8
- const config_1 = require("./commands/config");
9
- const database_1 = require("./commands/database");
10
7
  const program = new commander_1.Command();
11
8
  program
12
9
  .name('codecrypto')
@@ -15,8 +12,5 @@ program
15
12
  // Registrar comandos
16
13
  program.addCommand(deploy_1.deployCommand);
17
14
  program.addCommand(deploy_sc_1.deployScCommand);
18
- program.addCommand(user_1.userCommand);
19
- program.addCommand(config_1.configCommand);
20
- program.addCommand(database_1.dbCommand);
21
15
  program.parse(process.argv);
22
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,8CAAkD;AAClD,oDAAuD;AACvD,0CAA8C;AAC9C,8CAAkD;AAClD,kDAAgD;AAEhD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,oCAAoC,CAAC;KACjD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,qBAAqB;AACrB,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,2BAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,oBAAS,CAAC,CAAC;AAE9B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,8CAAkD;AAClD,oDAAuD;AAEvD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,oCAAoC,CAAC;KACjD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,qBAAqB;AACrB,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,2BAAe,CAAC,CAAC;AAEpC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codecrypto-cli",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "CLI tool for CodeCrypto operations",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -98,7 +98,20 @@ export const deployScCommand = new Command('deploy-sc')
98
98
  forgeArgs.push('--broadcast');
99
99
  }
100
100
 
101
+ // Solo agregar --verify si se especifica explícitamente
102
+ // Advertir si se intenta verificar en una cadena personalizada
101
103
  if (options.verify) {
104
+ // Detectar si es una cadena personalizada (no es mainnet, sepolia, etc.)
105
+ const isCustomChain = options.url.includes('codecrypto.academy') ||
106
+ options.url.includes('localhost') ||
107
+ options.url.includes('127.0.0.1') ||
108
+ options.url.includes('8546') ||
109
+ options.url.includes('8545');
110
+
111
+ if (isCustomChain) {
112
+ console.warn(chalk.yellow('⚠️ Advertencia: La verificación en block explorer puede no funcionar para cadenas personalizadas'));
113
+ console.warn(chalk.yellow(' Si obtienes un error "Chain not found", omite el flag --verify'));
114
+ }
102
115
  forgeArgs.push('--verify');
103
116
  }
104
117
 
@@ -129,8 +142,18 @@ export const deployScCommand = new Command('deploy-sc')
129
142
  } catch (error: any) {
130
143
  deploySpinner.fail('Error al desplegar el smart contract');
131
144
  console.error(chalk.red('\n❌ Error durante el despliegue'));
132
- if (error.message) {
133
- console.error(chalk.red(` ${error.message}`));
145
+
146
+ const errorOutput = error.stdout?.toString() || error.stderr?.toString() || error.message || String(error);
147
+
148
+ // Detectar error de verificación en cadena no soportada
149
+ if (errorOutput.includes('Chain') && errorOutput.includes('not found')) {
150
+ console.error(chalk.yellow('\n💡 Sugerencia: Parece que estás intentando verificar en una cadena personalizada.'));
151
+ console.error(chalk.yellow(' Intenta ejecutar sin el flag --verify:'));
152
+ console.error(chalk.cyan(` codecrypto deploy-sc ${scriptRelativePath} --url ${options.url}`));
153
+ } else {
154
+ if (errorOutput) {
155
+ console.error(chalk.red(` ${errorOutput}`));
156
+ }
134
157
  }
135
158
  process.exit(1);
136
159
  }
package/src/index.ts CHANGED
@@ -3,9 +3,6 @@
3
3
  import { Command } from 'commander';
4
4
  import { deployCommand } from './commands/deploy';
5
5
  import { deployScCommand } from './commands/deploy-sc';
6
- import { userCommand } from './commands/user';
7
- import { configCommand } from './commands/config';
8
- import { dbCommand } from './commands/database';
9
6
 
10
7
  const program = new Command();
11
8
 
@@ -17,8 +14,5 @@ program
17
14
  // Registrar comandos
18
15
  program.addCommand(deployCommand);
19
16
  program.addCommand(deployScCommand);
20
- program.addCommand(userCommand);
21
- program.addCommand(configCommand);
22
- program.addCommand(dbCommand);
23
17
 
24
18
  program.parse(process.argv);
@@ -1,55 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
-
4
- export const configCommand = new Command('config')
5
- .description('Manage CLI configuration');
6
-
7
- // Subcomando: set
8
- configCommand
9
- .command('set <key> <value>')
10
- .description('Set a configuration value')
11
- .option('-g, --global', 'Set global configuration', false)
12
- .action((key, value, options) => {
13
- const scope = options.global ? 'global' : 'local';
14
- console.log(chalk.blue('\n⚙️ Configuration\n'));
15
- console.log(chalk.green(`✅ Set ${chalk.cyan(key)} = ${chalk.yellow(value)} (${scope})\n`));
16
- });
17
-
18
- // Subcomando: get
19
- configCommand
20
- .command('get <key>')
21
- .description('Get a configuration value')
22
- .action((key) => {
23
- console.log(chalk.blue('\n⚙️ Configuration\n'));
24
- // Simular obtener valor
25
- const mockValues: Record<string, string> = {
26
- 'api.url': 'https://api.codecrypto.com',
27
- 'api.token': '*********************',
28
- 'default.region': 'us-east-1'
29
- };
30
-
31
- const value = mockValues[key] || 'not set';
32
- console.log(chalk.white(`${chalk.cyan(key)}: ${chalk.yellow(value)}\n`));
33
- });
34
-
35
- // Subcomando: list
36
- configCommand
37
- .command('list')
38
- .description('List all configuration values')
39
- .option('-g, --global', 'Show global configuration', false)
40
- .action((options) => {
41
- const scope = options.global ? 'global' : 'local';
42
- console.log(chalk.blue(`\n⚙️ Configuration (${scope})\n`));
43
-
44
- const configs = {
45
- 'api.url': 'https://api.codecrypto.com',
46
- 'api.token': '*********************',
47
- 'default.region': 'us-east-1',
48
- 'default.env': 'dev'
49
- };
50
-
51
- Object.entries(configs).forEach(([key, value]) => {
52
- console.log(chalk.white(` ${chalk.cyan(key)}: ${chalk.yellow(value)}`));
53
- });
54
- console.log();
55
- });
@@ -1,105 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import ora from 'ora';
4
-
5
- export const dbCommand = new Command('db')
6
- .description('Database operations');
7
-
8
- // Subcomando: migrate
9
- dbCommand
10
- .command('migrate')
11
- .description('Run database migrations')
12
- .option('-e, --env <environment>', 'Target environment', 'dev')
13
- .option('--rollback', 'Rollback last migration', false)
14
- .option('--steps <number>', 'Number of migrations to run/rollback', 'all')
15
- .action(async (options) => {
16
- console.log(chalk.blue('\n💾 Database Migration\n'));
17
-
18
- const action = options.rollback ? 'Rolling back' : 'Running';
19
- const spinner = ora(`${action} migrations...`).start();
20
-
21
- await sleep(1500);
22
-
23
- if (options.rollback) {
24
- spinner.succeed(chalk.green('✅ Migrations rolled back successfully!'));
25
- } else {
26
- spinner.succeed(chalk.green('✅ Migrations completed successfully!'));
27
- }
28
-
29
- console.log(chalk.gray(`Environment: ${chalk.cyan(options.env)}`));
30
- console.log(chalk.gray(`Steps: ${chalk.cyan(options.steps)}\n`));
31
- });
32
-
33
- // Subcomando: seed
34
- dbCommand
35
- .command('seed')
36
- .description('Seed the database with sample data')
37
- .option('-e, --env <environment>', 'Target environment', 'dev')
38
- .option('-f, --file <file>', 'Seed file to run')
39
- .option('--clear', 'Clear existing data before seeding', false)
40
- .action(async (options) => {
41
- console.log(chalk.blue('\n🌱 Database Seeding\n'));
42
-
43
- if (options.clear) {
44
- console.log(chalk.yellow('⚠️ Clearing existing data...'));
45
- await sleep(1000);
46
- }
47
-
48
- const spinner = ora('Seeding database...').start();
49
- await sleep(2000);
50
-
51
- spinner.succeed(chalk.green('✅ Database seeded successfully!'));
52
- console.log(chalk.gray(`Environment: ${chalk.cyan(options.env)}`));
53
- if (options.file) {
54
- console.log(chalk.gray(`Seed file: ${chalk.cyan(options.file)}`));
55
- }
56
- console.log();
57
- });
58
-
59
- // Subcomando: backup
60
- dbCommand
61
- .command('backup')
62
- .description('Create a database backup')
63
- .argument('<name>', 'Backup name')
64
- .option('-e, --env <environment>', 'Source environment', 'prod')
65
- .option('-o, --output <path>', 'Output directory', './backups')
66
- .option('--compress', 'Compress backup file', true)
67
- .action(async (name, options) => {
68
- console.log(chalk.blue('\n💼 Database Backup\n'));
69
-
70
- const spinner = ora('Creating backup...').start();
71
- await sleep(2500);
72
-
73
- spinner.succeed(chalk.green('✅ Backup created successfully!'));
74
-
75
- const fileName = `${name}_${new Date().toISOString().split('T')[0]}.sql${options.compress ? '.gz' : ''}`;
76
- console.log(chalk.gray(`Environment: ${chalk.cyan(options.env)}`));
77
- console.log(chalk.gray(`Output: ${chalk.cyan(options.output)}/${chalk.cyan(fileName)}`));
78
- console.log(chalk.gray(`Compressed: ${options.compress ? chalk.green('Yes') : chalk.yellow('No')}\n`));
79
- });
80
-
81
- // Subcomando: restore
82
- dbCommand
83
- .command('restore <backupFile>')
84
- .description('Restore database from backup')
85
- .option('-e, --env <environment>', 'Target environment', 'dev')
86
- .option('--force', 'Skip confirmation', false)
87
- .action(async (backupFile, options) => {
88
- console.log(chalk.blue('\n♻️ Database Restore\n'));
89
-
90
- if (options.env === 'prod' && !options.force) {
91
- console.log(chalk.red('❌ Cannot restore to production without --force flag\n'));
92
- return;
93
- }
94
-
95
- const spinner = ora('Restoring database...').start();
96
- await sleep(3000);
97
-
98
- spinner.succeed(chalk.green('✅ Database restored successfully!'));
99
- console.log(chalk.gray(`Environment: ${chalk.cyan(options.env)}`));
100
- console.log(chalk.gray(`Backup file: ${chalk.cyan(backupFile)}\n`));
101
- });
102
-
103
- function sleep(ms: number): Promise<void> {
104
- return new Promise(resolve => setTimeout(resolve, ms));
105
- }
@@ -1,122 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import inquirer from 'inquirer';
4
-
5
- export const userCommand = new Command('user')
6
- .description('Manage users in the system');
7
-
8
- // Subcomando: crear usuario
9
- userCommand
10
- .command('create')
11
- .description('Create a new user')
12
- .option('-u, --username <username>', 'Username')
13
- .option('-e, --email <email>', 'Email address')
14
- .option('-r, --role <role>', 'User role (admin, user, guest)', 'user')
15
- .option('--interactive', 'Interactive mode', false)
16
- .action(async (options) => {
17
- console.log(chalk.blue('\n👤 Create New User\n'));
18
-
19
- let userData = {
20
- username: options.username,
21
- email: options.email,
22
- role: options.role
23
- };
24
-
25
- // Modo interactivo
26
- if (options.interactive || !options.username || !options.email) {
27
- const answers = await inquirer.prompt([
28
- {
29
- type: 'input',
30
- name: 'username',
31
- message: 'Enter username:',
32
- default: options.username,
33
- validate: (input) => input.length > 0 || 'Username is required'
34
- },
35
- {
36
- type: 'input',
37
- name: 'email',
38
- message: 'Enter email:',
39
- default: options.email,
40
- validate: (input) => {
41
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
42
- return emailRegex.test(input) || 'Invalid email format';
43
- }
44
- },
45
- {
46
- type: 'list',
47
- name: 'role',
48
- message: 'Select role:',
49
- choices: ['admin', 'user', 'guest'],
50
- default: options.role
51
- }
52
- ]);
53
-
54
- userData = { ...userData, ...answers };
55
- }
56
-
57
- console.log(chalk.green('\n✅ User created successfully!'));
58
- console.log(chalk.gray('User details:'));
59
- console.log(chalk.white(` Username: ${chalk.cyan(userData.username)}`));
60
- console.log(chalk.white(` Email: ${chalk.cyan(userData.email)}`));
61
- console.log(chalk.white(` Role: ${chalk.cyan(userData.role)}`));
62
- });
63
-
64
- // Subcomando: listar usuarios
65
- userCommand
66
- .command('list')
67
- .description('List all users')
68
- .option('-r, --role <role>', 'Filter by role')
69
- .option('-l, --limit <number>', 'Limit number of results', '10')
70
- .action((options) => {
71
- console.log(chalk.blue('\n📋 User List\n'));
72
-
73
- if (options.role) {
74
- console.log(chalk.gray(`Filtering by role: ${chalk.cyan(options.role)}`));
75
- }
76
-
77
- // Datos de ejemplo
78
- const users = [
79
- { id: 1, username: 'john_doe', email: 'john@example.com', role: 'admin' },
80
- { id: 2, username: 'jane_smith', email: 'jane@example.com', role: 'user' },
81
- { id: 3, username: 'bob_wilson', email: 'bob@example.com', role: 'user' }
82
- ];
83
-
84
- const filteredUsers = options.role
85
- ? users.filter(u => u.role === options.role)
86
- : users;
87
-
88
- const limitedUsers = filteredUsers.slice(0, parseInt(options.limit));
89
-
90
- limitedUsers.forEach(user => {
91
- console.log(chalk.white(` ${user.id}. ${chalk.cyan(user.username)} (${user.email}) - ${chalk.yellow(user.role)}`));
92
- });
93
-
94
- console.log(chalk.gray(`\nTotal: ${limitedUsers.length} users\n`));
95
- });
96
-
97
- // Subcomando: eliminar usuario
98
- userCommand
99
- .command('delete <userId>')
100
- .description('Delete a user by ID')
101
- .option('-f, --force', 'Skip confirmation', false)
102
- .action(async (userId, options) => {
103
- console.log(chalk.blue('\n🗑️ Delete User\n'));
104
-
105
- if (!options.force) {
106
- const { confirm } = await inquirer.prompt([
107
- {
108
- type: 'confirm',
109
- name: 'confirm',
110
- message: `Are you sure you want to delete user ${userId}?`,
111
- default: false
112
- }
113
- ]);
114
-
115
- if (!confirm) {
116
- console.log(chalk.yellow('❌ Operation cancelled\n'));
117
- return;
118
- }
119
- }
120
-
121
- console.log(chalk.green(`✅ User ${userId} deleted successfully!\n`));
122
- });