@saferun/cli 0.6.35 → 0.6.36
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.
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface BranchesOptions {
|
|
2
|
+
set?: string;
|
|
3
|
+
add?: string;
|
|
4
|
+
remove?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class SettingsCommand {
|
|
7
|
+
private apiUrl;
|
|
8
|
+
private apiKey;
|
|
9
|
+
private init;
|
|
10
|
+
showAll(): Promise<void>;
|
|
11
|
+
branches(options: BranchesOptions): Promise<void>;
|
|
12
|
+
interactiveBranches(): Promise<void>;
|
|
13
|
+
private fetchProtectedBranches;
|
|
14
|
+
private updateProtectedBranches;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SettingsCommand = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
9
|
+
const git_1 = require("../utils/git");
|
|
10
|
+
const config_1 = require("../utils/config");
|
|
11
|
+
const api_client_1 = require("../utils/api-client");
|
|
12
|
+
class SettingsCommand {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.apiUrl = '';
|
|
15
|
+
this.apiKey = '';
|
|
16
|
+
}
|
|
17
|
+
async init() {
|
|
18
|
+
var _a;
|
|
19
|
+
const isRepo = await (0, git_1.isGitRepository)();
|
|
20
|
+
if (!isRepo) {
|
|
21
|
+
console.error(chalk_1.default.red('❌ Not inside a git repository.'));
|
|
22
|
+
process.exitCode = 1;
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const gitInfo = await (0, git_1.getGitInfo)();
|
|
26
|
+
if (!gitInfo) {
|
|
27
|
+
console.error(chalk_1.default.red('❌ Unable to determine git repository information.'));
|
|
28
|
+
process.exitCode = 1;
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
const config = await (0, config_1.loadConfig)(gitInfo.repoRoot, { allowCreate: false });
|
|
32
|
+
if (!config) {
|
|
33
|
+
console.error(chalk_1.default.red('❌ SafeRun not configured. Run: saferun setup'));
|
|
34
|
+
process.exitCode = 1;
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
this.apiKey = (0, api_client_1.resolveApiKey)(config) || '';
|
|
38
|
+
this.apiUrl = ((_a = config.api) === null || _a === void 0 ? void 0 : _a.url) || 'https://saferun-api.up.railway.app';
|
|
39
|
+
if (!this.apiKey) {
|
|
40
|
+
console.error(chalk_1.default.red('❌ No API key configured.'));
|
|
41
|
+
console.error(chalk_1.default.yellow(' Run: saferun setup'));
|
|
42
|
+
process.exitCode = 1;
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
async showAll() {
|
|
48
|
+
if (!await this.init())
|
|
49
|
+
return;
|
|
50
|
+
console.log(chalk_1.default.cyan('\n🔧 SafeRun Settings\n'));
|
|
51
|
+
// Get protected branches
|
|
52
|
+
const branches = await this.fetchProtectedBranches();
|
|
53
|
+
if (branches) {
|
|
54
|
+
console.log(chalk_1.default.white('Protected Branches:'));
|
|
55
|
+
console.log(chalk_1.default.green(` ${branches.join(', ')}`));
|
|
56
|
+
}
|
|
57
|
+
console.log('');
|
|
58
|
+
}
|
|
59
|
+
async branches(options) {
|
|
60
|
+
if (!await this.init())
|
|
61
|
+
return;
|
|
62
|
+
// Set branches
|
|
63
|
+
if (options.set) {
|
|
64
|
+
const branches = options.set.split(',').map(b => b.trim()).filter(b => b);
|
|
65
|
+
if (branches.length === 0) {
|
|
66
|
+
console.error(chalk_1.default.red('❌ Cannot set empty branch list'));
|
|
67
|
+
process.exitCode = 1;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
await this.updateProtectedBranches(branches);
|
|
71
|
+
console.log(chalk_1.default.green(`✅ Protected branches set to: ${branches.join(', ')}`));
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Add branch
|
|
75
|
+
if (options.add) {
|
|
76
|
+
const current = await this.fetchProtectedBranches() || ['main', 'master'];
|
|
77
|
+
const toAdd = options.add.trim();
|
|
78
|
+
if (current.includes(toAdd)) {
|
|
79
|
+
console.log(chalk_1.default.yellow(`⚠️ Branch "${toAdd}" is already protected`));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const updated = [...current, toAdd];
|
|
83
|
+
await this.updateProtectedBranches(updated);
|
|
84
|
+
console.log(chalk_1.default.green(`✅ Added "${toAdd}" to protected branches`));
|
|
85
|
+
console.log(chalk_1.default.gray(` Current: ${updated.join(', ')}`));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// Remove branch
|
|
89
|
+
if (options.remove) {
|
|
90
|
+
const current = await this.fetchProtectedBranches() || ['main', 'master'];
|
|
91
|
+
const toRemove = options.remove.trim();
|
|
92
|
+
if (!current.includes(toRemove)) {
|
|
93
|
+
console.log(chalk_1.default.yellow(`⚠️ Branch "${toRemove}" is not in protected list`));
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const updated = current.filter(b => b !== toRemove);
|
|
97
|
+
if (updated.length === 0) {
|
|
98
|
+
console.error(chalk_1.default.red('❌ Cannot remove last protected branch'));
|
|
99
|
+
process.exitCode = 1;
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
await this.updateProtectedBranches(updated);
|
|
103
|
+
console.log(chalk_1.default.green(`✅ Removed "${toRemove}" from protected branches`));
|
|
104
|
+
console.log(chalk_1.default.gray(` Current: ${updated.join(', ')}`));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
// Show current (default)
|
|
108
|
+
console.log(chalk_1.default.cyan('\n🛡️ Protected Branches\n'));
|
|
109
|
+
const branches = await this.fetchProtectedBranches();
|
|
110
|
+
if (branches && branches.length > 0) {
|
|
111
|
+
console.log(chalk_1.default.white('Currently protected:'));
|
|
112
|
+
for (const branch of branches) {
|
|
113
|
+
if (branch.includes('*')) {
|
|
114
|
+
console.log(chalk_1.default.green(` • ${branch}`) + chalk_1.default.gray(' (pattern)'));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.log(chalk_1.default.green(` • ${branch}`));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.log(chalk_1.default.yellow('No protected branches configured'));
|
|
123
|
+
console.log(chalk_1.default.gray('Default: main, master'));
|
|
124
|
+
}
|
|
125
|
+
console.log(chalk_1.default.gray('\nUsage:'));
|
|
126
|
+
console.log(chalk_1.default.gray(' saferun settings branches --set main,develop,release/*'));
|
|
127
|
+
console.log(chalk_1.default.gray(' saferun settings branches --add staging'));
|
|
128
|
+
console.log(chalk_1.default.gray(' saferun settings branches --remove develop'));
|
|
129
|
+
console.log('');
|
|
130
|
+
}
|
|
131
|
+
async interactiveBranches() {
|
|
132
|
+
if (!await this.init())
|
|
133
|
+
return;
|
|
134
|
+
const current = await this.fetchProtectedBranches() || ['main', 'master'];
|
|
135
|
+
console.log(chalk_1.default.cyan('\n🛡️ Configure Protected Branches\n'));
|
|
136
|
+
console.log(chalk_1.default.gray('Current: ' + current.join(', ')));
|
|
137
|
+
console.log('');
|
|
138
|
+
const { action } = await inquirer_1.default.prompt([{
|
|
139
|
+
type: 'list',
|
|
140
|
+
name: 'action',
|
|
141
|
+
message: 'What would you like to do?',
|
|
142
|
+
choices: [
|
|
143
|
+
{ name: 'Keep current settings', value: 'keep' },
|
|
144
|
+
{ name: 'Add a branch', value: 'add' },
|
|
145
|
+
{ name: 'Remove a branch', value: 'remove' },
|
|
146
|
+
{ name: 'Replace all (set new list)', value: 'set' },
|
|
147
|
+
],
|
|
148
|
+
}]);
|
|
149
|
+
if (action === 'keep') {
|
|
150
|
+
console.log(chalk_1.default.green('✅ Settings unchanged'));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (action === 'add') {
|
|
154
|
+
const { branch } = await inquirer_1.default.prompt([{
|
|
155
|
+
type: 'input',
|
|
156
|
+
name: 'branch',
|
|
157
|
+
message: 'Branch name or pattern (e.g., release/*):',
|
|
158
|
+
validate: (input) => input.trim() ? true : 'Branch name required',
|
|
159
|
+
}]);
|
|
160
|
+
await this.branches({ add: branch });
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (action === 'remove') {
|
|
164
|
+
const { branch } = await inquirer_1.default.prompt([{
|
|
165
|
+
type: 'list',
|
|
166
|
+
name: 'branch',
|
|
167
|
+
message: 'Select branch to remove:',
|
|
168
|
+
choices: current,
|
|
169
|
+
}]);
|
|
170
|
+
await this.branches({ remove: branch });
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
if (action === 'set') {
|
|
174
|
+
const { branches } = await inquirer_1.default.prompt([{
|
|
175
|
+
type: 'input',
|
|
176
|
+
name: 'branches',
|
|
177
|
+
message: 'Enter branches (comma-separated):',
|
|
178
|
+
default: current.join(', '),
|
|
179
|
+
validate: (input) => input.trim() ? true : 'At least one branch required',
|
|
180
|
+
}]);
|
|
181
|
+
await this.branches({ set: branches });
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
async fetchProtectedBranches() {
|
|
186
|
+
try {
|
|
187
|
+
const response = await fetch(`${this.apiUrl}/settings/protected-branches`, {
|
|
188
|
+
headers: {
|
|
189
|
+
'X-API-Key': this.apiKey,
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
if (!response.ok) {
|
|
193
|
+
if (response.status === 404) {
|
|
194
|
+
return ['main', 'master']; // Default
|
|
195
|
+
}
|
|
196
|
+
console.error(chalk_1.default.red(`❌ Failed to fetch settings: ${response.status}`));
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
const data = await response.json();
|
|
200
|
+
return data.branches || ['main', 'master'];
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
console.error(chalk_1.default.red(`❌ Network error: ${error}`));
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
async updateProtectedBranches(branches) {
|
|
208
|
+
try {
|
|
209
|
+
const response = await fetch(`${this.apiUrl}/settings/protected-branches`, {
|
|
210
|
+
method: 'PUT',
|
|
211
|
+
headers: {
|
|
212
|
+
'X-API-Key': this.apiKey,
|
|
213
|
+
'Content-Type': 'application/json',
|
|
214
|
+
},
|
|
215
|
+
body: JSON.stringify({ branches }),
|
|
216
|
+
});
|
|
217
|
+
if (!response.ok) {
|
|
218
|
+
const error = await response.text();
|
|
219
|
+
console.error(chalk_1.default.red(`❌ Failed to update settings: ${error}`));
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
console.error(chalk_1.default.red(`❌ Network error: ${error}`));
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.SettingsCommand = SettingsCommand;
|
|
231
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/commands/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -151,6 +151,35 @@ function registerCommands(program) {
|
|
|
151
151
|
const { ConfigCommand } = await Promise.resolve().then(() => __importStar(require('./commands/config')));
|
|
152
152
|
await new ConfigCommand().slack(options);
|
|
153
153
|
});
|
|
154
|
+
// ─────────────────────────────────────────────────────────────────
|
|
155
|
+
// SETTINGS (Server-side configuration)
|
|
156
|
+
// ─────────────────────────────────────────────────────────────────
|
|
157
|
+
const settings = program
|
|
158
|
+
.command('settings')
|
|
159
|
+
.description('View or modify SafeRun server settings');
|
|
160
|
+
settings
|
|
161
|
+
.command('show')
|
|
162
|
+
.description('Show all server-side settings')
|
|
163
|
+
.action(async () => {
|
|
164
|
+
const { SettingsCommand } = await Promise.resolve().then(() => __importStar(require('./commands/settings')));
|
|
165
|
+
await new SettingsCommand().showAll();
|
|
166
|
+
});
|
|
167
|
+
settings
|
|
168
|
+
.command('branches')
|
|
169
|
+
.description('Configure protected branches')
|
|
170
|
+
.option('--set <branches>', 'Set protected branches (comma-separated)')
|
|
171
|
+
.option('--add <branch>', 'Add a branch to protected list')
|
|
172
|
+
.option('--remove <branch>', 'Remove a branch from protected list')
|
|
173
|
+
.action(async (options) => {
|
|
174
|
+
const { SettingsCommand } = await Promise.resolve().then(() => __importStar(require('./commands/settings')));
|
|
175
|
+
if (!options.set && !options.add && !options.remove) {
|
|
176
|
+
// No options - show current + usage
|
|
177
|
+
await new SettingsCommand().branches({});
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
await new SettingsCommand().branches(options);
|
|
181
|
+
}
|
|
182
|
+
});
|
|
154
183
|
// saferun shell-init - setup shell integration
|
|
155
184
|
program
|
|
156
185
|
.command('shell-init')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-commands.js","sourceRoot":"","sources":["../src/register-commands.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"register-commands.js","sourceRoot":"","sources":["../src/register-commands.ts"],"names":[],"mappings":"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"}
|