@kolatts/pncli 1.26.0 → 2.0.0
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/README.md +10 -7
- package/copilot-instructions.md +1 -36
- package/dist/chunk-HZF6WQPU.js +152 -0
- package/dist/chunk-HZF6WQPU.js.map +1 -0
- package/dist/{chunk-JOAWUILY.js → chunk-PXKUQPPF.js} +32 -17
- package/dist/chunk-PXKUQPPF.js.map +1 -0
- package/dist/{chunk-AGELHQKO.js → chunk-ZDJYOI3W.js} +103 -216
- package/dist/chunk-ZDJYOI3W.js.map +1 -0
- package/dist/cli.js +815 -357
- package/dist/cli.js.map +1 -1
- package/dist/{config-SQ3YHJHI.js → config-YHYQTGKT.js} +4 -2
- package/dist/{http-WCDXXCKQ.js → http-6QJU2SWP.js} +3 -2
- package/dist/output-XT3WT5L5.js +24 -0
- package/dist/output-XT3WT5L5.js.map +1 -0
- package/package.json +1 -1
- package/skills/pncli/SKILL.md +5 -2
- package/skills/pncli/figma.md +62 -0
- package/skills/pncli/jenkins.md +47 -0
- package/skills/pncli/openshift.md +23 -1
- package/skills/pncli/splitio.md +178 -0
- package/dist/chunk-AGELHQKO.js.map +0 -1
- package/dist/chunk-JOAWUILY.js.map +0 -1
- package/skills/pncli/udeploy.md +0 -48
- /package/dist/{config-SQ3YHJHI.js.map → config-YHYQTGKT.js.map} +0 -0
- /package/dist/{http-WCDXXCKQ.js.map → http-6QJU2SWP.js.map} +0 -0
|
@@ -4,19 +4,21 @@ import {
|
|
|
4
4
|
loadConfig,
|
|
5
5
|
loadJsonFile,
|
|
6
6
|
maskConfig,
|
|
7
|
+
normalizeBaseUrl,
|
|
7
8
|
setConfigValue,
|
|
8
9
|
setRepoConfigValue,
|
|
9
10
|
writeGlobalConfig,
|
|
10
11
|
writeRepoConfig
|
|
11
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-PXKUQPPF.js";
|
|
12
13
|
export {
|
|
13
14
|
getGlobalConfigPath,
|
|
14
15
|
loadConfig,
|
|
15
16
|
loadJsonFile,
|
|
16
17
|
maskConfig,
|
|
18
|
+
normalizeBaseUrl,
|
|
17
19
|
setConfigValue,
|
|
18
20
|
setRepoConfigValue,
|
|
19
21
|
writeGlobalConfig,
|
|
20
22
|
writeRepoConfig
|
|
21
23
|
};
|
|
22
|
-
//# sourceMappingURL=config-
|
|
24
|
+
//# sourceMappingURL=config-YHYQTGKT.js.map
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
HttpClient,
|
|
4
4
|
createHttpClient
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ZDJYOI3W.js";
|
|
6
|
+
import "./chunk-HZF6WQPU.js";
|
|
6
7
|
export {
|
|
7
8
|
HttpClient,
|
|
8
9
|
createHttpClient
|
|
9
10
|
};
|
|
10
|
-
//# sourceMappingURL=http-
|
|
11
|
+
//# sourceMappingURL=http-6QJU2SWP.js.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
debug,
|
|
4
|
+
fail,
|
|
5
|
+
isDebugEnabled,
|
|
6
|
+
log,
|
|
7
|
+
setGlobalOptions,
|
|
8
|
+
setGlobalUser,
|
|
9
|
+
success,
|
|
10
|
+
warn,
|
|
11
|
+
writeRawOutput
|
|
12
|
+
} from "./chunk-HZF6WQPU.js";
|
|
13
|
+
export {
|
|
14
|
+
debug,
|
|
15
|
+
fail,
|
|
16
|
+
isDebugEnabled,
|
|
17
|
+
log,
|
|
18
|
+
setGlobalOptions,
|
|
19
|
+
setGlobalUser,
|
|
20
|
+
success,
|
|
21
|
+
warn,
|
|
22
|
+
writeRawOutput
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=output-XT3WT5L5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
CHANGED
package/skills/pncli/SKILL.md
CHANGED
|
@@ -9,7 +9,9 @@ metadata:
|
|
|
9
9
|
services: config
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
pncli gives AI agents and humans unified CLI access to enterprise tools: Jira, Bitbucket, Confluence, SonarQube, SDElements, Azure DevOps, Jenkins, Artifactory,
|
|
12
|
+
pncli gives AI agents and humans unified CLI access to enterprise tools: Jira, Bitbucket, Confluence, SonarQube, SDElements, Azure DevOps, Jenkins, Artifactory, Checkmarx, ServiceNow, Contrast Security IAST, Sonatype IQ Server, OpenShift / Kubernetes, Dynatrace, LogScale, and Figma.
|
|
13
|
+
|
|
14
|
+
Every service authenticates the same way: a personal access token you generate in that tool's own UI and put in an env var or the config file. If a tool you need is missing from the table below, it is not out of scope by default — pncli covers enterprise tooling broadly, and the only hard requirement is personal-access-token auth.
|
|
13
15
|
|
|
14
16
|
## Two config levels
|
|
15
17
|
|
|
@@ -47,7 +49,6 @@ For detailed setup of any service, read the included file for that service.
|
|
|
47
49
|
| SonarQube | `sonarqube.md` | Code quality issues |
|
|
48
50
|
| SDElements | `sde.md` | Threat model tasks |
|
|
49
51
|
| Checkmarx | `checkmarx.md` | SAST findings |
|
|
50
|
-
| IBM UrbanCode Deploy | `udeploy.md` | Component versions, deployments |
|
|
51
52
|
| Jenkins | `jenkins.md` | Builds, job status |
|
|
52
53
|
| Artifactory | `artifactory.md` | Packages, repos |
|
|
53
54
|
| ServiceNow | `servicenow.md` | Change requests, incidents |
|
|
@@ -56,6 +57,8 @@ For detailed setup of any service, read the included file for that service.
|
|
|
56
57
|
| OpenShift / Kubernetes | `openshift.md` | Pod health, events, logs, metrics |
|
|
57
58
|
| Dynatrace | `dynatrace.md` | Services, entities, problems, traces, Kubernetes workloads |
|
|
58
59
|
| LogScale | `logscale.md` | Log queries, repository listing |
|
|
60
|
+
| Split.IO | `splitio.md` | Feature flag discovery, targeting updates, Change Requests |
|
|
61
|
+
| Figma | `figma.md` | Design files, comments, version history |
|
|
59
62
|
| Skills Marketplace | `marketplace.md` | Install org-internal skills |
|
|
60
63
|
|
|
61
64
|
## Setup walkthrough
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Figma
|
|
2
|
+
|
|
3
|
+
pncli uses the Figma REST API directly; no external CLI is required.
|
|
4
|
+
|
|
5
|
+
## Configuration
|
|
6
|
+
|
|
7
|
+
| Key | Environment variable | Purpose |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `figma.baseUrl` | `PNCLI_FIGMA_BASE_URL` | Figma API base URL — always `https://api.figma.com` |
|
|
10
|
+
| `figma.token` | `PNCLI_FIGMA_TOKEN` | Personal access token |
|
|
11
|
+
|
|
12
|
+
Generate a personal access token in Figma under **Account Settings → Personal access tokens**.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pncli config set figma.baseUrl https://api.figma.com
|
|
16
|
+
pncli config set figma.token <your-token>
|
|
17
|
+
pncli config test
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Finding a Figma file key
|
|
21
|
+
|
|
22
|
+
The file key is the alphanumeric segment in a Figma URL. Both URL formats are accepted:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
https://www.figma.com/design/ABCDEFGH1234/My-Design-Name
|
|
26
|
+
^^^^^^^^^^^^
|
|
27
|
+
https://www.figma.com/file/ABCDEFGH1234/My-Design-Name
|
|
28
|
+
^^^^^^^^^^^^
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
You can pass either the raw file key or the full URL to any `figma` command.
|
|
32
|
+
|
|
33
|
+
## Commands
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Get current user — useful for verifying credentials
|
|
37
|
+
pncli figma me
|
|
38
|
+
|
|
39
|
+
# Get file metadata and structure summary (component and style counts)
|
|
40
|
+
pncli figma file ABCDEFGH1234
|
|
41
|
+
pncli figma file "https://www.figma.com/design/ABCDEFGH1234/My-Design"
|
|
42
|
+
|
|
43
|
+
# Include the full document node tree (can be large)
|
|
44
|
+
pncli figma file ABCDEFGH1234 --document
|
|
45
|
+
|
|
46
|
+
# Get all comments on a file
|
|
47
|
+
pncli figma comments ABCDEFGH1234
|
|
48
|
+
|
|
49
|
+
# Get comments as of a specific point in time
|
|
50
|
+
pncli figma comments ABCDEFGH1234 --as-of 2026-08-01T00:00:00Z
|
|
51
|
+
|
|
52
|
+
# Get version history
|
|
53
|
+
pncli figma versions ABCDEFGH1234
|
|
54
|
+
|
|
55
|
+
# List files in a Figma project (project ID is visible in the project URL)
|
|
56
|
+
pncli figma project-files 123456789
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Notes
|
|
60
|
+
|
|
61
|
+
- `figma file` returns a summary by default: name, last-modified, version, thumbnail URL, role, editor type, schema version, and counts of components and styles. Pass `--document` to include the full document node tree (this can be very large for complex designs).
|
|
62
|
+
- Passing a Figma image (screenshot or export) rather than a link is **not supported** — pncli works with the Figma REST API only, not image analysis. Use the file key or URL instead.
|
package/skills/pncli/jenkins.md
CHANGED
|
@@ -49,3 +49,50 @@ pncli config set --repo defaults.jenkins.baseUrl https://jenkins.myteam.imagile.
|
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
Resolution order (highest to lowest): project `.pncli.json` → global config → `PNCLI_JENKINS_BASE_URL` env var.
|
|
52
|
+
|
|
53
|
+
## Multiple Jenkins instances
|
|
54
|
+
|
|
55
|
+
When you work with more than one Jenkins controller (e.g. a stable production instance plus ephemeral pipeline-as-code instances), add a `jenkinsInstances` array to your global config:
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"jenkinsInstances": [
|
|
60
|
+
{
|
|
61
|
+
"name": "prod",
|
|
62
|
+
"baseUrl": "https://jenkins.imagile.dev",
|
|
63
|
+
"username": "you@example.com",
|
|
64
|
+
"apiToken": "abc12345"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "ephemeral",
|
|
68
|
+
"baseUrl": "https://jenkins-tmp.imagile.dev",
|
|
69
|
+
"username": "you@example.com",
|
|
70
|
+
"apiToken": "abc12345"
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Manage the array with the `instance` subcommands, which append rather than replace:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
pncli jenkins instance add --name prod --base-url jenkins.imagile.dev --username you@example.com --api-token abc12345
|
|
80
|
+
pncli jenkins instance add --name ephemeral --base-url jenkins-tmp.imagile.dev --username you@example.com
|
|
81
|
+
pncli jenkins instance list
|
|
82
|
+
pncli jenkins instance remove --name ephemeral
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Omit `--api-token` on an interactive terminal and pncli prompts for it, which keeps the token out of your shell history. `instance list` masks every token as `***`. Adding a name that already exists is rejected unless you pass `--force`, which overwrites that entry in place.
|
|
86
|
+
|
|
87
|
+
`pncli config set jenkinsInstances '[...]'` also works, but it **replaces** the whole array — you must re-supply every instance you want to keep, including tokens that `config check` masks. Prefer `instance add`.
|
|
88
|
+
|
|
89
|
+
Then select an instance at run-time with `--instance`:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
pncli jenkins --instance ephemeral pipeline list
|
|
93
|
+
pncli jenkins --instance prod pipeline run --name my-job --wait
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
When `--instance` is omitted, pncli uses the default `jenkins.*` config as usual.
|
|
97
|
+
|
|
98
|
+
**Note:** Per-instance credentials are read only from the global config file — there is no env-var override for a named instance. To override Jenkins credentials at runtime (CI/CD, GitHub Actions), use the default `jenkins.*` config with `PNCLI_JENKINS_BASE_URL`, `PNCLI_JENKINS_USERNAME`, and `PNCLI_JENKINS_API_TOKEN`, and omit `--instance`.
|
|
@@ -85,6 +85,27 @@ pncli openshift pod-metrics --namespace my-namespace
|
|
|
85
85
|
Returns per-pod, per-container CPU and memory usage. Requires the metrics-server to be
|
|
86
86
|
installed in the cluster (`GET /apis/metrics.k8s.io/v1beta1/...`).
|
|
87
87
|
|
|
88
|
+
### Get combined resource usage, limits, and requests
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
pncli openshift resource-usage --namespace my-namespace
|
|
92
|
+
pncli openshift resource-usage --namespace my-namespace --label-selector app=my-app
|
|
93
|
+
pncli openshift resource-usage --namespace my-namespace --csv
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Fetches pod specs (limits/requests) and metrics-server usage in parallel, joins them by
|
|
97
|
+
pod + container, and normalizes all values to **millicores (m)** for CPU and **mebibytes (Mi)**
|
|
98
|
+
for memory. Pods without metrics (e.g. not Running) appear with empty usage columns.
|
|
99
|
+
|
|
100
|
+
Use `--csv` to emit a spreadsheet-ready CSV suitable for Excel:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Pod,Container,CPU Usage (m),Memory Usage (Mi),CPU Limits (m),Memory Limits (Mi),CPU Requests (m),Memory Requests (Mi)
|
|
104
|
+
my-pod-abc,app,45,128,500,256,100,128
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Requires the metrics-server (`GET /apis/metrics.k8s.io/v1beta1/...`) — same as `pod-metrics`.
|
|
108
|
+
|
|
88
109
|
## Test connectivity
|
|
89
110
|
|
|
90
111
|
```bash
|
|
@@ -93,7 +114,8 @@ pncli config test
|
|
|
93
114
|
|
|
94
115
|
## Minimum RBAC permissions
|
|
95
116
|
|
|
96
|
-
The service account needs read access to pods, events, logs, and metrics in the target namespace
|
|
117
|
+
The service account needs read access to pods, events, logs, and metrics in the target namespace.
|
|
118
|
+
`resource-usage` requires the same metrics-server permission as `pod-metrics`:
|
|
97
119
|
|
|
98
120
|
```yaml
|
|
99
121
|
rules:
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Split.IO
|
|
2
|
+
|
|
3
|
+
pncli uses the Split Admin API v2 directly; no external CLI is required.
|
|
4
|
+
|
|
5
|
+
## Configuration
|
|
6
|
+
|
|
7
|
+
| Key | Environment variable | Purpose |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `splitio.baseUrl` | `PNCLI_SPLITIO_BASE_URL` | Split Admin API base URL, such as `https://api.split.io` |
|
|
10
|
+
| `splitio.adminApiKey` | `PNCLI_SPLITIO_ADMIN_API_KEY` | Admin API key generated in the Split UI |
|
|
11
|
+
|
|
12
|
+
Generate an Admin API key in the Split UI under **Admin Settings → API Keys → Admin**.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pncli config set splitio.baseUrl https://api.split.io
|
|
16
|
+
pncli config set splitio.adminApiKey <your-admin-api-key>
|
|
17
|
+
pncli config test
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Change Controls
|
|
21
|
+
|
|
22
|
+
Every write command submits a **Change Request** (CR) rather than modifying flag definitions directly. Each CR requires:
|
|
23
|
+
|
|
24
|
+
| Flag | Required | Description |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| `--mnemonic` | Yes | Short title for the CR (appears in the Split UI) |
|
|
27
|
+
| `--description` | Yes | Longer description of the intent |
|
|
28
|
+
| `--change-number` | Yes | ServiceNow change ticket (e.g. `CHG0001234`) |
|
|
29
|
+
| `--approvers` | Situational | Comma-separated Split user IDs for non-production approvals |
|
|
30
|
+
| `--yes` | Optional | Skip interactive confirmation (for CI/CD pipelines) |
|
|
31
|
+
|
|
32
|
+
All write commands prompt for confirmation unless `--yes` is supplied. The `--dry-run` flag prints the request body without sending it.
|
|
33
|
+
|
|
34
|
+
## Commands
|
|
35
|
+
|
|
36
|
+
### Discovery
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# List all workspaces
|
|
40
|
+
pncli splitio workspaces list
|
|
41
|
+
|
|
42
|
+
# List environments in a workspace
|
|
43
|
+
pncli splitio environments list --workspace <wsId>
|
|
44
|
+
|
|
45
|
+
# List feature flags in a workspace (paginated)
|
|
46
|
+
pncli splitio flags list --workspace <wsId>
|
|
47
|
+
pncli splitio flags list --workspace <wsId> --limit 100 --offset 0
|
|
48
|
+
pncli splitio flags list --workspace <wsId> --flag-set my-flag-set
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Inspect
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Get a flag's global definition (treatments, traffic type, tags)
|
|
55
|
+
pncli splitio flags get --workspace <wsId> --flag my-feature
|
|
56
|
+
|
|
57
|
+
# Get a flag's full definition including targeting rules for one environment
|
|
58
|
+
pncli splitio flags get --workspace <wsId> --flag my-feature --environment <envId>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Update (full definition replacement)
|
|
62
|
+
|
|
63
|
+
Provide the complete flag definition as JSON via `--input-file`. Use `pncli splitio flags get --environment` to retrieve the current definition before editing it.
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pncli splitio flags update \
|
|
67
|
+
--workspace <wsId> --flag my-feature --environment <envId> \
|
|
68
|
+
--mnemonic "SPLIT-001" --description "Enable feature for all users" \
|
|
69
|
+
--change-number CHG0001234 --approvers "user-id-1,user-id-2" \
|
|
70
|
+
--input-file definition.json
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
The file must contain the full definition object (treatments, rules, defaultRule, etc.).
|
|
74
|
+
|
|
75
|
+
### Change one rule
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Route all traffic in rule 0 to one treatment
|
|
79
|
+
pncli splitio flags set-rule \
|
|
80
|
+
--workspace <wsId> --flag my-feature --environment <envId> \
|
|
81
|
+
--rule-index 0 --treatment on \
|
|
82
|
+
--mnemonic "SPLIT-002" --description "Route beta users to on" \
|
|
83
|
+
--change-number CHG0001234
|
|
84
|
+
|
|
85
|
+
# Weighted distribution for rule 1
|
|
86
|
+
pncli splitio flags set-rule \
|
|
87
|
+
--workspace <wsId> --flag my-feature --environment <envId> \
|
|
88
|
+
--rule-index 1 --weights '[{"treatment":"on","size":80000},{"treatment":"off","size":20000}]' \
|
|
89
|
+
--mnemonic "SPLIT-003" --description "80/20 split for rule 1" \
|
|
90
|
+
--change-number CHG0001234
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Change default rule
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
pncli splitio flags set-default \
|
|
97
|
+
--workspace <wsId> --flag my-feature --environment <envId> \
|
|
98
|
+
--treatment off \
|
|
99
|
+
--mnemonic "SPLIT-004" --description "Default traffic to off" \
|
|
100
|
+
--change-number CHG0001234
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Kill and restore
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Kill a flag (forces all traffic to the default treatment)
|
|
107
|
+
pncli splitio flags kill \
|
|
108
|
+
--workspace <wsId> --flag my-feature --environment <envId> \
|
|
109
|
+
--mnemonic "SPLIT-005" --description "Emergency kill for incident INC0001234" \
|
|
110
|
+
--change-number CHG0001234 --yes
|
|
111
|
+
|
|
112
|
+
# Restore a killed flag
|
|
113
|
+
pncli splitio flags restore \
|
|
114
|
+
--workspace <wsId> --flag my-feature --environment <envId> \
|
|
115
|
+
--mnemonic "SPLIT-006" --description "Restore after incident resolved" \
|
|
116
|
+
--change-number CHG0001234
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Archive a flag
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
pncli splitio flags archive \
|
|
123
|
+
--workspace <wsId> --flag my-old-feature \
|
|
124
|
+
--mnemonic "SPLIT-007" --description "Flag is fully rolled out, cleaning up" \
|
|
125
|
+
--change-number CHG0001234
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Toggle a single flag
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Disable
|
|
132
|
+
pncli splitio flags toggle \
|
|
133
|
+
--workspace <wsId> --flag my-feature --environment <envId> \
|
|
134
|
+
--enabled false \
|
|
135
|
+
--mnemonic "SPLIT-008" --description "Disable for maintenance" \
|
|
136
|
+
--change-number CHG0001234
|
|
137
|
+
|
|
138
|
+
# Enable
|
|
139
|
+
pncli splitio flags toggle \
|
|
140
|
+
--workspace <wsId> --flag my-feature --environment <envId> \
|
|
141
|
+
--enabled true \
|
|
142
|
+
--mnemonic "SPLIT-009" --description "Re-enable after maintenance" \
|
|
143
|
+
--change-number CHG0001234
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Batch-toggle from a file
|
|
147
|
+
|
|
148
|
+
Failures do not stop remaining entries. Each flag creates its own Change Request.
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# toggles.json:
|
|
152
|
+
# [
|
|
153
|
+
# { "flag": "feature-a", "enabled": false },
|
|
154
|
+
# { "flag": "feature-b", "enabled": true }
|
|
155
|
+
# ]
|
|
156
|
+
|
|
157
|
+
pncli splitio flags batch-toggle \
|
|
158
|
+
--workspace <wsId> --environment <envId> \
|
|
159
|
+
--mnemonic "SPLIT-010" --description "Maintenance window toggles" \
|
|
160
|
+
--change-number CHG0001234 --yes \
|
|
161
|
+
--input-file toggles.json
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Change Request tracking
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# List all CRs for a workspace
|
|
168
|
+
pncli splitio change-requests list --workspace <wsId>
|
|
169
|
+
|
|
170
|
+
# Filter by environment and status
|
|
171
|
+
pncli splitio change-requests list --workspace <wsId> \
|
|
172
|
+
--environment <envId> --status REQUESTED
|
|
173
|
+
|
|
174
|
+
# Retrieve a specific CR
|
|
175
|
+
pncli splitio change-requests get --id <crId>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Valid status values:** `REQUESTED`, `APPROVED`, `REJECTED`, `PUBLISHED`
|