sf-plugin-permission-sets 0.0.0-dev.74 → 0.0.0-dev.76
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 +24 -34
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,10 +23,10 @@ Stop clicking through Setup to grant access. Commit a YAML file, open a PR, let
|
|
|
23
23
|
- [Validations](#validations)
|
|
24
24
|
- [Commands](#commands)
|
|
25
25
|
- [GitHub Actions](#github-actions)
|
|
26
|
-
- [Inspiration & equivalents](#inspiration--equivalents)
|
|
27
26
|
- [Versioning](#versioning)
|
|
28
27
|
- [Architecture](#architecture)
|
|
29
28
|
- [Development](#development)
|
|
29
|
+
- [License](#license)
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
@@ -70,7 +70,7 @@ What the user behind `--target-org` needs:
|
|
|
70
70
|
| `sf ps export` | ✓ | ✓ | ✓ | - |
|
|
71
71
|
| `sf ps apply` | ✓ | ✓ | ✓ | ✓ |
|
|
72
72
|
|
|
73
|
-
✓ Required, - Not required.
|
|
73
|
+
✓ Required, - Not required. `Manage Users` is not required, not even for permission set licenses.
|
|
74
74
|
|
|
75
75
|
Two permission sets, so a pull request job cannot change the org:
|
|
76
76
|
|
|
@@ -237,8 +237,8 @@ Every run checks the files first. `check` runs the file checks with no org, and
|
|
|
237
237
|
| `sf ps check` | Static analysis of the files alone: schema, duplicates, conflicts, identifier shape. No org, no auth. |
|
|
238
238
|
| `sf ps validate` | Everything `check` does, plus resolving every user/permission set against the org. |
|
|
239
239
|
| `sf ps plan` | Compute and display the change set: a read-only preview of what `apply` would do. |
|
|
240
|
-
| `sf ps apply` | Reconcile the org. Honors `--mode`, prompts before deletes, enforces guardrails. |
|
|
241
240
|
| `sf ps export` | Generate YAML from the current org state to bootstrap adoption. |
|
|
241
|
+
| `sf ps apply` | Reconcile the org. Honors `--mode`, prompts before deletes, enforces guardrails. |
|
|
242
242
|
|
|
243
243
|
### `sf ps check`
|
|
244
244
|
|
|
@@ -331,27 +331,6 @@ Unchanged: 4 assignments (--show-unchanged to list).
|
|
|
331
331
|
Next: sf ps apply -o prod -f "permissions/*.yml" --mode sync
|
|
332
332
|
```
|
|
333
333
|
|
|
334
|
-
### `sf ps apply`
|
|
335
|
-
|
|
336
|
-
```
|
|
337
|
-
USAGE
|
|
338
|
-
$ sf ps apply -o <org> -f <glob>... [--mode <value>]
|
|
339
|
-
[--max-deletes <n>] [--dry-run] [--show-unchanged] [--no-prompt] [--json]
|
|
340
|
-
|
|
341
|
-
FLAGS
|
|
342
|
-
-o, --target-org=<org> (required)
|
|
343
|
-
-f, --file=<glob>... (required) YAML file(s) to read. Repeatable, globs expanded by the plugin.
|
|
344
|
-
--mode=<value> additive | destructive | sync [default: additive]
|
|
345
|
-
--max-deletes=<n> Abort if a run would remove more than n assignments. [default: 50]
|
|
346
|
-
--dry-run Resolve and diff, print what would happen, change nothing.
|
|
347
|
-
--show-unchanged List assignments that already match, instead of only counting them.
|
|
348
|
-
--no-prompt Skip the deletion confirmation prompt (for CI).
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
`apply` recomputes from the files every run: it re-reads the YAML, re-resolves every reference to an org id, and re-diffs against live state, then acts per `--mode`. Run `plan` shortly before `apply` so the preview you review reflects what `apply` will do (an edited file, a renamed permission set, or another admin's change between the two shifts the outcome).
|
|
352
|
-
|
|
353
|
-
Deletions always prompt for confirmation unless `--no-prompt` is set, and are hard-capped by `--max-deletes` so a bad merge can't unassign your whole org. DML is executed with the sObject Collections API and reports partial successes/failures per record.
|
|
354
|
-
|
|
355
334
|
### `sf ps export`
|
|
356
335
|
|
|
357
336
|
Read-only. Snapshots the org's current assignments as YAML you can commit and then feed back into the other commands. Writes to a file with `--output-file`, or to stdout when that flag is omitted.
|
|
@@ -391,6 +370,27 @@ sf ps export -o prod --output-file team.yml \
|
|
|
391
370
|
|
|
392
371
|
A requested `--user` that has no matching assignments (a typo, or a user who genuinely holds nothing in scope) is reported as a warning and the export continues with whoever matched, so a mistyped username never masquerades as a clean empty file.
|
|
393
372
|
|
|
373
|
+
### `sf ps apply`
|
|
374
|
+
|
|
375
|
+
```
|
|
376
|
+
USAGE
|
|
377
|
+
$ sf ps apply -o <org> -f <glob>... [--mode <value>]
|
|
378
|
+
[--max-deletes <n>] [--dry-run] [--show-unchanged] [--no-prompt] [--json]
|
|
379
|
+
|
|
380
|
+
FLAGS
|
|
381
|
+
-o, --target-org=<org> (required)
|
|
382
|
+
-f, --file=<glob>... (required) YAML file(s) to read. Repeatable, globs expanded by the plugin.
|
|
383
|
+
--mode=<value> additive | destructive | sync [default: additive]
|
|
384
|
+
--max-deletes=<n> Abort if a run would remove more than n assignments. [default: 50]
|
|
385
|
+
--dry-run Resolve and diff, print what would happen, change nothing.
|
|
386
|
+
--show-unchanged List assignments that already match, instead of only counting them.
|
|
387
|
+
--no-prompt Skip the deletion confirmation prompt (for CI).
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
`apply` recomputes from the files every run: it re-reads the YAML, re-resolves every reference to an org id, and re-diffs against live state, then acts per `--mode`. Run `plan` shortly before `apply` so the preview you review reflects what `apply` will do (an edited file, a renamed permission set, or another admin's change between the two shifts the outcome).
|
|
391
|
+
|
|
392
|
+
Deletions always prompt for confirmation unless `--no-prompt` is set, and are hard-capped by `--max-deletes` so a bad merge can't unassign your whole org. DML is executed with the sObject Collections API and reports partial successes/failures per record.
|
|
393
|
+
|
|
394
394
|
## GitHub Actions
|
|
395
395
|
|
|
396
396
|
Three small workflows that build on each other: check pull requests with no org at all, validate the same files against the real org, then apply on merge.
|
|
@@ -496,15 +496,6 @@ Workflows 2 and 3 share one secret. Get the auth URL once with `sf org display -
|
|
|
496
496
|
|
|
497
497
|
Want the diff on the PR before merging? Add a `sf ps plan --file "permissions/*.yml" --target-org prod` step to workflow 2, right after the login step, so reviewers see the change set that `apply` will carry out on merge.
|
|
498
498
|
|
|
499
|
-
## Inspiration & equivalents
|
|
500
|
-
|
|
501
|
-
This plugin's command surface borrows ideas from tools you already know:
|
|
502
|
-
|
|
503
|
-
- [Terraform](https://developer.hashicorp.com/terraform/docs)
|
|
504
|
-
- [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/)
|
|
505
|
-
- [AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/)
|
|
506
|
-
- [Salesforce CLI](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference.htm)
|
|
507
|
-
|
|
508
499
|
## Versioning
|
|
509
500
|
|
|
510
501
|
Releases follow [semantic versioning](https://semver.org). Snapshots are automatic, real releases are a manual decision.
|
|
@@ -585,7 +576,6 @@ cp .env.example .env
|
|
|
585
576
|
| --- | --- | --- |
|
|
586
577
|
| `PS_TARGET_ORG` | yes | Username or alias of an already-authenticated org. The `plan`, `apply`, and `export` specs run against it. |
|
|
587
578
|
|
|
588
|
-
|
|
589
579
|
## License
|
|
590
580
|
|
|
591
581
|
BSD-3-Clause © Isaac Ferreira
|
package/package.json
CHANGED