Skip to content

Commit 60c5af4

Browse files
committed
featrue
1 parent 04e63dd commit 60c5af4

2 files changed

Lines changed: 52 additions & 0 deletions

File tree

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { fetchApi } from '../../utils/fetchApi.js';
2+
3+
export async function runFeatureFlagsGet({ repo, v2 = false } = {}) {
4+
if (!repo) {
5+
const err = new Error('--repo is required');
6+
err.exitCode = 1;
7+
throw err;
8+
}
9+
const version = v2 ? 'v2' : 'v1';
10+
return fetchApi(`/extension/config/feature-flags/${version}/get`, 'POST', { repo });
11+
}
12+
13+
export async function runFeatureFlagsUpdate({ repo, flags, v2 = false } = {}) {
14+
if (!repo) {
15+
const err = new Error('--repo is required');
16+
err.exitCode = 1;
17+
throw err;
18+
}
19+
if (!flags) {
20+
const err = new Error('--flags is required');
21+
err.exitCode = 1;
22+
throw err;
23+
}
24+
let feature_flags;
25+
try {
26+
feature_flags = JSON.parse(flags);
27+
} catch {
28+
const err = new Error('--flags must be valid JSON (e.g. \'{"pr_review":"enable"}\')');
29+
err.exitCode = 1;
30+
throw err;
31+
}
32+
const version = v2 ? 'v2' : 'v1';
33+
return fetchApi(`/extension/config/feature-flags/${version}/update`, 'POST', { repo, feature_flags });
34+
}

‎src/commands/settings/index.js‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { runBranchesAll, runBranchesDefault, runBranchesUpdateDefault } from './branches.js';
2+
import { runFeatureFlagsGet, runFeatureFlagsUpdate } from './feature-flags.js';
23

34
/**
45
* Register all `codeant settings <verb>` subcommands.
@@ -41,4 +42,21 @@ export default function registerSettingsCommands(program, { runCmd }) {
4142
.requiredOption('--repo <repo>', 'Repository (owner/repo)')
4243
.requiredOption('--branch <name>', 'Branch name to set as default')
4344
.action((opts) => runCmd(() => runBranchesUpdateDefault({ repo: opts.repo, branch: opts.branch })));
45+
46+
// ── feature-flags get ──────────────────────────────────────────────────────
47+
settings
48+
.command('feature-flags-get')
49+
.description('Get feature flags for a repository')
50+
.requiredOption('--repo <repo>', 'Repository (owner/repo)')
51+
.option('--v2', 'Use v2 feature flags', false)
52+
.action((opts) => runCmd(() => runFeatureFlagsGet({ repo: opts.repo, v2: opts.v2 })));
53+
54+
// ── feature-flags update ───────────────────────────────────────────────────
55+
settings
56+
.command('feature-flags-update')
57+
.description('Update feature flags for a repository')
58+
.requiredOption('--repo <repo>', 'Repository (owner/repo)')
59+
.requiredOption('--flags <json>', 'Feature flags as a JSON string (e.g. \'{"pr_review":"enable"}\')')
60+
.option('--v2', 'Use v2 feature flags', false)
61+
.action((opts) => runCmd(() => runFeatureFlagsUpdate({ repo: opts.repo, flags: opts.flags, v2: opts.v2 })));
4462
}

0 commit comments

Comments
 (0)