ssot-cli 0.1.6.dev1__tar.gz → 0.1.8__tar.gz
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.
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/PKG-INFO +7 -4
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/README.md +4 -1
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/pyproject.toml +3 -3
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/adr_cmd.py +3 -2
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/boundary_cmd.py +3 -2
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/claim_cmd.py +3 -2
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/common.py +4 -0
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/evidence_cmd.py +3 -2
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/feature_cmd.py +3 -2
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/issue_cmd.py +3 -2
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/profile_cmd.py +3 -2
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/registry_cmd.py +14 -1
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/release_cmd.py +3 -2
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/risk_cmd.py +3 -2
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/spec_cmd.py +3 -2
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/test_cmd.py +3 -2
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli.egg-info/PKG-INFO +7 -4
- ssot_cli-0.1.8/src/ssot_cli.egg-info/requires.txt +5 -0
- ssot_cli-0.1.6.dev1/src/ssot_cli.egg-info/requires.txt +0 -5
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/setup.cfg +0 -0
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/__init__.py +0 -0
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/graph_cmd.py +0 -0
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/init_cmd.py +0 -0
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/main.py +0 -0
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/upgrade_cmd.py +0 -0
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli/validate_cmd.py +0 -0
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli.egg-info/SOURCES.txt +0 -0
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli.egg-info/dependency_links.txt +0 -0
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli.egg-info/entry_points.txt +0 -0
- {ssot_cli-0.1.6.dev1 → ssot_cli-0.1.8}/src/ssot_cli.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssot-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.8
|
|
4
4
|
Summary: Primary CLI distribution for ssot-registry.
|
|
5
5
|
Author-email: Jacob Stewart <jacob@swarmauri.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -24,8 +24,8 @@ Classifier: Topic :: Software Development :: Quality Assurance
|
|
|
24
24
|
Classifier: Topic :: Utilities
|
|
25
25
|
Requires-Python: <3.14,>=3.10
|
|
26
26
|
Description-Content-Type: text/markdown
|
|
27
|
-
Requires-Dist: ssot-contracts<0.3.0,>=0.2.
|
|
28
|
-
Requires-Dist: ssot-core<0.3.0,>=0.2.
|
|
27
|
+
Requires-Dist: ssot-contracts<0.3.0,>=0.2.13
|
|
28
|
+
Requires-Dist: ssot-core<0.3.0,>=0.2.13
|
|
29
29
|
Requires-Dist: tomli>=2.0.1; python_version < "3.11"
|
|
30
30
|
|
|
31
31
|
<div align="center">
|
|
@@ -803,7 +803,7 @@ ssot-registry release revoke [path]
|
|
|
803
803
|
|
|
804
804
|
Subcommands:
|
|
805
805
|
|
|
806
|
-
- `export`
|
|
806
|
+
- `export`, `sync-statuses`
|
|
807
807
|
|
|
808
808
|
```text
|
|
809
809
|
ssot-registry graph export [path]
|
|
@@ -821,6 +821,9 @@ Subcommands:
|
|
|
821
821
|
ssot-registry registry export [path]
|
|
822
822
|
--format {json,csv,df,yaml,toml} (required)
|
|
823
823
|
--output OUTPUT
|
|
824
|
+
|
|
825
|
+
ssot-registry registry sync-statuses [path]
|
|
826
|
+
--dry-run
|
|
824
827
|
```
|
|
825
828
|
|
|
826
829
|
## Example workflows
|
|
@@ -773,7 +773,7 @@ ssot-registry release revoke [path]
|
|
|
773
773
|
|
|
774
774
|
Subcommands:
|
|
775
775
|
|
|
776
|
-
- `export`
|
|
776
|
+
- `export`, `sync-statuses`
|
|
777
777
|
|
|
778
778
|
```text
|
|
779
779
|
ssot-registry graph export [path]
|
|
@@ -791,6 +791,9 @@ Subcommands:
|
|
|
791
791
|
ssot-registry registry export [path]
|
|
792
792
|
--format {json,csv,df,yaml,toml} (required)
|
|
793
793
|
--output OUTPUT
|
|
794
|
+
|
|
795
|
+
ssot-registry registry sync-statuses [path]
|
|
796
|
+
--dry-run
|
|
794
797
|
```
|
|
795
798
|
|
|
796
799
|
## Example workflows
|
|
@@ -4,15 +4,15 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ssot-cli"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.8"
|
|
8
8
|
description = "Primary CLI distribution for ssot-registry."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10,<3.14"
|
|
11
11
|
license = "Apache-2.0"
|
|
12
12
|
authors = [{ name = "Jacob Stewart", email = "jacob@swarmauri.com" }]
|
|
13
13
|
dependencies = [
|
|
14
|
-
"ssot-contracts>=0.2.
|
|
15
|
-
"ssot-core>=0.2.
|
|
14
|
+
"ssot-contracts>=0.2.13,<0.3.0",
|
|
15
|
+
"ssot-core>=0.2.13,<0.3.0",
|
|
16
16
|
"tomli>=2.0.1; python_version < '3.11'",
|
|
17
17
|
]
|
|
18
18
|
keywords = ["ssot", "cli", "registry", "governance", "release-management", "validation", "developer-tools"]
|
|
@@ -14,7 +14,7 @@ from ssot_registry.api import (
|
|
|
14
14
|
supersede_documents,
|
|
15
15
|
update_document,
|
|
16
16
|
)
|
|
17
|
-
from ssot_cli.common import add_path_argument, compact_dict
|
|
17
|
+
from ssot_cli.common import add_ids_argument, add_path_argument, compact_dict
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
def register_adr(subparsers: argparse._SubParsersAction) -> None:
|
|
@@ -49,6 +49,7 @@ def register_adr(subparsers: argparse._SubParsersAction) -> None:
|
|
|
49
49
|
|
|
50
50
|
list_cmd = adr_sub.add_parser("list", help="List ADRs.", description="List ADR documents currently known to the registry.")
|
|
51
51
|
add_path_argument(list_cmd)
|
|
52
|
+
add_ids_argument(list_cmd, help_text="ADR ids to include in the list output.")
|
|
52
53
|
list_cmd.set_defaults(func=run_list)
|
|
53
54
|
|
|
54
55
|
update = adr_sub.add_parser(
|
|
@@ -131,7 +132,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
|
|
|
131
132
|
|
|
132
133
|
|
|
133
134
|
def run_list(args: argparse.Namespace) -> dict[str, object]:
|
|
134
|
-
return list_documents(args.path, "adr")
|
|
135
|
+
return list_documents(args.path, "adr", ids=args.ids)
|
|
135
136
|
|
|
136
137
|
|
|
137
138
|
def run_update(args: argparse.Namespace) -> dict[str, object]:
|
|
@@ -14,7 +14,7 @@ from ssot_registry.api import (
|
|
|
14
14
|
remove_boundary_profiles,
|
|
15
15
|
update_entity,
|
|
16
16
|
)
|
|
17
|
-
from ssot_cli.common import add_optional_bool_argument, add_path_argument, compact_dict
|
|
17
|
+
from ssot_cli.common import add_ids_argument, add_optional_bool_argument, add_path_argument, compact_dict
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
def register_boundary(subparsers: argparse._SubParsersAction) -> None:
|
|
@@ -42,6 +42,7 @@ def register_boundary(subparsers: argparse._SubParsersAction) -> None:
|
|
|
42
42
|
|
|
43
43
|
list_cmd = boundary_sub.add_parser("list", help="List boundaries.", description="List boundary records currently known to the registry.")
|
|
44
44
|
add_path_argument(list_cmd)
|
|
45
|
+
add_ids_argument(list_cmd, help_text="Boundary ids to include in the list output.")
|
|
45
46
|
list_cmd.set_defaults(func=run_list)
|
|
46
47
|
|
|
47
48
|
update = boundary_sub.add_parser("update", help="Edit boundary metadata.", description="Update mutable boundary fields without changing the feature or profile membership lists.")
|
|
@@ -104,7 +105,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
|
|
|
104
105
|
|
|
105
106
|
|
|
106
107
|
def run_list(args: argparse.Namespace) -> dict[str, object]:
|
|
107
|
-
return list_entities(args.path, "boundaries")
|
|
108
|
+
return list_entities(args.path, "boundaries", ids=args.ids)
|
|
108
109
|
|
|
109
110
|
|
|
110
111
|
def run_update(args: argparse.Namespace) -> dict[str, object]:
|
|
@@ -14,7 +14,7 @@ from ssot_registry.api import (
|
|
|
14
14
|
unlink_entities,
|
|
15
15
|
update_entity,
|
|
16
16
|
)
|
|
17
|
-
from ssot_cli.common import add_path_argument, collect_list_fields, compact_dict
|
|
17
|
+
from ssot_cli.common import add_ids_argument, add_path_argument, collect_list_fields, compact_dict
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
_LINK_MAPPING = {
|
|
@@ -52,6 +52,7 @@ def register_claim(subparsers: argparse._SubParsersAction) -> None:
|
|
|
52
52
|
|
|
53
53
|
list_cmd = claim_sub.add_parser("list", help="List claims.", description="List claim records currently known to the registry.")
|
|
54
54
|
add_path_argument(list_cmd)
|
|
55
|
+
add_ids_argument(list_cmd, help_text="Claim ids to include in the list output.")
|
|
55
56
|
list_cmd.set_defaults(func=run_list)
|
|
56
57
|
|
|
57
58
|
update = claim_sub.add_parser("update", help="Edit claim metadata.", description="Update mutable claim fields without changing its linked support graph.")
|
|
@@ -128,7 +129,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
|
|
|
128
129
|
|
|
129
130
|
|
|
130
131
|
def run_list(args: argparse.Namespace) -> dict[str, object]:
|
|
131
|
-
return list_entities(args.path, "claims")
|
|
132
|
+
return list_entities(args.path, "claims", ids=args.ids)
|
|
132
133
|
|
|
133
134
|
|
|
134
135
|
def run_update(args: argparse.Namespace) -> dict[str, object]:
|
|
@@ -17,6 +17,10 @@ def add_id_argument(parser: argparse.ArgumentParser, flag: str = "--id", *, dest
|
|
|
17
17
|
parser.add_argument(flag, dest=dest, required=True, help=help_text)
|
|
18
18
|
|
|
19
19
|
|
|
20
|
+
def add_ids_argument(parser: argparse.ArgumentParser, flag: str = "--ids", *, dest: str | None = None, help_text: str = "Normalized ids.") -> None:
|
|
21
|
+
parser.add_argument(flag, dest=dest, nargs="+", default=None, help=help_text)
|
|
22
|
+
|
|
23
|
+
|
|
20
24
|
def add_optional_bool_argument(
|
|
21
25
|
parser: argparse.ArgumentParser,
|
|
22
26
|
name: str,
|
|
@@ -12,7 +12,7 @@ from ssot_registry.api import (
|
|
|
12
12
|
update_entity,
|
|
13
13
|
verify_evidence_rows,
|
|
14
14
|
)
|
|
15
|
-
from ssot_cli.common import add_path_argument, collect_list_fields, compact_dict
|
|
15
|
+
from ssot_cli.common import add_ids_argument, add_path_argument, collect_list_fields, compact_dict
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
_LINK_MAPPING = {
|
|
@@ -48,6 +48,7 @@ def register_evidence(subparsers: argparse._SubParsersAction) -> None:
|
|
|
48
48
|
|
|
49
49
|
list_cmd = evidence_sub.add_parser("list", help="List evidence rows.", description="List evidence artifacts currently known to the registry.")
|
|
50
50
|
add_path_argument(list_cmd)
|
|
51
|
+
add_ids_argument(list_cmd, help_text="Evidence ids to include in the list output.")
|
|
51
52
|
list_cmd.set_defaults(func=run_list)
|
|
52
53
|
|
|
53
54
|
update = evidence_sub.add_parser("update", help="Edit evidence metadata.", description="Update mutable evidence fields without changing its link graph.")
|
|
@@ -111,7 +112,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
|
|
|
111
112
|
|
|
112
113
|
|
|
113
114
|
def run_list(args: argparse.Namespace) -> dict[str, object]:
|
|
114
|
-
return list_entities(args.path, "evidence")
|
|
115
|
+
return list_entities(args.path, "evidence", ids=args.ids)
|
|
115
116
|
|
|
116
117
|
|
|
117
118
|
def run_update(args: argparse.Namespace) -> dict[str, object]:
|
|
@@ -14,7 +14,7 @@ from ssot_registry.api import (
|
|
|
14
14
|
unlink_entities,
|
|
15
15
|
update_entity,
|
|
16
16
|
)
|
|
17
|
-
from ssot_cli.common import add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
|
|
17
|
+
from ssot_cli.common import add_ids_argument, add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
_LINK_MAPPING = {
|
|
@@ -63,6 +63,7 @@ def register_feature(subparsers: argparse._SubParsersAction) -> None:
|
|
|
63
63
|
|
|
64
64
|
list_cmd = feature_sub.add_parser("list", help="List features.", description="List feature records currently known to the registry.")
|
|
65
65
|
add_path_argument(list_cmd)
|
|
66
|
+
add_ids_argument(list_cmd, help_text="Feature ids to include in the list output.")
|
|
66
67
|
list_cmd.set_defaults(func=run_list)
|
|
67
68
|
|
|
68
69
|
update = feature_sub.add_parser("update", help="Edit feature metadata.", description="Update mutable feature fields without changing links or planning state.")
|
|
@@ -164,7 +165,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
|
|
|
164
165
|
|
|
165
166
|
|
|
166
167
|
def run_list(args: argparse.Namespace) -> dict[str, object]:
|
|
167
|
-
return list_entities(args.path, "features")
|
|
168
|
+
return list_entities(args.path, "features", ids=args.ids)
|
|
168
169
|
|
|
169
170
|
|
|
170
171
|
def run_update(args: argparse.Namespace) -> dict[str, object]:
|
|
@@ -13,7 +13,7 @@ from ssot_registry.api import (
|
|
|
13
13
|
unlink_entities,
|
|
14
14
|
update_entity,
|
|
15
15
|
)
|
|
16
|
-
from ssot_cli.common import add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
|
|
16
|
+
from ssot_cli.common import add_ids_argument, add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
_LINK_MAPPING = {
|
|
@@ -57,6 +57,7 @@ def register_issue(subparsers: argparse._SubParsersAction) -> None:
|
|
|
57
57
|
|
|
58
58
|
list_cmd = issue_sub.add_parser("list", help="List issues.", description="List issue records currently known to the registry.")
|
|
59
59
|
add_path_argument(list_cmd)
|
|
60
|
+
add_ids_argument(list_cmd, help_text="Issue ids to include in the list output.")
|
|
60
61
|
list_cmd.set_defaults(func=run_list)
|
|
61
62
|
|
|
62
63
|
update = issue_sub.add_parser("update", help="Edit issue metadata.", description="Update mutable issue fields without changing links or plan assignments.")
|
|
@@ -146,7 +147,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
|
|
|
146
147
|
|
|
147
148
|
|
|
148
149
|
def run_list(args: argparse.Namespace) -> dict[str, object]:
|
|
149
|
-
return list_entities(args.path, "issues")
|
|
150
|
+
return list_entities(args.path, "issues", ids=args.ids)
|
|
150
151
|
|
|
151
152
|
|
|
152
153
|
def run_update(args: argparse.Namespace) -> dict[str, object]:
|
|
@@ -12,7 +12,7 @@ from ssot_registry.api import (
|
|
|
12
12
|
unlink_entities,
|
|
13
13
|
update_entity,
|
|
14
14
|
)
|
|
15
|
-
from ssot_cli.common import add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
|
|
15
|
+
from ssot_cli.common import add_ids_argument, add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
|
|
16
16
|
|
|
17
17
|
_LINK_MAPPING = {
|
|
18
18
|
"feature_ids": "feature_ids",
|
|
@@ -53,6 +53,7 @@ def register_profile(subparsers: argparse._SubParsersAction) -> None:
|
|
|
53
53
|
|
|
54
54
|
list_cmd = profile_sub.add_parser("list", help="List profiles.", description="List profile records currently known to the registry.")
|
|
55
55
|
add_path_argument(list_cmd)
|
|
56
|
+
add_ids_argument(list_cmd, help_text="Profile ids to include in the list output.")
|
|
56
57
|
list_cmd.set_defaults(func=run_list)
|
|
57
58
|
|
|
58
59
|
update = profile_sub.add_parser("update", help="Edit profile metadata.", description="Update mutable profile fields without changing its link graph.")
|
|
@@ -128,7 +129,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
|
|
|
128
129
|
|
|
129
130
|
|
|
130
131
|
def run_list(args: argparse.Namespace) -> dict[str, object]:
|
|
131
|
-
return list_entities(args.path, "profiles")
|
|
132
|
+
return list_entities(args.path, "profiles", ids=args.ids)
|
|
132
133
|
|
|
133
134
|
|
|
134
135
|
def run_update(args: argparse.Namespace) -> dict[str, object]:
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import argparse
|
|
4
4
|
|
|
5
|
-
from ssot_registry.api import export_registry
|
|
5
|
+
from ssot_registry.api import export_registry, sync_automated_statuses
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def register_registry(subparsers: argparse._SubParsersAction) -> None:
|
|
@@ -23,6 +23,19 @@ def register_registry(subparsers: argparse._SubParsersAction) -> None:
|
|
|
23
23
|
export.add_argument("--output", default=None, help="Destination file path. Defaults under `.ssot/exports`.")
|
|
24
24
|
export.set_defaults(func=run_export)
|
|
25
25
|
|
|
26
|
+
sync_statuses = registry_sub.add_parser(
|
|
27
|
+
"sync-statuses",
|
|
28
|
+
help="Derive and persist automated statuses.",
|
|
29
|
+
description="Recompute profile, feature, test, claim, and evidence statuses from registry links and local artifact paths.",
|
|
30
|
+
)
|
|
31
|
+
sync_statuses.add_argument("path", nargs="?", default=".", help="Repository root or registry file to update.")
|
|
32
|
+
sync_statuses.add_argument("--dry-run", action="store_true", help="Report proposed status changes without saving them.")
|
|
33
|
+
sync_statuses.set_defaults(func=run_sync_statuses)
|
|
34
|
+
|
|
26
35
|
|
|
27
36
|
def run_export(args: argparse.Namespace) -> dict[str, object]:
|
|
28
37
|
return export_registry(path=args.path, output_format=args.format, output=args.output)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def run_sync_statuses(args: argparse.Namespace) -> dict[str, object]:
|
|
41
|
+
return sync_automated_statuses(path=args.path, dry_run=args.dry_run)
|
|
@@ -17,7 +17,7 @@ from ssot_registry.api import (
|
|
|
17
17
|
revoke_release,
|
|
18
18
|
update_entity,
|
|
19
19
|
)
|
|
20
|
-
from ssot_cli.common import add_path_argument, compact_dict
|
|
20
|
+
from ssot_cli.common import add_ids_argument, add_path_argument, compact_dict
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
def register_release(subparsers: argparse._SubParsersAction) -> None:
|
|
@@ -45,6 +45,7 @@ def register_release(subparsers: argparse._SubParsersAction) -> None:
|
|
|
45
45
|
|
|
46
46
|
list_cmd = release_sub.add_parser("list", help="List releases.", description="List release records currently known to the registry.")
|
|
47
47
|
add_path_argument(list_cmd)
|
|
48
|
+
add_ids_argument(list_cmd, help_text="Release ids to include in the list output.")
|
|
48
49
|
list_cmd.set_defaults(func=run_list)
|
|
49
50
|
|
|
50
51
|
update = release_sub.add_parser("update", help="Edit release metadata.", description="Update mutable release fields without changing its claim or evidence membership lists.")
|
|
@@ -124,7 +125,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
|
|
|
124
125
|
|
|
125
126
|
|
|
126
127
|
def run_list(args: argparse.Namespace) -> dict[str, object]:
|
|
127
|
-
return list_entities(args.path, "releases")
|
|
128
|
+
return list_entities(args.path, "releases", ids=args.ids)
|
|
128
129
|
|
|
129
130
|
|
|
130
131
|
def run_update(args: argparse.Namespace) -> dict[str, object]:
|
|
@@ -12,7 +12,7 @@ from ssot_registry.api import (
|
|
|
12
12
|
unlink_entities,
|
|
13
13
|
update_entity,
|
|
14
14
|
)
|
|
15
|
-
from ssot_cli.common import add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
|
|
15
|
+
from ssot_cli.common import add_ids_argument, add_optional_bool_argument, add_path_argument, collect_list_fields, compact_dict
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
_LINK_MAPPING = {
|
|
@@ -54,6 +54,7 @@ def register_risk(subparsers: argparse._SubParsersAction) -> None:
|
|
|
54
54
|
|
|
55
55
|
list_cmd = risk_sub.add_parser("list", help="List risks.", description="List risk records currently known to the registry.")
|
|
56
56
|
add_path_argument(list_cmd)
|
|
57
|
+
add_ids_argument(list_cmd, help_text="Risk ids to include in the list output.")
|
|
57
58
|
list_cmd.set_defaults(func=run_list)
|
|
58
59
|
|
|
59
60
|
update = risk_sub.add_parser("update", help="Edit risk metadata.", description="Update mutable risk fields without changing linked entities.")
|
|
@@ -135,7 +136,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
|
|
|
135
136
|
|
|
136
137
|
|
|
137
138
|
def run_list(args: argparse.Namespace) -> dict[str, object]:
|
|
138
|
-
return list_entities(args.path, "risks")
|
|
139
|
+
return list_entities(args.path, "risks", ids=args.ids)
|
|
139
140
|
|
|
140
141
|
|
|
141
142
|
def run_update(args: argparse.Namespace) -> dict[str, object]:
|
|
@@ -16,7 +16,7 @@ from ssot_registry.api import (
|
|
|
16
16
|
supersede_documents,
|
|
17
17
|
update_document,
|
|
18
18
|
)
|
|
19
|
-
from ssot_cli.common import add_path_argument, compact_dict
|
|
19
|
+
from ssot_cli.common import add_ids_argument, add_path_argument, compact_dict
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
def register_spec(subparsers: argparse._SubParsersAction) -> None:
|
|
@@ -53,6 +53,7 @@ def register_spec(subparsers: argparse._SubParsersAction) -> None:
|
|
|
53
53
|
|
|
54
54
|
list_cmd = spec_sub.add_parser("list", help="List SPECs.", description="List SPEC documents currently registered.")
|
|
55
55
|
add_path_argument(list_cmd)
|
|
56
|
+
add_ids_argument(list_cmd, help_text="SPEC ids to include in the list output.")
|
|
56
57
|
list_cmd.set_defaults(func=run_list)
|
|
57
58
|
|
|
58
59
|
link = spec_sub.add_parser("link", help="Attach ADRs to a SPEC.", description="Add typed ADR references to a SPEC without changing other document fields.")
|
|
@@ -139,7 +140,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
|
|
|
139
140
|
|
|
140
141
|
|
|
141
142
|
def run_list(args: argparse.Namespace) -> dict[str, object]:
|
|
142
|
-
return list_documents(args.path, "spec")
|
|
143
|
+
return list_documents(args.path, "spec", ids=args.ids)
|
|
143
144
|
|
|
144
145
|
|
|
145
146
|
def run_link(args: argparse.Namespace) -> dict[str, object]:
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import argparse
|
|
4
4
|
|
|
5
5
|
from ssot_registry.api import create_entity, delete_entity, get_entity, link_entities, list_entities, unlink_entities, update_entity
|
|
6
|
-
from ssot_cli.common import add_path_argument, collect_list_fields, compact_dict
|
|
6
|
+
from ssot_cli.common import add_ids_argument, add_path_argument, collect_list_fields, compact_dict
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
_LINK_MAPPING = {
|
|
@@ -40,6 +40,7 @@ def register_test(subparsers: argparse._SubParsersAction) -> None:
|
|
|
40
40
|
|
|
41
41
|
list_cmd = test_sub.add_parser("list", help="List tests.", description="List test records currently known to the registry.")
|
|
42
42
|
add_path_argument(list_cmd)
|
|
43
|
+
add_ids_argument(list_cmd, help_text="Test ids to include in the list output.")
|
|
43
44
|
list_cmd.set_defaults(func=run_list)
|
|
44
45
|
|
|
45
46
|
update = test_sub.add_parser("update", help="Edit test metadata.", description="Update mutable test fields without changing link relationships.")
|
|
@@ -99,7 +100,7 @@ def run_get(args: argparse.Namespace) -> dict[str, object]:
|
|
|
99
100
|
|
|
100
101
|
|
|
101
102
|
def run_list(args: argparse.Namespace) -> dict[str, object]:
|
|
102
|
-
return list_entities(args.path, "tests")
|
|
103
|
+
return list_entities(args.path, "tests", ids=args.ids)
|
|
103
104
|
|
|
104
105
|
|
|
105
106
|
def run_update(args: argparse.Namespace) -> dict[str, object]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssot-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.8
|
|
4
4
|
Summary: Primary CLI distribution for ssot-registry.
|
|
5
5
|
Author-email: Jacob Stewart <jacob@swarmauri.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -24,8 +24,8 @@ Classifier: Topic :: Software Development :: Quality Assurance
|
|
|
24
24
|
Classifier: Topic :: Utilities
|
|
25
25
|
Requires-Python: <3.14,>=3.10
|
|
26
26
|
Description-Content-Type: text/markdown
|
|
27
|
-
Requires-Dist: ssot-contracts<0.3.0,>=0.2.
|
|
28
|
-
Requires-Dist: ssot-core<0.3.0,>=0.2.
|
|
27
|
+
Requires-Dist: ssot-contracts<0.3.0,>=0.2.13
|
|
28
|
+
Requires-Dist: ssot-core<0.3.0,>=0.2.13
|
|
29
29
|
Requires-Dist: tomli>=2.0.1; python_version < "3.11"
|
|
30
30
|
|
|
31
31
|
<div align="center">
|
|
@@ -803,7 +803,7 @@ ssot-registry release revoke [path]
|
|
|
803
803
|
|
|
804
804
|
Subcommands:
|
|
805
805
|
|
|
806
|
-
- `export`
|
|
806
|
+
- `export`, `sync-statuses`
|
|
807
807
|
|
|
808
808
|
```text
|
|
809
809
|
ssot-registry graph export [path]
|
|
@@ -821,6 +821,9 @@ Subcommands:
|
|
|
821
821
|
ssot-registry registry export [path]
|
|
822
822
|
--format {json,csv,df,yaml,toml} (required)
|
|
823
823
|
--output OUTPUT
|
|
824
|
+
|
|
825
|
+
ssot-registry registry sync-statuses [path]
|
|
826
|
+
--dry-run
|
|
824
827
|
```
|
|
825
828
|
|
|
826
829
|
## Example workflows
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|