git-push-deploy-cli 0.2.2 → 0.3.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/dist/commands/config.d.ts +10 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +255 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/deploy.d.ts +1 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +18 -3
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/release.d.ts +4 -0
- package/dist/commands/release.d.ts.map +1 -1
- package/dist/commands/release.js +45 -1
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/rollback.d.ts +17 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +169 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/commands/stage.d.ts +4 -0
- package/dist/commands/stage.d.ts.map +1 -1
- package/dist/commands/stage.js +48 -1
- package/dist/commands/stage.js.map +1 -1
- package/dist/config/loader.d.ts +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +1 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/index.js +26 -2
- package/dist/index.js.map +1 -1
- package/dist/utils/git.d.ts +35 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +76 -0
- package/dist/utils/git.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface ConfigOptions {
|
|
2
|
+
edit?: string;
|
|
3
|
+
list?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Config command - create or edit .git-deploy.json
|
|
7
|
+
*/
|
|
8
|
+
export declare function configCommand(options?: ConfigOptions): Promise<void>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAwMA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqE9E"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as readline from 'readline';
|
|
3
|
+
import { existsSync, writeFileSync, readFileSync } from 'fs';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
const CONFIG_FILENAME = '.git-deploy.json';
|
|
6
|
+
/**
|
|
7
|
+
* Create readline interface
|
|
8
|
+
*/
|
|
9
|
+
function createPrompt() {
|
|
10
|
+
return readline.createInterface({
|
|
11
|
+
input: process.stdin,
|
|
12
|
+
output: process.stdout
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Prompt for input with default value
|
|
17
|
+
*/
|
|
18
|
+
async function prompt(rl, question, defaultValue) {
|
|
19
|
+
const defaultText = defaultValue ? chalk.gray(` [${defaultValue}]`) : '';
|
|
20
|
+
return new Promise((resolve) => {
|
|
21
|
+
rl.question(`${question}${defaultText}: `, (answer) => {
|
|
22
|
+
resolve(answer.trim() || defaultValue || '');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Prompt for yes/no
|
|
28
|
+
*/
|
|
29
|
+
async function promptYesNo(rl, question, defaultYes = true) {
|
|
30
|
+
const hint = defaultYes ? '[Y/n]' : '[y/N]';
|
|
31
|
+
return new Promise((resolve) => {
|
|
32
|
+
rl.question(`${question} ${hint}: `, (answer) => {
|
|
33
|
+
if (!answer.trim()) {
|
|
34
|
+
resolve(defaultYes);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Prompt for selection from list
|
|
44
|
+
*/
|
|
45
|
+
async function promptSelect(rl, question, options, defaultIndex = 0) {
|
|
46
|
+
console.log(question);
|
|
47
|
+
options.forEach((opt, i) => {
|
|
48
|
+
const marker = i === defaultIndex ? chalk.green('→') : ' ';
|
|
49
|
+
console.log(` ${marker} ${i + 1}) ${opt}`);
|
|
50
|
+
});
|
|
51
|
+
return new Promise((resolve) => {
|
|
52
|
+
rl.question(`Select (1-${options.length}) [${defaultIndex + 1}]: `, (answer) => {
|
|
53
|
+
if (!answer.trim()) {
|
|
54
|
+
resolve(options[defaultIndex]);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
const num = parseInt(answer, 10);
|
|
58
|
+
if (num >= 1 && num <= options.length) {
|
|
59
|
+
resolve(options[num - 1]);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
resolve(options[defaultIndex]);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Load existing config or create empty one
|
|
70
|
+
*/
|
|
71
|
+
function loadOrCreateConfig(configPath) {
|
|
72
|
+
if (existsSync(configPath)) {
|
|
73
|
+
try {
|
|
74
|
+
const content = readFileSync(configPath, 'utf-8');
|
|
75
|
+
return JSON.parse(content);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
console.log(chalk.yellow('Warning: Could not parse existing config, starting fresh'));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return { services: {} };
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Save config to file
|
|
85
|
+
*/
|
|
86
|
+
function saveConfig(configPath, config) {
|
|
87
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Interactive wizard to create/edit service configuration
|
|
91
|
+
*/
|
|
92
|
+
async function createServiceConfig(rl, existingConfig) {
|
|
93
|
+
console.log('');
|
|
94
|
+
console.log(chalk.blue.bold('Service Configuration'));
|
|
95
|
+
console.log(chalk.gray('─'.repeat(40)));
|
|
96
|
+
// Source and deploy
|
|
97
|
+
const sourceDir = await prompt(rl, 'Source directory (relative to workspace)', existingConfig?.sourceDir || '.');
|
|
98
|
+
const deployRepo = await prompt(rl, 'Deploy repo path (relative to source)', existingConfig?.deployRepo || 'deploy');
|
|
99
|
+
// Artifacts
|
|
100
|
+
console.log('');
|
|
101
|
+
const defaultArtifacts = existingConfig?.artifacts?.join(', ') || 'dist, package.json, ecosystem.config.cjs';
|
|
102
|
+
const artifactsStr = await prompt(rl, 'Artifacts to deploy (comma-separated)', defaultArtifacts);
|
|
103
|
+
const artifacts = artifactsStr.split(',').map(a => a.trim()).filter(a => a);
|
|
104
|
+
// Process manager
|
|
105
|
+
console.log('');
|
|
106
|
+
const processManager = await promptSelect(rl, 'Process manager:', ['pm2', 'systemd'], 0);
|
|
107
|
+
const processName = await prompt(rl, 'Process name', existingConfig?.processName || 'my-service');
|
|
108
|
+
// PM2 specific
|
|
109
|
+
let pm2Home;
|
|
110
|
+
let pm2User;
|
|
111
|
+
if (processManager === 'pm2') {
|
|
112
|
+
const usePm2User = await promptYesNo(rl, 'Run PM2 as different user (sudo -u)?', !!existingConfig?.pm2User);
|
|
113
|
+
if (usePm2User) {
|
|
114
|
+
pm2User = await prompt(rl, 'PM2 user', existingConfig?.pm2User || 'deploy');
|
|
115
|
+
pm2Home = await prompt(rl, 'PM2_HOME directory', existingConfig?.pm2Home || `/opt/${processName}/.pm2`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Environment
|
|
119
|
+
console.log('');
|
|
120
|
+
const environment = await promptSelect(rl, 'Environment:', ['production', 'staging', 'development'], 0);
|
|
121
|
+
// Server config
|
|
122
|
+
console.log('');
|
|
123
|
+
console.log(chalk.blue('Server Configuration'));
|
|
124
|
+
console.log(chalk.gray('─'.repeat(40)));
|
|
125
|
+
const host = await prompt(rl, 'SSH host (user@hostname)', existingConfig?.server?.host || 'deploy@localhost');
|
|
126
|
+
const sshOptions = await prompt(rl, 'SSH options (e.g., -p 22)', existingConfig?.server?.sshOptions || '');
|
|
127
|
+
const targetDir = await prompt(rl, 'Target directory on server', existingConfig?.server?.targetDir || `/opt/${processName}`);
|
|
128
|
+
const bareRepo = await prompt(rl, 'Bare repo path on server', existingConfig?.server?.bareRepo || `/git/deploy-${processName}`);
|
|
129
|
+
const useGroup = await promptYesNo(rl, 'Use shared Unix group?', !!existingConfig?.server?.group);
|
|
130
|
+
const group = useGroup ? await prompt(rl, 'Group name', existingConfig?.server?.group || 'deploy') : undefined;
|
|
131
|
+
// Environment variables
|
|
132
|
+
console.log('');
|
|
133
|
+
const addEnvVars = await promptYesNo(rl, 'Add environment variables?', !!existingConfig?.env);
|
|
134
|
+
let env;
|
|
135
|
+
if (addEnvVars) {
|
|
136
|
+
env = existingConfig?.env ? { ...existingConfig.env } : {};
|
|
137
|
+
console.log(chalk.gray('Enter variables as KEY=VALUE, empty line to finish'));
|
|
138
|
+
while (true) {
|
|
139
|
+
const varInput = await prompt(rl, 'ENV_VAR=value');
|
|
140
|
+
if (!varInput)
|
|
141
|
+
break;
|
|
142
|
+
const [key, ...valueParts] = varInput.split('=');
|
|
143
|
+
if (key && valueParts.length > 0) {
|
|
144
|
+
const value = valueParts.join('=');
|
|
145
|
+
// Try to parse as number or boolean
|
|
146
|
+
if (value === 'true') {
|
|
147
|
+
env[key] = true;
|
|
148
|
+
}
|
|
149
|
+
else if (value === 'false') {
|
|
150
|
+
env[key] = false;
|
|
151
|
+
}
|
|
152
|
+
else if (/^\d+$/.test(value)) {
|
|
153
|
+
env[key] = parseInt(value, 10);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
env[key] = value;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const config = {
|
|
162
|
+
sourceDir,
|
|
163
|
+
deployRepo,
|
|
164
|
+
artifacts,
|
|
165
|
+
processManager,
|
|
166
|
+
processName,
|
|
167
|
+
environment,
|
|
168
|
+
server: {
|
|
169
|
+
host,
|
|
170
|
+
targetDir,
|
|
171
|
+
bareRepo,
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
if (sshOptions)
|
|
175
|
+
config.server.sshOptions = sshOptions;
|
|
176
|
+
if (group)
|
|
177
|
+
config.server.group = group;
|
|
178
|
+
if (pm2Home)
|
|
179
|
+
config.pm2Home = pm2Home;
|
|
180
|
+
if (pm2User)
|
|
181
|
+
config.pm2User = pm2User;
|
|
182
|
+
if (env && Object.keys(env).length > 0)
|
|
183
|
+
config.env = env;
|
|
184
|
+
return config;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Config command - create or edit .git-deploy.json
|
|
188
|
+
*/
|
|
189
|
+
export async function configCommand(options = {}) {
|
|
190
|
+
const configPath = join(process.cwd(), CONFIG_FILENAME);
|
|
191
|
+
const config = loadOrCreateConfig(configPath);
|
|
192
|
+
// List mode
|
|
193
|
+
if (options.list) {
|
|
194
|
+
if (Object.keys(config.services).length === 0) {
|
|
195
|
+
console.log(chalk.yellow('No services configured'));
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
console.log(chalk.blue('Configured services:'));
|
|
199
|
+
for (const [name, svc] of Object.entries(config.services)) {
|
|
200
|
+
console.log(` ${chalk.white(name)}`);
|
|
201
|
+
console.log(chalk.gray(` Host: ${svc.server.host}`));
|
|
202
|
+
console.log(chalk.gray(` Target: ${svc.server.targetDir}`));
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const rl = createPrompt();
|
|
208
|
+
try {
|
|
209
|
+
console.log(chalk.blue.bold('GPD Configuration Wizard'));
|
|
210
|
+
console.log(chalk.gray(`Config file: ${configPath}`));
|
|
211
|
+
console.log('');
|
|
212
|
+
// Service name
|
|
213
|
+
let serviceName;
|
|
214
|
+
if (options.edit) {
|
|
215
|
+
serviceName = options.edit;
|
|
216
|
+
if (!config.services[serviceName]) {
|
|
217
|
+
console.log(chalk.yellow(`Service '${serviceName}' not found, creating new`));
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
const existingServices = Object.keys(config.services);
|
|
222
|
+
if (existingServices.length > 0) {
|
|
223
|
+
console.log(chalk.gray('Existing services: ' + existingServices.join(', ')));
|
|
224
|
+
}
|
|
225
|
+
serviceName = await prompt(rl, 'Service name', existingServices[0] || 'my-service');
|
|
226
|
+
}
|
|
227
|
+
// Create/edit service config
|
|
228
|
+
const existingService = config.services[serviceName];
|
|
229
|
+
const serviceConfig = await createServiceConfig(rl, existingService);
|
|
230
|
+
// Preview
|
|
231
|
+
console.log('');
|
|
232
|
+
console.log(chalk.blue.bold('Configuration Preview'));
|
|
233
|
+
console.log(chalk.gray('─'.repeat(40)));
|
|
234
|
+
console.log(JSON.stringify({ [serviceName]: serviceConfig }, null, 2));
|
|
235
|
+
console.log('');
|
|
236
|
+
// Confirm save
|
|
237
|
+
const shouldSave = await promptYesNo(rl, 'Save configuration?', true);
|
|
238
|
+
if (shouldSave) {
|
|
239
|
+
config.services[serviceName] = serviceConfig;
|
|
240
|
+
saveConfig(configPath, config);
|
|
241
|
+
console.log(chalk.green(`✓ Saved to ${CONFIG_FILENAME}`));
|
|
242
|
+
console.log('');
|
|
243
|
+
console.log(chalk.gray('Next steps:'));
|
|
244
|
+
console.log(chalk.white(` gpd init ${serviceName} # Setup server`));
|
|
245
|
+
console.log(chalk.white(` gpd deploy ${serviceName} # Deploy`));
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
console.log(chalk.yellow('Cancelled'));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
finally {
|
|
252
|
+
rl.close();
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAE3C;;GAEG;AACH,SAAS,YAAY;IACnB,OAAO,QAAQ,CAAC,eAAe,CAAC;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,MAAM,CAAC,EAAsB,EAAE,QAAgB,EAAE,YAAqB;IACnF,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,WAAW,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YACpD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,EAAsB,EAAE,QAAgB,EAAE,aAAsB,IAAI;IAC7F,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnB,OAAO,CAAC,UAAU,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,EAAsB,EAAE,QAAgB,EAAE,OAAiB,EAAE,eAAuB,CAAC;IAC/G,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,aAAa,OAAO,CAAC,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;YAC7E,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACjC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACtC,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,UAAkB,EAAE,MAAoB;IAC1D,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,EAAsB,EAAE,cAA8B;IACvF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAExC,oBAAoB;IACpB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,0CAA0C,EAAE,cAAc,EAAE,SAAS,IAAI,GAAG,CAAC,CAAC;IACjH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,uCAAuC,EAAE,cAAc,EAAE,UAAU,IAAI,QAAQ,CAAC,CAAC;IAErH,YAAY;IACZ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,gBAAgB,GAAG,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,0CAA0C,CAAC;IAC7G,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,uCAAuC,EAAE,gBAAgB,CAAC,CAAC;IACjG,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE5E,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,kBAAkB,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAsB,CAAC;IAC9G,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,IAAI,YAAY,CAAC,CAAC;IAElG,eAAe;IACf,IAAI,OAA2B,CAAC;IAChC,IAAI,OAA2B,CAAC;IAChC,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,sCAAsC,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC5G,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,IAAI,QAAQ,CAAC,CAAC;YAC5E,OAAO,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,oBAAoB,EAAE,cAAc,EAAE,OAAO,IAAI,QAAQ,WAAW,OAAO,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;IAED,cAAc;IACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC,CAA6C,CAAC;IAEpJ,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,IAAI,kBAAkB,CAAC,CAAC;IAC9G,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;IAC3G,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,4BAA4B,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,IAAI,QAAQ,WAAW,EAAE,CAAC,CAAC;IAC7H,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,IAAI,eAAe,WAAW,EAAE,CAAC,CAAC;IAEhI,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,wBAAwB,EAAE,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAClG,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE/G,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,4BAA4B,EAAE,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC9F,IAAI,GAA0D,CAAC;IAE/D,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAE9E,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ;gBAAE,MAAM;YAErB,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnC,oCAAoC;gBACpC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;oBACrB,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBAClB,CAAC;qBAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;oBAC7B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACnB,CAAC;qBAAM,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAkB;QAC5B,SAAS;QACT,UAAU;QACV,SAAS;QACT,cAAc;QACd,WAAW;QACX,WAAW;QACX,MAAM,EAAE;YACN,IAAI;YACJ,SAAS;YACT,QAAQ;SACT;KACF,CAAC;IAEF,IAAI,UAAU;QAAE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IACtD,IAAI,KAAK;QAAE,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACvC,IAAI,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IACtC,IAAI,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IACtC,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IAEzD,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAyB,EAAE;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAE9C,YAAY;IACZ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAChD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAE1B,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,eAAe;QACf,IAAI,WAAmB,CAAC;QACxB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,WAAW,2BAA2B,CAAC,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/E,CAAC;YACD,WAAW,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC;QACtF,CAAC;QAED,6BAA6B;QAC7B,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QAErE,UAAU;QACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,eAAe;QACf,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;QAEtE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC;YAC7C,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,eAAe,EAAE,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,WAAW,oBAAoB,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,WAAW,YAAY,CAAC,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCnG"}
|
package/dist/commands/deploy.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { stageCommand } from './stage.js';
|
|
3
|
-
import { releaseCommand } from './release.js';
|
|
2
|
+
import { stageCommand, stageCommandDryRun } from './stage.js';
|
|
3
|
+
import { releaseCommand, releaseCommandDryRun } from './release.js';
|
|
4
4
|
import { getServiceConfig } from '../config/loader.js';
|
|
5
5
|
/**
|
|
6
6
|
* Deploy command - stage artifacts and push to server
|
|
@@ -14,10 +14,25 @@ import { getServiceConfig } from '../config/loader.js';
|
|
|
14
14
|
*/
|
|
15
15
|
export async function deployCommand(serviceName, options = {}) {
|
|
16
16
|
const config = getServiceConfig(serviceName);
|
|
17
|
-
|
|
17
|
+
if (options.dryRun) {
|
|
18
|
+
console.log(chalk.blue.bold(`[DRY RUN] Deploy preview for ${serviceName}`));
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
console.log(chalk.blue.bold(`Deploying ${serviceName}...`));
|
|
22
|
+
}
|
|
18
23
|
console.log(chalk.gray(` Environment: ${config.environment || 'production'}`));
|
|
19
24
|
console.log(chalk.gray(` Server: ${config.server.host}`));
|
|
20
25
|
console.log('');
|
|
26
|
+
if (options.dryRun) {
|
|
27
|
+
// Dry run - just show what would happen
|
|
28
|
+
await stageCommandDryRun(serviceName);
|
|
29
|
+
console.log('');
|
|
30
|
+
await releaseCommandDryRun(serviceName);
|
|
31
|
+
console.log('');
|
|
32
|
+
console.log(chalk.yellow.bold('This was a dry run. No changes were made.'));
|
|
33
|
+
console.log(chalk.gray('Run without --dry-run to actually deploy.'));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
21
36
|
// 1. Stage artifacts to deploy repo
|
|
22
37
|
await stageCommand(serviceName);
|
|
23
38
|
console.log('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAQvD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB,EAAE,UAAyB,EAAE;IAClF,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAE7C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,WAAW,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,WAAW,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,wCAAwC;QACxC,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,oCAAoC;IACpC,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,iDAAiD;IACjD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,WAAW,EAAE,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
|
|
@@ -7,5 +7,9 @@ interface ReleaseOptions {
|
|
|
7
7
|
* Pushes to the bare repo on the server, which triggers the post-receive hook.
|
|
8
8
|
*/
|
|
9
9
|
export declare function releaseCommand(serviceName: string, options?: ReleaseOptions): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Dry run version of release command - shows what would be committed/pushed
|
|
12
|
+
*/
|
|
13
|
+
export declare function releaseCommandDryRun(serviceName: string): Promise<void>;
|
|
10
14
|
export {};
|
|
11
15
|
//# sourceMappingURL=release.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"AAMA,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BrG;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC7E"}
|
package/dist/commands/release.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { getServiceConfig, getWorkspaceRoot, getDeployRepoPath } from '../config/loader.js';
|
|
3
|
-
import { gitAddAll, gitCommit, gitPush, hasChanges, getCurrentBranch } from '../utils/git.js';
|
|
3
|
+
import { gitAddAll, gitCommit, gitPush, hasChanges, getCurrentBranch, getGitStatus } from '../utils/git.js';
|
|
4
|
+
import { exists } from '../utils/files.js';
|
|
5
|
+
import { joinPath } from '../utils/files.js';
|
|
4
6
|
/**
|
|
5
7
|
* Release command - commit and push deploy repository
|
|
6
8
|
*
|
|
@@ -31,4 +33,46 @@ export async function releaseCommand(serviceName, options = {}) {
|
|
|
31
33
|
gitPush(deployRepoPath, 'origin', branch);
|
|
32
34
|
console.log(chalk.green(`✓ Released ${serviceName}`));
|
|
33
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Dry run version of release command - shows what would be committed/pushed
|
|
38
|
+
*/
|
|
39
|
+
export async function releaseCommandDryRun(serviceName) {
|
|
40
|
+
console.log(chalk.blue(`[DRY RUN] Release preview for ${serviceName}...`));
|
|
41
|
+
const config = getServiceConfig(serviceName);
|
|
42
|
+
const workspaceRoot = getWorkspaceRoot();
|
|
43
|
+
const deployRepoPath = getDeployRepoPath(config, workspaceRoot);
|
|
44
|
+
// Check if deploy repo exists
|
|
45
|
+
if (!exists(joinPath(deployRepoPath, '.git'))) {
|
|
46
|
+
console.log(chalk.yellow(' Deploy repo not initialized yet'));
|
|
47
|
+
console.log(chalk.gray(' Would be created on first deploy'));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Check for changes
|
|
51
|
+
if (!hasChanges(deployRepoPath)) {
|
|
52
|
+
console.log(chalk.yellow(' No changes to release'));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// Show what would be committed
|
|
56
|
+
const status = getGitStatus(deployRepoPath);
|
|
57
|
+
console.log(chalk.gray(' Would commit:'));
|
|
58
|
+
for (const line of status.split('\n').filter(l => l.trim())) {
|
|
59
|
+
const [flag, ...fileParts] = line.trim().split(' ');
|
|
60
|
+
const file = fileParts.join(' ');
|
|
61
|
+
if (flag === 'M' || flag === 'MM') {
|
|
62
|
+
console.log(chalk.yellow(` M ${file}`));
|
|
63
|
+
}
|
|
64
|
+
else if (flag === 'A' || flag === '??') {
|
|
65
|
+
console.log(chalk.green(` A ${file}`));
|
|
66
|
+
}
|
|
67
|
+
else if (flag === 'D') {
|
|
68
|
+
console.log(chalk.red(` D ${file}`));
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
console.log(chalk.gray(` ${line.trim()}`));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const branch = getCurrentBranch(deployRepoPath);
|
|
75
|
+
console.log(chalk.gray(` Would push to: origin/${branch}`));
|
|
76
|
+
console.log(chalk.gray(` Server: ${config.server.host}`));
|
|
77
|
+
}
|
|
34
78
|
//# sourceMappingURL=release.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
interface RollbackOptions {
|
|
2
|
+
force?: boolean;
|
|
3
|
+
steps?: number;
|
|
4
|
+
list?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Rollback command - revert to a previous deployment
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* gpd rollback <service> - Interactive selection from recent commits
|
|
11
|
+
* gpd rollback <service> --steps 2 - Go back 2 commits
|
|
12
|
+
* gpd rollback <service> --list - Show available versions without rollback
|
|
13
|
+
* gpd rollback <service> abc123 - Rollback to specific commit
|
|
14
|
+
*/
|
|
15
|
+
export declare function rollbackCommand(serviceName: string, target?: string, options?: RollbackOptions): Promise<void>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=rollback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"AAMA,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA6CD;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkIxH"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as readline from 'readline';
|
|
3
|
+
import { getServiceConfig, getWorkspaceRoot, getDeployRepoPath } from '../config/loader.js';
|
|
4
|
+
import { getCommitLogDetailed, getCurrentCommit, getCommitByRef, gitResetHard, gitPushForce, getCurrentBranch } from '../utils/git.js';
|
|
5
|
+
import { exists, joinPath } from '../utils/files.js';
|
|
6
|
+
/**
|
|
7
|
+
* Prompt user for confirmation
|
|
8
|
+
*/
|
|
9
|
+
async function confirm(question) {
|
|
10
|
+
const rl = readline.createInterface({
|
|
11
|
+
input: process.stdin,
|
|
12
|
+
output: process.stdout
|
|
13
|
+
});
|
|
14
|
+
return new Promise((resolve) => {
|
|
15
|
+
rl.question(`${question} (y/n): `, (answer) => {
|
|
16
|
+
rl.close();
|
|
17
|
+
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Prompt user to select a number
|
|
23
|
+
*/
|
|
24
|
+
async function promptNumber(prompt, max) {
|
|
25
|
+
const rl = readline.createInterface({
|
|
26
|
+
input: process.stdin,
|
|
27
|
+
output: process.stdout
|
|
28
|
+
});
|
|
29
|
+
return new Promise((resolve) => {
|
|
30
|
+
rl.question(prompt, (answer) => {
|
|
31
|
+
rl.close();
|
|
32
|
+
if (answer.toLowerCase() === 'q' || answer.toLowerCase() === 'quit') {
|
|
33
|
+
resolve(-1);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const num = parseInt(answer, 10);
|
|
37
|
+
if (num >= 1 && num <= max) {
|
|
38
|
+
resolve(num - 1);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
resolve(-1);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Rollback command - revert to a previous deployment
|
|
48
|
+
*
|
|
49
|
+
* Usage:
|
|
50
|
+
* gpd rollback <service> - Interactive selection from recent commits
|
|
51
|
+
* gpd rollback <service> --steps 2 - Go back 2 commits
|
|
52
|
+
* gpd rollback <service> --list - Show available versions without rollback
|
|
53
|
+
* gpd rollback <service> abc123 - Rollback to specific commit
|
|
54
|
+
*/
|
|
55
|
+
export async function rollbackCommand(serviceName, target, options = {}) {
|
|
56
|
+
const config = getServiceConfig(serviceName);
|
|
57
|
+
const workspaceRoot = getWorkspaceRoot();
|
|
58
|
+
const deployRepoPath = getDeployRepoPath(config, workspaceRoot);
|
|
59
|
+
// Check if deploy repo exists
|
|
60
|
+
if (!exists(joinPath(deployRepoPath, '.git'))) {
|
|
61
|
+
throw new Error(`Deploy repo not found at ${deployRepoPath}. Have you deployed before?`);
|
|
62
|
+
}
|
|
63
|
+
const currentCommit = getCurrentCommit(deployRepoPath);
|
|
64
|
+
const branch = getCurrentBranch(deployRepoPath);
|
|
65
|
+
// List mode - just show versions
|
|
66
|
+
if (options.list) {
|
|
67
|
+
console.log(chalk.blue(`Deployment history for ${serviceName}:`));
|
|
68
|
+
console.log('');
|
|
69
|
+
const commits = getCommitLogDetailed(deployRepoPath, 15);
|
|
70
|
+
commits.forEach((commit, index) => {
|
|
71
|
+
const tagInfo = commit.tags.length > 0 ? chalk.cyan(` [${commit.tags.join(', ')}]`) : '';
|
|
72
|
+
const current = index === 0 ? chalk.green(' (current)') : '';
|
|
73
|
+
console.log(chalk.yellow(commit.shortHash) +
|
|
74
|
+
chalk.gray(` ${commit.date} `) +
|
|
75
|
+
commit.message +
|
|
76
|
+
tagInfo +
|
|
77
|
+
current);
|
|
78
|
+
});
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
console.log(chalk.blue(`Rollback ${serviceName}...`));
|
|
82
|
+
console.log(chalk.gray(` Current: ${currentCommit.substring(0, 7)}`));
|
|
83
|
+
console.log(chalk.gray(` Branch: ${branch}`));
|
|
84
|
+
console.log('');
|
|
85
|
+
let targetCommit;
|
|
86
|
+
if (target) {
|
|
87
|
+
// Specific commit/ref provided
|
|
88
|
+
try {
|
|
89
|
+
targetCommit = getCommitByRef(deployRepoPath, target);
|
|
90
|
+
console.log(chalk.gray(` Target: ${targetCommit.substring(0, 7)} (from ${target})`));
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
throw new Error(`Invalid commit reference: ${target}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else if (options.steps) {
|
|
97
|
+
// Go back N steps
|
|
98
|
+
try {
|
|
99
|
+
targetCommit = getCommitByRef(deployRepoPath, `HEAD~${options.steps}`);
|
|
100
|
+
const commits = getCommitLogDetailed(deployRepoPath, options.steps + 1);
|
|
101
|
+
const targetInfo = commits[options.steps];
|
|
102
|
+
if (targetInfo) {
|
|
103
|
+
const tagInfo = targetInfo.tags.length > 0 ? chalk.cyan(` [${targetInfo.tags.join(', ')}]`) : '';
|
|
104
|
+
console.log(chalk.gray(` Target: ${targetInfo.shortHash} ${targetInfo.message}${tagInfo}`));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
throw new Error(`Cannot go back ${options.steps} commits`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Interactive selection - show detailed commit list
|
|
113
|
+
const commits = getCommitLogDetailed(deployRepoPath, 10);
|
|
114
|
+
if (commits.length <= 1) {
|
|
115
|
+
throw new Error('No previous commits to rollback to');
|
|
116
|
+
}
|
|
117
|
+
// Skip first commit (current) and display the rest
|
|
118
|
+
const previousCommits = commits.slice(1);
|
|
119
|
+
console.log(chalk.blue('Available versions to rollback to:'));
|
|
120
|
+
console.log('');
|
|
121
|
+
previousCommits.forEach((commit, index) => {
|
|
122
|
+
const tagInfo = commit.tags.length > 0 ? chalk.cyan(` [${commit.tags.join(', ')}]`) : '';
|
|
123
|
+
console.log(chalk.white(` ${index + 1}) `) + chalk.yellow(commit.shortHash) + chalk.gray(` ${commit.date} `) + commit.message + tagInfo);
|
|
124
|
+
});
|
|
125
|
+
console.log('');
|
|
126
|
+
const selection = await promptNumber(`Select version (1-${previousCommits.length}, q to quit): `, previousCommits.length);
|
|
127
|
+
if (selection < 0) {
|
|
128
|
+
console.log(chalk.yellow('Cancelled'));
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
targetCommit = previousCommits[selection].hash;
|
|
132
|
+
const selected = previousCommits[selection];
|
|
133
|
+
const tagInfo = selected.tags.length > 0 ? ` [${selected.tags.join(', ')}]` : '';
|
|
134
|
+
console.log(chalk.gray(` Selected: ${selected.shortHash} ${selected.message}${tagInfo}`));
|
|
135
|
+
}
|
|
136
|
+
// Check if we're already at target
|
|
137
|
+
if (targetCommit === currentCommit) {
|
|
138
|
+
console.log(chalk.yellow('Already at target commit'));
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
// Confirm unless --force
|
|
142
|
+
if (!options.force) {
|
|
143
|
+
console.log('');
|
|
144
|
+
console.log(chalk.yellow.bold('⚠ Warning: This will:'));
|
|
145
|
+
console.log(chalk.yellow(` 1. Reset deploy repo to ${targetCommit.substring(0, 7)}`));
|
|
146
|
+
console.log(chalk.yellow(` 2. Force push to server`));
|
|
147
|
+
console.log(chalk.yellow(` 3. Server will checkout and restart with old version`));
|
|
148
|
+
console.log('');
|
|
149
|
+
const shouldContinue = await confirm('Continue with rollback?');
|
|
150
|
+
if (!shouldContinue) {
|
|
151
|
+
console.log(chalk.yellow('Cancelled'));
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Perform rollback
|
|
156
|
+
console.log('');
|
|
157
|
+
console.log(chalk.blue('Performing rollback...'));
|
|
158
|
+
// 1. Reset local deploy repo
|
|
159
|
+
console.log(chalk.gray(` Resetting to ${targetCommit.substring(0, 7)}...`));
|
|
160
|
+
gitResetHard(deployRepoPath, targetCommit);
|
|
161
|
+
// 2. Force push to server
|
|
162
|
+
console.log(chalk.gray(` Force pushing to origin/${branch}...`));
|
|
163
|
+
gitPushForce(deployRepoPath, 'origin', branch);
|
|
164
|
+
console.log('');
|
|
165
|
+
console.log(chalk.green.bold(`✓ Rolled back ${serviceName} to ${targetCommit.substring(0, 7)}`));
|
|
166
|
+
console.log(chalk.gray(' The server hook will handle: git checkout, npm install, pm2 restart'));
|
|
167
|
+
console.log(chalk.gray(` Check logs: gpd logs ${serviceName}`));
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=rollback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/stage.d.ts
CHANGED
|
@@ -7,4 +7,8 @@
|
|
|
7
7
|
* - artifacts: copied from sourceDir to deployRepo
|
|
8
8
|
*/
|
|
9
9
|
export declare function stageCommand(serviceName: string): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Dry run version of stage command - shows what would be copied without copying
|
|
12
|
+
*/
|
|
13
|
+
export declare function stageCommandDryRun(serviceName: string): Promise<void>;
|
|
10
14
|
//# sourceMappingURL=stage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../../src/commands/stage.ts"],"names":[],"mappings":"AAmCA;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../../src/commands/stage.ts"],"names":[],"mappings":"AAmCA;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDrE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC3E"}
|
package/dist/commands/stage.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { execSync } from 'child_process';
|
|
3
|
-
import { getServiceConfig, getWorkspaceRoot, getSourceDir, getDeployRepoPath } from '../config/loader.js';
|
|
3
|
+
import { getServiceConfig, getWorkspaceRoot, getSourceDir, getDeployRepoPath, CONFIG_FILENAME } from '../config/loader.js';
|
|
4
4
|
import { DEFAULT_ARTIFACTS, parseSshPort, buildSshUrl } from '../config/types.js';
|
|
5
5
|
import { ensureDir, removeDir, copy, exists, joinPath } from '../utils/files.js';
|
|
6
6
|
/**
|
|
@@ -68,6 +68,53 @@ export async function stageCommand(serviceName) {
|
|
|
68
68
|
if (copiedCount === 0) {
|
|
69
69
|
throw new Error('No artifacts were copied. Check your artifacts config and build output.');
|
|
70
70
|
}
|
|
71
|
+
// Copy .git-deploy.json to deploy repo (needed by server-side install)
|
|
72
|
+
const configSrc = joinPath(workspaceRoot, CONFIG_FILENAME);
|
|
73
|
+
const configDest = joinPath(deployRepoPath, CONFIG_FILENAME);
|
|
74
|
+
if (exists(configSrc)) {
|
|
75
|
+
copy(configSrc, configDest);
|
|
76
|
+
console.log(chalk.gray(` ${CONFIG_FILENAME}`));
|
|
77
|
+
}
|
|
71
78
|
console.log(chalk.green(`✓ Staged ${copiedCount} artifact(s) to ${config.sourceDir}/${config.deployRepo}`));
|
|
72
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Dry run version of stage command - shows what would be copied without copying
|
|
82
|
+
*/
|
|
83
|
+
export async function stageCommandDryRun(serviceName) {
|
|
84
|
+
console.log(chalk.blue(`[DRY RUN] Stage preview for ${serviceName}...`));
|
|
85
|
+
const config = getServiceConfig(serviceName);
|
|
86
|
+
const workspaceRoot = getWorkspaceRoot();
|
|
87
|
+
const sourceDir = getSourceDir(config, workspaceRoot);
|
|
88
|
+
const deployRepoPath = getDeployRepoPath(config, workspaceRoot);
|
|
89
|
+
const artifacts = config.artifacts || DEFAULT_ARTIFACTS;
|
|
90
|
+
// Validate source directory exists
|
|
91
|
+
if (!exists(sourceDir)) {
|
|
92
|
+
throw new Error(`Source directory not found: ${sourceDir}`);
|
|
93
|
+
}
|
|
94
|
+
console.log(chalk.gray(` Source: ${config.sourceDir}`));
|
|
95
|
+
console.log(chalk.gray(` Deploy: ${config.sourceDir}/${config.deployRepo}`));
|
|
96
|
+
// Check if deploy repo needs init
|
|
97
|
+
if (!exists(joinPath(deployRepoPath, '.git'))) {
|
|
98
|
+
console.log(chalk.yellow(` Would initialize deploy repo at ${config.deployRepo}`));
|
|
99
|
+
}
|
|
100
|
+
// Show what would be copied
|
|
101
|
+
console.log(chalk.gray(' Would copy:'));
|
|
102
|
+
let wouldCopy = 0;
|
|
103
|
+
for (const artifact of artifacts) {
|
|
104
|
+
const srcPath = joinPath(sourceDir, artifact);
|
|
105
|
+
if (exists(srcPath)) {
|
|
106
|
+
console.log(chalk.gray(` ✓ ${artifact}`));
|
|
107
|
+
wouldCopy++;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.log(chalk.yellow(` ✗ ${artifact} (not found)`));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (wouldCopy === 0) {
|
|
114
|
+
console.log(chalk.red(' No artifacts would be copied!'));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.log(chalk.gray(` Total: ${wouldCopy} artifact(s) would be staged`));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
73
120
|
//# sourceMappingURL=stage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage.js","sourceRoot":"","sources":["../../src/commands/stage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"stage.js","sourceRoot":"","sources":["../../src/commands/stage.ts"],"names":[],"mappings":"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"}
|
package/dist/config/loader.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAElD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAY9E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CAgB5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAUxF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAG1D"}
|
package/dist/config/loader.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGrC,MAAM,eAAe,GAAG,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,11 +7,13 @@ import { initCommand } from './commands/init.js';
|
|
|
7
7
|
import { statusCommand } from './commands/status.js';
|
|
8
8
|
import { logsCommand } from './commands/logs.js';
|
|
9
9
|
import { installCommand } from './commands/install.js';
|
|
10
|
+
import { rollbackCommand } from './commands/rollback.js';
|
|
11
|
+
import { configCommand } from './commands/config.js';
|
|
10
12
|
const program = new Command();
|
|
11
13
|
program
|
|
12
14
|
.name('gpd')
|
|
13
15
|
.description('Git Push Deploy - CLI for git-based deployments with PM2 support')
|
|
14
|
-
.version('0.
|
|
16
|
+
.version('0.3.1');
|
|
15
17
|
// Development commands (run on dev machine)
|
|
16
18
|
program
|
|
17
19
|
.command('stage <service>')
|
|
@@ -27,7 +29,23 @@ program
|
|
|
27
29
|
.description('Stage and push to server (hook handles install)')
|
|
28
30
|
.option('-m, --message <message>', 'Commit message')
|
|
29
31
|
.option('--skip-push', 'Only stage, do not push')
|
|
30
|
-
.
|
|
32
|
+
.option('--dry-run', 'Preview what would happen without making changes')
|
|
33
|
+
.action((service, options) => deployCommand(service, {
|
|
34
|
+
message: options.message,
|
|
35
|
+
skipPush: options.skipPush,
|
|
36
|
+
dryRun: options.dryRun
|
|
37
|
+
}));
|
|
38
|
+
program
|
|
39
|
+
.command('rollback <service> [target]')
|
|
40
|
+
.description('Rollback to a previous deployment version')
|
|
41
|
+
.option('-s, --steps <n>', 'Go back N commits', parseInt)
|
|
42
|
+
.option('-l, --list', 'List available versions without rollback')
|
|
43
|
+
.option('-f, --force', 'Skip confirmation prompt')
|
|
44
|
+
.action((service, target, options) => rollbackCommand(service, target, {
|
|
45
|
+
steps: options.steps,
|
|
46
|
+
list: options.list,
|
|
47
|
+
force: options.force
|
|
48
|
+
}));
|
|
31
49
|
// Server setup command
|
|
32
50
|
program
|
|
33
51
|
.command('init <service>')
|
|
@@ -50,5 +68,11 @@ program
|
|
|
50
68
|
.option('-n, --lines <lines>', 'Number of lines to show', '50')
|
|
51
69
|
.option('-f, --follow', 'Follow log output')
|
|
52
70
|
.action(logsCommand);
|
|
71
|
+
program
|
|
72
|
+
.command('config')
|
|
73
|
+
.description('Interactive configuration wizard for .git-deploy.json')
|
|
74
|
+
.option('-e, --edit <service>', 'Edit existing service')
|
|
75
|
+
.option('-l, --list', 'List configured services')
|
|
76
|
+
.action((options) => configCommand({ edit: options.edit, list: options.list }));
|
|
53
77
|
program.parse();
|
|
54
78
|
//# 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,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/git.d.ts
CHANGED
|
@@ -26,6 +26,41 @@ export declare function getLatestTag(repoDir: string): string | null;
|
|
|
26
26
|
* Check if repo has uncommitted changes
|
|
27
27
|
*/
|
|
28
28
|
export declare function hasChanges(repoDir: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Get git status output (for display)
|
|
31
|
+
*/
|
|
32
|
+
export declare function getGitStatus(repoDir: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Get commit log (one line per commit)
|
|
35
|
+
* Format: hash message (tag if exists)
|
|
36
|
+
*/
|
|
37
|
+
export declare function getCommitLog(repoDir: string, count?: number): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Get commit log with more details (hash, date, message, tags)
|
|
40
|
+
*/
|
|
41
|
+
export declare function getCommitLogDetailed(repoDir: string, count?: number): Array<{
|
|
42
|
+
hash: string;
|
|
43
|
+
shortHash: string;
|
|
44
|
+
message: string;
|
|
45
|
+
date: string;
|
|
46
|
+
tags: string[];
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Get current commit hash
|
|
50
|
+
*/
|
|
51
|
+
export declare function getCurrentCommit(repoDir: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* Get commit hash by reference (tag, branch, HEAD~n, etc.)
|
|
54
|
+
*/
|
|
55
|
+
export declare function getCommitByRef(repoDir: string, ref: string): string;
|
|
56
|
+
/**
|
|
57
|
+
* Reset to a specific commit (hard reset)
|
|
58
|
+
*/
|
|
59
|
+
export declare function gitResetHard(repoDir: string, commit: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Force push to remote
|
|
62
|
+
*/
|
|
63
|
+
export declare function gitPushForce(repoDir: string, remote?: string, branch?: string): void;
|
|
29
64
|
/**
|
|
30
65
|
* Initialize bare repo
|
|
31
66
|
*/
|
package/dist/utils/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAE/F;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAQnE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAiB,EAAE,MAAM,GAAE,MAAe,GAAG,IAAI,CAEjG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE/C"}
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAE/F;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAQnE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAiB,EAAE,MAAM,GAAE,MAAe,GAAG,IAAI,CAEjG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,EAAE,CAW1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,KAAK,CAAC;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC,CAiCD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAElE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAiB,EAAE,MAAM,GAAE,MAAe,GAAG,IAAI,CAEtG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE/C"}
|
package/dist/utils/git.js
CHANGED
|
@@ -54,6 +54,82 @@ export function hasChanges(repoDir) {
|
|
|
54
54
|
const status = execOutput('git status --porcelain', repoDir);
|
|
55
55
|
return status.length > 0;
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Get git status output (for display)
|
|
59
|
+
*/
|
|
60
|
+
export function getGitStatus(repoDir) {
|
|
61
|
+
return execOutput('git status --porcelain', repoDir);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get commit log (one line per commit)
|
|
65
|
+
* Format: hash message (tag if exists)
|
|
66
|
+
*/
|
|
67
|
+
export function getCommitLog(repoDir, count = 10) {
|
|
68
|
+
try {
|
|
69
|
+
// Use format that includes decorations (tags, branches)
|
|
70
|
+
const output = execOutput(`git log --oneline --decorate=short -${count}`, repoDir);
|
|
71
|
+
return output.split('\n').filter(line => line.trim());
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get commit log with more details (hash, date, message, tags)
|
|
79
|
+
*/
|
|
80
|
+
export function getCommitLogDetailed(repoDir, count = 10) {
|
|
81
|
+
try {
|
|
82
|
+
// Format: hash|date|message|refs
|
|
83
|
+
const output = execOutput(`git log --format="%H|%ci|%s|%D" -${count}`, repoDir);
|
|
84
|
+
return output.split('\n').filter(line => line.trim()).map(line => {
|
|
85
|
+
const [hash, date, message, refs] = line.split('|');
|
|
86
|
+
// Extract tags from refs (e.g., "HEAD -> main, tag: v1.0.0")
|
|
87
|
+
const tags = [];
|
|
88
|
+
if (refs) {
|
|
89
|
+
const tagMatches = refs.match(/tag:\s*([^,)]+)/g);
|
|
90
|
+
if (tagMatches) {
|
|
91
|
+
for (const match of tagMatches) {
|
|
92
|
+
tags.push(match.replace('tag:', '').trim());
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
hash,
|
|
98
|
+
shortHash: hash.substring(0, 7),
|
|
99
|
+
message: message || '',
|
|
100
|
+
date: date ? date.substring(0, 10) : '', // Just date part
|
|
101
|
+
tags
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return [];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Get current commit hash
|
|
111
|
+
*/
|
|
112
|
+
export function getCurrentCommit(repoDir) {
|
|
113
|
+
return execOutput('git rev-parse HEAD', repoDir);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get commit hash by reference (tag, branch, HEAD~n, etc.)
|
|
117
|
+
*/
|
|
118
|
+
export function getCommitByRef(repoDir, ref) {
|
|
119
|
+
return execOutput(`git rev-parse ${ref}`, repoDir);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Reset to a specific commit (hard reset)
|
|
123
|
+
*/
|
|
124
|
+
export function gitResetHard(repoDir, commit) {
|
|
125
|
+
exec(`git reset --hard ${commit}`, { cwd: repoDir });
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Force push to remote
|
|
129
|
+
*/
|
|
130
|
+
export function gitPushForce(repoDir, remote = 'origin', branch = 'main') {
|
|
131
|
+
exec(`git push --force ${remote} ${branch}`, { cwd: repoDir });
|
|
132
|
+
}
|
|
57
133
|
/**
|
|
58
134
|
* Initialize bare repo
|
|
59
135
|
*/
|
package/dist/utils/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,GAAW,EAAE,IAAY,EAAE,SAAiB;IACvF,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,iBAAiB,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,OAAe;IACxD,IAAI,CAAC;QACH,IAAI,CAAC,kBAAkB,OAAO,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,OAAe,EAAE,SAAiB,QAAQ,EAAE,SAAiB,MAAM;IACzF,IAAI,CAAC,YAAY,MAAM,IAAI,MAAM,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,UAAU,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,MAAM,GAAG,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC"}
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED