@andrebuzeli/git-mcp 15.8.4 → 15.8.6

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/src/utils/env.js CHANGED
@@ -1,104 +1,104 @@
1
- // Suporte a arquivo .env
2
- import fs from "node:fs";
3
- import path from "node:path";
4
-
5
- /**
6
- * Carrega variáveis de ambiente de um arquivo .env
7
- * @param {string} envPath - Caminho para o arquivo .env (opcional)
8
- */
9
- export function loadEnv(envPath = null) {
10
- // Tenta encontrar .env no diretório do projeto ou no cwd
11
- const possiblePaths = [
12
- envPath,
13
- path.join(process.cwd(), ".env"),
14
- path.join(process.cwd(), ".env.local"),
15
- // Para quando executado como pacote npm
16
- path.resolve(import.meta.url.replace("file:///", "").replace(/\/[^/]+$/, ""), "../../.env")
17
- ].filter(Boolean);
18
-
19
- for (const p of possiblePaths) {
20
- try {
21
- const normalizedPath = p.replace(/\\/g, "/").replace("file:///", "");
22
- if (fs.existsSync(normalizedPath)) {
23
- const content = fs.readFileSync(normalizedPath, "utf8");
24
- parseEnvFile(content);
25
- console.error(`[git-mcp] Loaded .env from: ${normalizedPath}`);
26
- return true;
27
- }
28
- } catch (e) {
29
- // Ignora erros de leitura
30
- }
31
- }
32
-
33
- return false;
34
- }
35
-
36
- /**
37
- * Parse do conteúdo de um arquivo .env
38
- * @param {string} content - Conteúdo do arquivo
39
- */
40
- function parseEnvFile(content) {
41
- const lines = content.split("\n");
42
-
43
- for (const line of lines) {
44
- // Ignora linhas vazias e comentários
45
- const trimmed = line.trim();
46
- if (!trimmed || trimmed.startsWith("#")) continue;
47
-
48
- // Parse KEY=VALUE
49
- const match = trimmed.match(/^([^=]+)=(.*)$/);
50
- if (match) {
51
- const key = match[1].trim();
52
- let value = match[2].trim();
53
-
54
- // Remove aspas ao redor do valor
55
- if ((value.startsWith('"') && value.endsWith('"')) ||
56
- (value.startsWith("'") && value.endsWith("'"))) {
57
- value = value.slice(1, -1);
58
- }
59
-
60
- // Só define se não existir (variáveis de ambiente têm precedência)
61
- if (!(key in process.env)) {
62
- process.env[key] = value;
63
- }
64
- }
65
- }
66
- }
67
-
68
- /**
69
- * Retorna uma variável de ambiente com valor padrão opcional
70
- * @param {string} key - Nome da variável
71
- * @param {string} defaultValue - Valor padrão se não existir
72
- */
73
- export function getEnvVar(key, defaultValue = "") {
74
- return process.env[key] || defaultValue;
75
- }
76
-
77
- /**
78
- * Verifica se todas as variáveis obrigatórias estão definidas
79
- * @param {string[]} requiredVars - Lista de variáveis obrigatórias
80
- * @returns {{ valid: boolean, missing: string[] }}
81
- */
82
- export function validateEnv(requiredVars) {
83
- const missing = requiredVars.filter(v => !process.env[v]);
84
- return {
85
- valid: missing.length === 0,
86
- missing
87
- };
88
- }
89
-
90
- /**
91
- * Configuração padrão do git-mcp
92
- */
93
- export const ENV_CONFIG = {
94
- // Providers
95
- GITHUB_TOKEN: "Token de autenticação do GitHub",
96
- GITEA_URL: "URL do servidor Gitea",
97
- GITEA_TOKEN: "Token de autenticação do Gitea",
98
-
99
- // Performance
100
- GIT_TIMEOUT_MS: "Timeout para operações Git em ms (default: 60000)",
101
-
102
- // Debug
103
- DEBUG_AGENT_LOG: "Habilita logging de debug"
104
- };
1
+ // Suporte a arquivo .env
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+
5
+ /**
6
+ * Carrega variáveis de ambiente de um arquivo .env
7
+ * @param {string} envPath - Caminho para o arquivo .env (opcional)
8
+ */
9
+ export function loadEnv(envPath = null) {
10
+ // Tenta encontrar .env no diretório do projeto ou no cwd
11
+ const possiblePaths = [
12
+ envPath,
13
+ path.join(process.cwd(), ".env"),
14
+ path.join(process.cwd(), ".env.local"),
15
+ // Para quando executado como pacote npm
16
+ path.resolve(import.meta.url.replace("file:///", "").replace(/\/[^/]+$/, ""), "../../.env")
17
+ ].filter(Boolean);
18
+
19
+ for (const p of possiblePaths) {
20
+ try {
21
+ const normalizedPath = p.replace(/\\/g, "/").replace("file:///", "");
22
+ if (fs.existsSync(normalizedPath)) {
23
+ const content = fs.readFileSync(normalizedPath, "utf8");
24
+ parseEnvFile(content);
25
+ console.error(`[git-mcp] Loaded .env from: ${normalizedPath}`);
26
+ return true;
27
+ }
28
+ } catch (e) {
29
+ // Ignora erros de leitura
30
+ }
31
+ }
32
+
33
+ return false;
34
+ }
35
+
36
+ /**
37
+ * Parse do conteúdo de um arquivo .env
38
+ * @param {string} content - Conteúdo do arquivo
39
+ */
40
+ function parseEnvFile(content) {
41
+ const lines = content.split("\n");
42
+
43
+ for (const line of lines) {
44
+ // Ignora linhas vazias e comentários
45
+ const trimmed = line.trim();
46
+ if (!trimmed || trimmed.startsWith("#")) continue;
47
+
48
+ // Parse KEY=VALUE
49
+ const match = trimmed.match(/^([^=]+)=(.*)$/);
50
+ if (match) {
51
+ const key = match[1].trim();
52
+ let value = match[2].trim();
53
+
54
+ // Remove aspas ao redor do valor
55
+ if ((value.startsWith('"') && value.endsWith('"')) ||
56
+ (value.startsWith("'") && value.endsWith("'"))) {
57
+ value = value.slice(1, -1);
58
+ }
59
+
60
+ // Só define se não existir (variáveis de ambiente têm precedência)
61
+ if (!(key in process.env)) {
62
+ process.env[key] = value;
63
+ }
64
+ }
65
+ }
66
+ }
67
+
68
+ /**
69
+ * Retorna uma variável de ambiente com valor padrão opcional
70
+ * @param {string} key - Nome da variável
71
+ * @param {string} defaultValue - Valor padrão se não existir
72
+ */
73
+ export function getEnvVar(key, defaultValue = "") {
74
+ return process.env[key] || defaultValue;
75
+ }
76
+
77
+ /**
78
+ * Verifica se todas as variáveis obrigatórias estão definidas
79
+ * @param {string[]} requiredVars - Lista de variáveis obrigatórias
80
+ * @returns {{ valid: boolean, missing: string[] }}
81
+ */
82
+ export function validateEnv(requiredVars) {
83
+ const missing = requiredVars.filter(v => !process.env[v]);
84
+ return {
85
+ valid: missing.length === 0,
86
+ missing
87
+ };
88
+ }
89
+
90
+ /**
91
+ * Configuração padrão do git-mcp
92
+ */
93
+ export const ENV_CONFIG = {
94
+ // Providers
95
+ GITHUB_TOKEN: "Token de autenticação do GitHub",
96
+ GITEA_URL: "URL do servidor Gitea",
97
+ GITEA_TOKEN: "Token de autenticação do Gitea",
98
+
99
+ // Performance
100
+ GIT_TIMEOUT_MS: "Timeout para operações Git em ms (default: 60000)",
101
+
102
+ // Debug
103
+ DEBUG_AGENT_LOG: "Habilita logging de debug"
104
+ };