@gilbert_oliveira/commit-wizard 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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) [year] [Full name]
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -23,3 +23,36 @@ Para instalar o Commit Wizard globalmente, execute o seguinte comando:
23
23
 
24
24
  ```bash
25
25
  npm install -g @gilbert_oliveira/commit-wizard
26
+ ```
27
+
28
+ ### Instalação Local
29
+
30
+ Para instalar o Commit Wizard localmente, execute o seguinte comando:
31
+
32
+ ```bash
33
+ npm install @gilbert_oliveira/commit-wizard
34
+ ```
35
+
36
+ ## Uso
37
+
38
+ Para usar o Commit Wizard, execute o seguinte comando no terminal:
39
+
40
+ ```bash
41
+ commit-wizard
42
+ ```
43
+
44
+ O Commit Wizard irá gerar uma mensagem de commit com base nas mudanças no repositório Git e na convenção de **Conventional Commits**. Você pode editar a mensagem gerada ou confirmá-la.
45
+
46
+ ## Contribuição
47
+
48
+ Se você quiser contribuir com o Commit Wizard, siga as instruções abaixo:
49
+
50
+ 1. Faça um fork do repositório.
51
+ 2. Crie uma nova branch com a sua feature: `git checkout -b my-feature`
52
+ 3. Faça o commit das suas alterações: `git commit -m 'feat: My new feature'`
53
+ 4. Faça o push para a sua branch: `git push origin my-feature`
54
+ 5. Abra um Pull Request
55
+
56
+ ## Licença
57
+
58
+ Este projeto está licenciado sob a licença MIT. Veja o arquivo [LICENSE](LICENSE) para mais detalhes.
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import path from 'path';
8
8
  // Função para verificar se o comando 'cody' está disponível
9
9
  function isCodyInstalled() {
10
10
  try {
11
- execSync('cody --version', { stdio: 'ignore' }); // Tentando rodar o comando `cody --version`
11
+ execSync('cody --version', { stdio: 'ignore' });
12
12
  return true;
13
13
  }
14
14
  catch (error) {
@@ -19,37 +19,37 @@ function isCodyInstalled() {
19
19
  function installCody() {
20
20
  console.log(chalk.blue('🚀 Instalando o cody automaticamente...'));
21
21
  try {
22
- execSync('npm i -g @sourcegraph/cody', { stdio: 'inherit' }); // Instalando globalmente com npm
22
+ execSync('npm i -g @sourcegraph/cody', { stdio: 'inherit' });
23
23
  console.log(chalk.green('✅ Cody instalado com sucesso!'));
24
24
  }
25
25
  catch (error) {
26
26
  console.error(chalk.red('❌ Erro ao instalar o Cody:'), error.message);
27
- process.exit(1); // Finaliza o processo em caso de erro
27
+ process.exit(1);
28
28
  }
29
29
  }
30
30
  // Verifica se o 'cody' está instalado, caso contrário, instala
31
31
  if (!isCodyInstalled()) {
32
32
  installCody();
33
33
  }
34
- // Função para verificar se esta logado no cody
34
+ // Função para verificar se está logado no cody
35
35
  function isCodyLoggedIn() {
36
36
  try {
37
- execSync('cody auth whoami', { stdio: 'ignore' }); // Tentando rodar o comando `cody auth whoami`
37
+ execSync('cody auth whoami', { stdio: 'ignore' });
38
38
  return true;
39
39
  }
40
40
  catch (error) {
41
41
  return false;
42
42
  }
43
43
  }
44
- // Verificar se o usuário está logado no Cody se nao estiver roda o comando para logar
44
+ // Verificar se o usuário está logado no Cody, se não estiver, roda o comando para logar
45
45
  if (!isCodyLoggedIn()) {
46
46
  console.log(chalk.blue('🔑 Realize o login no Cody...'));
47
47
  try {
48
- execSync('cody auth login --web', { stdio: 'inherit' }); // Rodando o comando `cody auth login`
48
+ execSync('cody auth login --web', { stdio: 'inherit' });
49
49
  }
50
50
  catch (error) {
51
51
  console.error(chalk.red('❌ Erro ao realizar o login no Cody:'), error.message);
52
- process.exit(1); // Finaliza o processo em caso de erro
52
+ process.exit(1);
53
53
  }
54
54
  }
55
55
  // Define o prompt do Cody para geração da mensagem de commit
@@ -95,14 +95,16 @@ async function ccm() {
95
95
  }
96
96
  // Adiciona todos os arquivos modificados ao índice
97
97
  execSync('git add .');
98
- // Cria um arquivo temporário para armazenar o prompt
98
+ // Cria arquivos temporários para armazenar o prompt e o diff
99
99
  const tempPromptPath = path.join(os.tmpdir(), 'CODY_PROMPT.txt');
100
+ const tempDiffPath = path.join(os.tmpdir(), 'CODY_DIFF.patch');
100
101
  fs.writeFileSync(tempPromptPath, CODY_PROMPT);
101
- // Gera a mensagem do commit usando o diff com o cody chat
102
+ fs.writeFileSync(tempDiffPath, execSync('git diff --cached').toString());
103
+ // Gera a mensagem do commit usando o diff salvo no arquivo temporário
102
104
  let generatedMessage;
103
105
  try {
104
106
  console.log(chalk.blue.bold('⌛ Gerando mensagem de commit com o Cody...'));
105
- const response = execSync(`git diff --cached | cody chat --stdin -m "$(cat ${tempPromptPath})"`).toString();
107
+ const response = execSync(`cody chat --context-file ${tempDiffPath} --stdin -m "$(cat ${tempPromptPath})"`).toString();
106
108
  // Extrai o bloco de código delimitado por ``` usando regex
107
109
  const match = response.match(/```([\s\S]*?)```/);
108
110
  generatedMessage = match ? match[1].trim() : response.trim();
@@ -114,7 +116,8 @@ async function ccm() {
114
116
  return;
115
117
  }
116
118
  finally {
117
- fs.unlinkSync(tempPromptPath); // Remove o arquivo temporário após o uso
119
+ fs.unlinkSync(tempPromptPath); // Remove o arquivo temporário do prompt
120
+ fs.unlinkSync(tempDiffPath); // Remove o arquivo temporário do diff
118
121
  }
119
122
  // Pergunta ao usuário se ele quer editar, confirmar ou cancelar o commit
120
123
  const { action } = await prompt([
@@ -131,7 +134,6 @@ async function ccm() {
131
134
  ]);
132
135
  // Caminho temporário para salvar a mensagem gerada
133
136
  const tempFilePath = path.join(os.tmpdir(), 'COMMIT_EDITMSG');
134
- // Salva a mensagem gerada no arquivo temporário
135
137
  fs.writeFileSync(tempFilePath, generatedMessage);
136
138
  if (action === 'edit') {
137
139
  console.log(chalk.cyan('📝 Abrindo editor para edição da mensagem...'));
@@ -146,7 +148,7 @@ async function ccm() {
146
148
  }
147
149
  else if (action === 'cancel') {
148
150
  console.log(chalk.yellow('🚫 Commit cancelado pelo usuário.'));
149
- fs.unlinkSync(tempFilePath); // Remove o arquivo temporário
151
+ fs.unlinkSync(tempFilePath);
150
152
  return;
151
153
  }
152
154
  // Lê a mensagem do arquivo temporário após a edição
@@ -154,7 +156,7 @@ async function ccm() {
154
156
  // Verifica se a mensagem está vazia
155
157
  if (!finalMessage) {
156
158
  console.log(chalk.red('❌ Nenhuma mensagem inserida, commit cancelado.'));
157
- fs.unlinkSync(tempFilePath); // Remove o arquivo temporário
159
+ fs.unlinkSync(tempFilePath);
158
160
  return;
159
161
  }
160
162
  // Realiza o commit com a mensagem final
@@ -166,7 +168,7 @@ async function ccm() {
166
168
  console.error(chalk.red('❌ Erro ao realizar o commit:'), error.message);
167
169
  }
168
170
  finally {
169
- fs.unlinkSync(tempFilePath); // Remove o arquivo temporário
171
+ fs.unlinkSync(tempFilePath);
170
172
  }
171
173
  }
172
174
  // Chama a função principal
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gilbert_oliveira/commit-wizard",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "O **Commit Wizard** é uma ferramenta automatizada para geração de mensagens de commit com base na convenção de **Conventional Commits**. Ele ajuda a garantir que suas mensagens de commit sigam um padrão consistente e facilite a comunicação de mudanças no código.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -28,7 +28,7 @@
28
28
  "lint-staged"
29
29
  ],
30
30
  "author": "Gilbert Oliveira",
31
- "license": "ISC",
31
+ "license": "MIT",
32
32
  "bugs": {
33
33
  "url": "https://github.com/gilbert-oliveira/commit-wizard/issues"
34
34
  },
package/src/index.ts CHANGED
@@ -1,57 +1,57 @@
1
1
  #!/usr/bin/env ts-node
2
2
 
3
- import chalk from 'chalk'
4
- import { execSync } from 'child_process'
5
- import fs from 'fs'
6
- import inquirer from 'inquirer'
7
- import os from 'os'
8
- import path from 'path'
3
+ import chalk from 'chalk';
4
+ import { execSync } from 'child_process';
5
+ import fs from 'fs';
6
+ import inquirer from 'inquirer';
7
+ import os from 'os';
8
+ import path from 'path';
9
9
 
10
10
  // Função para verificar se o comando 'cody' está disponível
11
11
  function isCodyInstalled(): boolean {
12
12
  try {
13
- execSync('cody --version', { stdio: 'ignore' }) // Tentando rodar o comando `cody --version`
14
- return true
13
+ execSync('cody --version', { stdio: 'ignore' });
14
+ return true;
15
15
  } catch (error) {
16
- return false
16
+ return false;
17
17
  }
18
18
  }
19
19
 
20
20
  // Função para instalar o 'cody' automaticamente
21
21
  function installCody(): void {
22
- console.log(chalk.blue('🚀 Instalando o cody automaticamente...'))
22
+ console.log(chalk.blue('🚀 Instalando o cody automaticamente...'));
23
23
  try {
24
- execSync('npm i -g @sourcegraph/cody', { stdio: 'inherit' }) // Instalando globalmente com npm
25
- console.log(chalk.green('✅ Cody instalado com sucesso!'))
24
+ execSync('npm i -g @sourcegraph/cody', { stdio: 'inherit' });
25
+ console.log(chalk.green('✅ Cody instalado com sucesso!'));
26
26
  } catch (error) {
27
- console.error(chalk.red('❌ Erro ao instalar o Cody:'), (error as Error).message)
28
- process.exit(1) // Finaliza o processo em caso de erro
27
+ console.error(chalk.red('❌ Erro ao instalar o Cody:'), (error as Error).message);
28
+ process.exit(1);
29
29
  }
30
30
  }
31
31
 
32
32
  // Verifica se o 'cody' está instalado, caso contrário, instala
33
33
  if (!isCodyInstalled()) {
34
- installCody()
34
+ installCody();
35
35
  }
36
36
 
37
- // Função para verificar se esta logado no cody
37
+ // Função para verificar se está logado no cody
38
38
  function isCodyLoggedIn(): boolean {
39
39
  try {
40
- execSync('cody auth whoami', { stdio: 'ignore' }) // Tentando rodar o comando `cody auth whoami`
41
- return true
40
+ execSync('cody auth whoami', { stdio: 'ignore' });
41
+ return true;
42
42
  } catch (error) {
43
- return false
43
+ return false;
44
44
  }
45
45
  }
46
46
 
47
- // Verificar se o usuário está logado no Cody se nao estiver roda o comando para logar
47
+ // Verificar se o usuário está logado no Cody, se não estiver, roda o comando para logar
48
48
  if (!isCodyLoggedIn()) {
49
- console.log(chalk.blue('🔑 Realize o login no Cody...'))
49
+ console.log(chalk.blue('🔑 Realize o login no Cody...'));
50
50
  try {
51
- execSync('cody auth login --web', { stdio: 'inherit' }) // Rodando o comando `cody auth login`
51
+ execSync('cody auth login --web', { stdio: 'inherit' });
52
52
  } catch (error) {
53
- console.error(chalk.red('❌ Erro ao realizar o login no Cody:'), (error as Error).message)
54
- process.exit(1) // Finaliza o processo em caso de erro
53
+ console.error(chalk.red('❌ Erro ao realizar o login no Cody:'), (error as Error).message);
54
+ process.exit(1);
55
55
  }
56
56
  }
57
57
 
@@ -84,55 +84,53 @@ Use sempre linguagem imperativa e primeira pessoa do singular, como:
84
84
  - "remove arquivo"
85
85
 
86
86
  Lembre-se: os textos fora do Conventional Commit devem ser em português.
87
- `
87
+ `;
88
88
 
89
89
  interface CommitAction {
90
- action: 'confirm' | 'edit' | 'cancel'
90
+ action: 'confirm' | 'edit' | 'cancel';
91
91
  }
92
92
 
93
93
  async function ccm(): Promise<void> {
94
- const prompt = inquirer.createPromptModule()
94
+ const prompt = inquirer.createPromptModule();
95
95
 
96
96
  // verifica se o repositório git está inicializado
97
97
  try {
98
- console.log(chalk.blue('🔄 Verificando se o diretório é um repositório git...'))
99
- execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' })
98
+ console.log(chalk.blue('🔄 Verificando se o diretório é um repositório git...'));
99
+ execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' });
100
100
  } catch (error) {
101
- console.error(chalk.red('❌ Este diretório não é um repositório git.'))
102
- return
101
+ console.error(chalk.red('❌ Este diretório não é um repositório git.'));
102
+ return;
103
103
  }
104
104
 
105
105
  // Adiciona todos os arquivos modificados ao índice
106
- execSync('git add .')
106
+ execSync('git add .');
107
107
 
108
- // Cria um arquivo temporário para armazenar o prompt
109
- const tempPromptPath = path.join(os.tmpdir(), 'CODY_PROMPT.txt')
110
- fs.writeFileSync(tempPromptPath, CODY_PROMPT)
108
+ // Cria arquivos temporários para armazenar o prompt e o diff
109
+ const tempPromptPath = path.join(os.tmpdir(), 'CODY_PROMPT.txt');
110
+ const tempDiffPath = path.join(os.tmpdir(), 'CODY_DIFF.patch');
111
+ fs.writeFileSync(tempPromptPath, CODY_PROMPT);
112
+ fs.writeFileSync(tempDiffPath, execSync('git diff --cached').toString());
111
113
 
112
- // Gera a mensagem do commit usando o diff com o cody chat
113
- let generatedMessage: string
114
+ // Gera a mensagem do commit usando o diff salvo no arquivo temporário
115
+ let generatedMessage: string;
114
116
  try {
115
- console.log(chalk.blue.bold('⌛ Gerando mensagem de commit com o Cody...'))
117
+ console.log(chalk.blue.bold('⌛ Gerando mensagem de commit com o Cody...'));
116
118
  const response = execSync(
117
- `git diff --cached | cody chat --stdin -m "$(cat ${tempPromptPath})"`,
118
- ).toString()
119
+ `cody chat --context-file ${tempDiffPath} --stdin -m "$(cat ${tempPromptPath})"`
120
+ ).toString();
119
121
 
120
122
  // Extrai o bloco de código delimitado por ``` usando regex
121
- const match = response.match(/```([\s\S]*?)```/)
122
- generatedMessage = match ? match[1].trim() : response.trim()
123
+ const match = response.match(/```([\s\S]*?)```/);
124
+ generatedMessage = match ? match[1].trim() : response.trim();
123
125
 
124
- console.log(
125
- chalk.greenBright('\n✨ Mensagem de commit gerada automaticamente:'),
126
- )
127
- console.log(chalk.yellowBright(generatedMessage))
126
+ console.log(chalk.greenBright('\n✨ Mensagem de commit gerada automaticamente:'));
127
+ console.log(chalk.yellowBright(generatedMessage));
128
128
  } catch (error) {
129
- console.error(
130
- chalk.red('❌ Erro ao gerar mensagem de commit com o Cody:'),
131
- (error as Error).message,
132
- )
133
- return
129
+ console.error(chalk.red('❌ Erro ao gerar mensagem de commit com o Cody:'), (error as Error).message);
130
+ return;
134
131
  } finally {
135
- fs.unlinkSync(tempPromptPath) // Remove o arquivo temporário após o uso
132
+ fs.unlinkSync(tempPromptPath); // Remove o arquivo temporário do prompt
133
+ fs.unlinkSync(tempDiffPath); // Remove o arquivo temporário do diff
136
134
  }
137
135
 
138
136
  // Pergunta ao usuário se ele quer editar, confirmar ou cancelar o commit
@@ -140,58 +138,54 @@ async function ccm(): Promise<void> {
140
138
  {
141
139
  type: 'list',
142
140
  name: 'action',
143
- message: chalk.blue.bold(
144
- 'O que deseja fazer com a mensagem de commit gerada?',
145
- ),
141
+ message: chalk.blue.bold('O que deseja fazer com a mensagem de commit gerada?'),
146
142
  choices: [
147
143
  { name: '📌 Confirmar e commitar', value: 'confirm' },
148
144
  { name: '📝 Editar a mensagem antes de commitar', value: 'edit' },
149
145
  { name: '🚫 Cancelar o commit', value: 'cancel' },
150
146
  ],
151
147
  },
152
- ])
148
+ ]);
153
149
 
154
150
  // Caminho temporário para salvar a mensagem gerada
155
- const tempFilePath = path.join(os.tmpdir(), 'COMMIT_EDITMSG')
156
-
157
- // Salva a mensagem gerada no arquivo temporário
158
- fs.writeFileSync(tempFilePath, generatedMessage)
151
+ const tempFilePath = path.join(os.tmpdir(), 'COMMIT_EDITMSG');
152
+ fs.writeFileSync(tempFilePath, generatedMessage);
159
153
 
160
154
  if (action === 'edit') {
161
- console.log(chalk.cyan('📝 Abrindo editor para edição da mensagem...'))
162
- const editor = process.env.EDITOR || 'nano'
155
+ console.log(chalk.cyan('📝 Abrindo editor para edição da mensagem...'));
156
+ const editor = process.env.EDITOR || 'nano';
163
157
  try {
164
- execSync(`${editor} ${tempFilePath}`, { stdio: 'inherit' })
158
+ execSync(`${editor} ${tempFilePath}`, { stdio: 'inherit' });
165
159
  } catch (error) {
166
- console.error(chalk.red('❌ Erro ao abrir o editor:'), (error as Error).message)
167
- return
160
+ console.error(chalk.red('❌ Erro ao abrir o editor:'), (error as Error).message);
161
+ return;
168
162
  }
169
163
  } else if (action === 'cancel') {
170
- console.log(chalk.yellow('🚫 Commit cancelado pelo usuário.'))
171
- fs.unlinkSync(tempFilePath) // Remove o arquivo temporário
172
- return
164
+ console.log(chalk.yellow('🚫 Commit cancelado pelo usuário.'));
165
+ fs.unlinkSync(tempFilePath);
166
+ return;
173
167
  }
174
168
 
175
169
  // Lê a mensagem do arquivo temporário após a edição
176
- const finalMessage = fs.readFileSync(tempFilePath, 'utf8').trim()
170
+ const finalMessage = fs.readFileSync(tempFilePath, 'utf8').trim();
177
171
 
178
172
  // Verifica se a mensagem está vazia
179
173
  if (!finalMessage) {
180
- console.log(chalk.red('❌ Nenhuma mensagem inserida, commit cancelado.'))
181
- fs.unlinkSync(tempFilePath) // Remove o arquivo temporário
182
- return
174
+ console.log(chalk.red('❌ Nenhuma mensagem inserida, commit cancelado.'));
175
+ fs.unlinkSync(tempFilePath);
176
+ return;
183
177
  }
184
178
 
185
179
  // Realiza o commit com a mensagem final
186
180
  try {
187
- execSync(`git commit -F ${tempFilePath}`)
188
- console.log(chalk.green.bold('✅ Commit realizado com sucesso.'))
181
+ execSync(`git commit -F ${tempFilePath}`);
182
+ console.log(chalk.green.bold('✅ Commit realizado com sucesso.'));
189
183
  } catch (error) {
190
- console.error(chalk.red('❌ Erro ao realizar o commit:'), (error as Error).message)
184
+ console.error(chalk.red('❌ Erro ao realizar o commit:'), (error as Error).message);
191
185
  } finally {
192
- fs.unlinkSync(tempFilePath) // Remove o arquivo temporário
186
+ fs.unlinkSync(tempFilePath);
193
187
  }
194
188
  }
195
189
 
196
190
  // Chama a função principal
197
- ccm().catch((err) => console.error(chalk.red('❌ Erro durante o commit:'), err))
191
+ ccm().catch((err) => console.error(chalk.red('❌ Erro durante o commit:'), err));