@rehearsal-db/core 0.1.0-beta.9 → 0.1.0-rc.2
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/CHANGELOG.md +319 -1
- package/COMPATIBILITY.md +15 -0
- package/README.md +73 -16
- package/dist/package.json +100 -0
- package/dist/scripts/install/create_root_config.d.mts +3 -0
- package/dist/scripts/install/create_root_config.mjs +13 -0
- package/dist/scripts/runtime/manage_database.d.mts +6 -0
- package/{scripts → dist/scripts}/runtime/manage_database.mjs +6 -8
- package/dist/src/application/interactive_task.d.mts +30 -0
- package/dist/src/application/interactive_task.mjs +83 -0
- package/dist/src/application/session.d.mts +97 -0
- package/dist/src/application/session.mjs +380 -0
- package/dist/src/baseline/artifact.d.mts +119 -0
- package/dist/src/baseline/artifact.mjs +522 -0
- package/dist/src/baseline/builder.d.mts +19 -0
- package/dist/src/baseline/builder.mjs +142 -0
- package/dist/src/baseline/input_discovery.d.mts +13 -0
- package/dist/src/baseline/input_discovery.mjs +149 -0
- package/dist/src/baseline/policy_review.d.mts +56 -0
- package/dist/src/baseline/policy_review.mjs +73 -0
- package/dist/src/baseline/preparation.d.mts +63 -0
- package/dist/src/baseline/preparation.mjs +295 -0
- package/dist/src/baseline/privacy_contract.d.mts +147 -0
- package/dist/src/baseline/privacy_contract.mjs +2 -0
- package/dist/src/baseline/privacy_dependency_graph.d.mts +7 -0
- package/dist/src/baseline/privacy_dependency_graph.mjs +110 -0
- package/dist/src/baseline/privacy_engine.d.mts +5 -0
- package/dist/src/baseline/privacy_engine.mjs +4 -0
- package/dist/src/baseline/privacy_key.d.mts +7 -0
- package/dist/src/baseline/privacy_key.mjs +42 -0
- package/dist/src/baseline/privacy_pipeline.d.mts +7 -0
- package/dist/src/baseline/privacy_pipeline.mjs +127 -0
- package/dist/src/baseline/privacy_policy.d.mts +6 -0
- package/dist/src/baseline/privacy_policy.mjs +237 -0
- package/dist/src/baseline/privacy_recipe_validation.d.mts +5 -0
- package/dist/src/baseline/privacy_recipe_validation.mjs +289 -0
- package/dist/src/baseline/privacy_rule_registry.d.mts +18 -0
- package/dist/src/baseline/privacy_rule_registry.mjs +143 -0
- package/dist/src/baseline/privacy_structured_json.d.mts +66 -0
- package/dist/src/baseline/privacy_structured_json.mjs +464 -0
- package/dist/src/baseline/privacy_transforms.d.mts +18 -0
- package/dist/src/baseline/privacy_transforms.mjs +142 -0
- package/dist/src/baseline/privacy_validation_shared.d.mts +31 -0
- package/dist/src/baseline/privacy_validation_shared.mjs +127 -0
- package/dist/src/baseline/sanitization_policy.d.mts +69 -0
- package/dist/src/baseline/sanitization_policy.mjs +227 -0
- package/dist/src/baseline/schema_snapshot.d.mts +19 -0
- package/dist/src/baseline/schema_snapshot.mjs +79 -0
- package/dist/src/cli/application_command_handlers.d.mts +8 -0
- package/dist/src/cli/application_command_handlers.mjs +52 -0
- package/dist/src/cli/arguments.d.mts +38 -0
- package/dist/src/cli/arguments.mjs +130 -0
- package/dist/src/cli/basic_command_handlers.d.mts +4 -0
- package/dist/src/cli/basic_command_handlers.mjs +57 -0
- package/dist/src/cli/cli_commands.d.mts +14 -0
- package/dist/src/cli/cli_commands.mjs +34 -0
- package/dist/src/cli/command_contract.d.mts +57 -0
- package/dist/src/cli/command_contract.mjs +39 -0
- package/dist/src/cli/command_output.d.mts +12 -0
- package/dist/src/cli/command_output.mjs +20 -0
- package/dist/src/cli/command_registry.d.mts +7 -0
- package/dist/src/cli/command_registry.mjs +14 -0
- package/dist/src/cli/guided.d.mts +53 -0
- package/dist/src/cli/guided.mjs +727 -0
- package/dist/src/cli/identity_command_handlers.d.mts +12 -0
- package/dist/src/cli/identity_command_handlers.mjs +239 -0
- package/dist/src/cli/identity_renderer.d.mts +8 -0
- package/dist/src/cli/identity_renderer.mjs +33 -0
- package/dist/src/cli/init_command.d.mts +21 -0
- package/dist/src/cli/init_command.mjs +90 -0
- package/dist/src/cli/inspection_command_handlers.d.mts +3 -0
- package/dist/src/cli/inspection_command_handlers.mjs +79 -0
- package/dist/src/cli/project_command_handlers.d.mts +11 -0
- package/dist/src/cli/project_command_handlers.mjs +92 -0
- package/dist/src/cli/project_commands.d.mts +283 -0
- package/dist/src/cli/project_commands.mjs +192 -0
- package/dist/src/cli/rehearsal.d.mts +7 -0
- package/dist/src/cli/rehearsal.mjs +190 -0
- package/dist/src/cli/renderers.d.mts +299 -0
- package/dist/src/cli/renderers.mjs +554 -0
- package/dist/src/cli/runtime_action_handlers.d.mts +12 -0
- package/dist/src/cli/runtime_action_handlers.mjs +201 -0
- package/dist/src/cli/runtime_commands.d.mts +294 -0
- package/dist/src/cli/runtime_commands.mjs +619 -0
- package/dist/src/cli/source_command_handlers.d.mts +8 -0
- package/dist/src/cli/source_command_handlers.mjs +62 -0
- package/dist/src/cli/source_commands.d.mts +436 -0
- package/dist/src/cli/source_commands.mjs +301 -0
- package/dist/src/cli/terminal.d.mts +59 -0
- package/dist/src/cli/terminal.mjs +230 -0
- package/dist/src/identity/claim.d.mts +5 -0
- package/dist/src/identity/claim.mjs +4 -0
- package/dist/src/identity/claim_contract.d.mts +135 -0
- package/dist/src/identity/claim_contract.mjs +6 -0
- package/dist/src/identity/claim_executor.d.mts +10 -0
- package/dist/src/identity/claim_executor.mjs +358 -0
- package/dist/src/identity/claim_identity_lookup.d.mts +23 -0
- package/dist/src/identity/claim_identity_lookup.mjs +134 -0
- package/dist/src/identity/claim_plan.d.mts +8 -0
- package/dist/src/identity/claim_plan.mjs +61 -0
- package/dist/src/identity/claim_policy.d.mts +3 -0
- package/dist/src/identity/claim_policy.mjs +377 -0
- package/dist/src/identity/claim_sql.d.mts +10 -0
- package/dist/src/identity/claim_sql.mjs +46 -0
- package/dist/src/identity/claim_verification.d.mts +13 -0
- package/dist/src/identity/claim_verification.mjs +35 -0
- package/dist/src/identity/connect.d.mts +30 -0
- package/dist/src/identity/connect.mjs +111 -0
- package/dist/src/identity/provider_configuration.d.mts +37 -0
- package/dist/src/identity/provider_configuration.mjs +132 -0
- package/dist/src/identity/storage.d.mts +21 -0
- package/dist/src/identity/storage.mjs +122 -0
- package/dist/src/index.d.mts +4 -0
- package/dist/src/index.mjs +3 -0
- package/dist/src/project/configuration.d.mts +13 -0
- package/dist/src/project/configuration.mjs +9 -0
- package/dist/src/project/configuration_contract.d.mts +125 -0
- package/dist/src/project/configuration_contract.mjs +27 -0
- package/dist/src/project/configuration_discovery.d.mts +7 -0
- package/dist/src/project/configuration_discovery.mjs +37 -0
- package/dist/src/project/configuration_normalization.d.mts +107 -0
- package/dist/src/project/configuration_normalization.mjs +302 -0
- package/dist/src/project/configuration_rendering.d.mts +14 -0
- package/dist/src/project/configuration_rendering.mjs +228 -0
- package/dist/src/project/configuration_resolution.d.mts +125 -0
- package/dist/src/project/configuration_resolution.mjs +81 -0
- package/dist/src/project/configuration_schema.d.mts +22 -0
- package/dist/src/project/configuration_schema.mjs +160 -0
- package/dist/src/project/configuration_validation.d.mts +22 -0
- package/dist/src/project/configuration_validation.mjs +136 -0
- package/dist/src/project/install_scaffold.d.mts +42 -0
- package/dist/src/project/install_scaffold.mjs +263 -0
- package/dist/src/project/project_detection.d.mts +14 -0
- package/dist/src/project/project_detection.mjs +47 -0
- package/dist/src/project/setup.d.mts +87 -0
- package/dist/src/project/setup.mjs +414 -0
- package/dist/src/project/support_report.d.mts +88 -0
- package/dist/src/project/support_report.mjs +83 -0
- package/dist/src/runtime/cleanup.d.mts +85 -0
- package/dist/src/runtime/cleanup.mjs +311 -0
- package/dist/src/runtime/lifecycle_engine.d.mts +63 -0
- package/dist/src/runtime/lifecycle_engine.mjs +114 -0
- package/dist/src/runtime/migration_history.d.mts +51 -0
- package/dist/src/runtime/migration_history.mjs +170 -0
- package/dist/src/runtime/plan.d.mts +134 -0
- package/dist/src/runtime/plan.mjs +640 -0
- package/dist/src/runtime/policy.d.mts +66 -0
- package/dist/src/runtime/policy.mjs +369 -0
- package/dist/src/runtime/restore.d.mts +22 -0
- package/dist/src/runtime/restore.mjs +276 -0
- package/dist/src/runtime/service_environment.d.mts +11 -0
- package/dist/src/runtime/service_environment.mjs +58 -0
- package/dist/src/runtime/topology.d.mts +51 -0
- package/dist/src/runtime/topology.mjs +128 -0
- package/dist/src/shared/diagnostics.d.mts +97 -0
- package/dist/src/shared/diagnostics.mjs +170 -0
- package/dist/src/shared/human_output.d.mts +2 -0
- package/{src → dist/src}/shared/human_output.mjs +1 -3
- package/dist/src/shared/node_runtime.d.mts +14 -0
- package/dist/src/shared/node_runtime.mjs +25 -0
- package/dist/src/shared/operation_guard.d.mts +22 -0
- package/dist/src/shared/operation_guard.mjs +150 -0
- package/dist/src/shared/process_environment.d.mts +15 -0
- package/dist/src/shared/process_environment.mjs +50 -0
- package/dist/src/source/access.d.mts +165 -0
- package/dist/src/source/access.mjs +602 -0
- package/dist/src/source/asset_transfer.d.mts +27 -0
- package/dist/src/source/asset_transfer.mjs +202 -0
- package/dist/src/source/baseline.d.mts +66 -0
- package/dist/src/source/baseline.mjs +372 -0
- package/dist/src/source/external_reader.d.mts +42 -0
- package/dist/src/source/external_reader.mjs +278 -0
- package/dist/src/source/postgresql_access.d.mts +86 -0
- package/dist/src/source/postgresql_access.mjs +454 -0
- package/dist/src/source/privacy_paths.d.mts +10 -0
- package/dist/src/source/privacy_paths.mjs +27 -0
- package/dist/src/targets/driver.d.mts +2 -0
- package/dist/src/targets/driver.mjs +13 -0
- package/dist/src/targets/postgresql.d.mts +5 -0
- package/dist/src/targets/postgresql.mjs +620 -0
- package/dist/src/targets/supabase.d.mts +8 -0
- package/dist/src/targets/supabase.mjs +629 -0
- package/dist/src/targets/supabase_environment.d.mts +54 -0
- package/dist/src/targets/supabase_environment.mjs +184 -0
- package/dist/src/targets/target.d.mts +33 -0
- package/dist/src/targets/target.mjs +39 -0
- package/docs/README.md +35 -16
- package/docs/architecture.md +135 -10
- package/docs/commands.md +53 -15
- package/docs/configuration.md +186 -31
- package/docs/getting-started.md +66 -9
- package/docs/index.md +67 -0
- package/docs/production-source.md +175 -17
- package/docs/releasing.md +24 -12
- package/docs/roadmap.md +3 -2
- package/docs/runtime-lifecycle.md +99 -0
- package/docs/runtime-policies.md +80 -7
- package/docs/sanitization.md +572 -4
- package/docs/security-model.md +8 -0
- package/docs/stability.md +70 -0
- package/docs/standalone-workflow.md +36 -13
- package/docs/troubleshooting.md +82 -10
- package/docs/tutorial.md +7 -1
- package/docs/typescript.md +134 -0
- package/package.json +44 -29
- package/types/configuration.d.mts +5 -0
- package/src/README.md +0 -17
- package/src/application/session.mjs +0 -313
- package/src/baseline/artifact.mjs +0 -661
- package/src/baseline/builder.mjs +0 -164
- package/src/baseline/input_discovery.mjs +0 -155
- package/src/baseline/policy_review.mjs +0 -92
- package/src/baseline/preparation.mjs +0 -323
- package/src/baseline/privacy_engine.mjs +0 -413
- package/src/baseline/sanitization_policy.mjs +0 -299
- package/src/baseline/schema_snapshot.mjs +0 -113
- package/src/cli/arguments.mjs +0 -120
- package/src/cli/guided.mjs +0 -807
- package/src/cli/rehearsal.mjs +0 -933
- package/src/cli/renderers.mjs +0 -584
- package/src/cli/runtime_commands.mjs +0 -553
- package/src/cli/source_commands.mjs +0 -326
- package/src/cli/terminal.mjs +0 -275
- package/src/identity/claim.mjs +0 -975
- package/src/identity/storage.mjs +0 -165
- package/src/project/configuration.d.mts +0 -153
- package/src/project/configuration.mjs +0 -1197
- package/src/project/setup.mjs +0 -379
- package/src/project/support_report.mjs +0 -105
- package/src/runtime/cleanup.mjs +0 -381
- package/src/runtime/migration_history.mjs +0 -220
- package/src/runtime/plan.mjs +0 -685
- package/src/runtime/policy.mjs +0 -438
- package/src/runtime/restore.mjs +0 -329
- package/src/runtime/service_environment.mjs +0 -82
- package/src/runtime/topology.mjs +0 -177
- package/src/shared/diagnostics.mjs +0 -199
- package/src/shared/operation_guard.mjs +0 -162
- package/src/shared/process_environment.mjs +0 -68
- package/src/source/access.mjs +0 -578
- package/src/source/asset_transfer.mjs +0 -177
- package/src/source/baseline.mjs +0 -446
- package/src/source/postgresql_access.mjs +0 -480
- package/src/targets/postgresql.mjs +0 -808
- package/src/targets/supabase.mjs +0 -830
- package/src/targets/supabase_environment.mjs +0 -229
- package/src/targets/target.mjs +0 -66
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Purpose: Capture and compare bounded, data-free PostgreSQL public-schema
|
|
3
|
-
* snapshots for a local Rehearsal runtime. Do not run directly.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { spawnSync } from "node:child_process";
|
|
7
|
-
import { createHash } from "node:crypto";
|
|
8
|
-
import { chmod, mkdir, mkdtemp, readFile, rm } from "node:fs/promises";
|
|
9
|
-
import { basename, join, resolve, sep } from "node:path";
|
|
10
|
-
import { createCleanProcessEnvironment } from "../shared/process_environment.mjs";
|
|
11
|
-
|
|
12
|
-
const maximumSchemaBytes = 64 * 1024 * 1024;
|
|
13
|
-
|
|
14
|
-
const assertArtifactRoot = (artifactRoot) => {
|
|
15
|
-
const resolved = resolve(artifactRoot);
|
|
16
|
-
if (basename(resolved) !== ".rehearsal" || resolved === sep) {
|
|
17
|
-
throw new Error(
|
|
18
|
-
`Refusing an unsafe Rehearsal artifact root: ${artifactRoot}`,
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
return resolved;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export const assertProductionSchemaDump = (schemaSql) => {
|
|
25
|
-
if (typeof schemaSql !== "string" || schemaSql.length === 0) {
|
|
26
|
-
throw new Error("The Rehearsal production schema snapshot is empty.");
|
|
27
|
-
}
|
|
28
|
-
if (Buffer.byteLength(schemaSql) > maximumSchemaBytes) {
|
|
29
|
-
throw new Error("The Rehearsal production schema snapshot is too large.");
|
|
30
|
-
}
|
|
31
|
-
if (!schemaSql.includes('CREATE SCHEMA IF NOT EXISTS "public";')) {
|
|
32
|
-
throw new Error(
|
|
33
|
-
"The Rehearsal production schema snapshot does not define public.",
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
if (/^COPY\s|^\\connect\s|^CREATE DATABASE\s/mu.test(schemaSql)) {
|
|
37
|
-
throw new Error(
|
|
38
|
-
"The Rehearsal production schema snapshot contains data or database switching commands.",
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
return schemaSql;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const comparableSchemaDump = (schemaSql) =>
|
|
45
|
-
assertProductionSchemaDump(schemaSql)
|
|
46
|
-
.split("\n")
|
|
47
|
-
.map((line) => line.trimEnd())
|
|
48
|
-
.filter(Boolean)
|
|
49
|
-
.map((line) => {
|
|
50
|
-
const checkConstraint = line.match(
|
|
51
|
-
/^(\s*CONSTRAINT "[^"]+" CHECK ).*(,?)$/u,
|
|
52
|
-
);
|
|
53
|
-
return checkConstraint
|
|
54
|
-
? `${checkConstraint[1]}<database-normalized-expression>${checkConstraint[2]}`
|
|
55
|
-
: line;
|
|
56
|
-
})
|
|
57
|
-
.join("\n");
|
|
58
|
-
|
|
59
|
-
export const compareProductionSchemaDumps = ({ expected, actual }) => {
|
|
60
|
-
const expectedComparable = comparableSchemaDump(expected);
|
|
61
|
-
const actualComparable = comparableSchemaDump(actual);
|
|
62
|
-
if (expectedComparable !== actualComparable) {
|
|
63
|
-
throw new Error(
|
|
64
|
-
"The local Rehearsal public schema does not structurally match the production snapshot.",
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
return createHash("sha256").update(actualComparable).digest("hex");
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
export const captureSupabasePublicSchema = async ({
|
|
71
|
-
repositoryRoot,
|
|
72
|
-
artifactRoot,
|
|
73
|
-
arguments_,
|
|
74
|
-
}) => {
|
|
75
|
-
const root = assertArtifactRoot(artifactRoot);
|
|
76
|
-
await mkdir(root, { recursive: true, mode: 0o700 });
|
|
77
|
-
const temporaryDirectory = await mkdtemp(join(root, ".schema-capture-"));
|
|
78
|
-
const destination = join(temporaryDirectory, "production-schema.sql");
|
|
79
|
-
try {
|
|
80
|
-
const result = spawnSync(
|
|
81
|
-
"supabase",
|
|
82
|
-
[...arguments_, "--schema", "public", "--file", destination],
|
|
83
|
-
{
|
|
84
|
-
cwd: repositoryRoot,
|
|
85
|
-
env: createCleanProcessEnvironment(),
|
|
86
|
-
encoding: "utf8",
|
|
87
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
88
|
-
maxBuffer: 4 * 1024 * 1024,
|
|
89
|
-
},
|
|
90
|
-
);
|
|
91
|
-
if (result.error || result.status !== 0) {
|
|
92
|
-
throw new Error(
|
|
93
|
-
"The exact Rehearsal schema snapshot could not be captured.",
|
|
94
|
-
{ cause: result.error },
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
await chmod(destination, 0o600);
|
|
98
|
-
return assertProductionSchemaDump(await readFile(destination, "utf8"));
|
|
99
|
-
} finally {
|
|
100
|
-
await rm(temporaryDirectory, { recursive: true, force: true });
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
export const captureLocalPublicSchema = ({
|
|
105
|
-
repositoryRoot,
|
|
106
|
-
artifactRoot,
|
|
107
|
-
workdir,
|
|
108
|
-
}) =>
|
|
109
|
-
captureSupabasePublicSchema({
|
|
110
|
-
repositoryRoot,
|
|
111
|
-
artifactRoot,
|
|
112
|
-
arguments_: ["db", "dump", "--local", "--workdir", workdir],
|
|
113
|
-
});
|
package/src/cli/arguments.mjs
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/** Parse and classify the stable Rehearsal command-line contract. */
|
|
2
|
-
|
|
3
|
-
export const parseArguments = (arguments_) => {
|
|
4
|
-
const flags = {
|
|
5
|
-
json: false,
|
|
6
|
-
help: false,
|
|
7
|
-
verbosity: "normal",
|
|
8
|
-
dryRun: false,
|
|
9
|
-
write: false,
|
|
10
|
-
plain: false,
|
|
11
|
-
configPath: undefined,
|
|
12
|
-
confirmation: undefined,
|
|
13
|
-
recordsPath: undefined,
|
|
14
|
-
ledgerPath: undefined,
|
|
15
|
-
assetsPath: undefined,
|
|
16
|
-
target: undefined,
|
|
17
|
-
includeRuntime: false,
|
|
18
|
-
includeImages: false,
|
|
19
|
-
cleanupConfirmation: undefined,
|
|
20
|
-
sourceAccessConfirmation: undefined,
|
|
21
|
-
sourceRetirementConfirmation: undefined,
|
|
22
|
-
refreshConfirmation: undefined,
|
|
23
|
-
identityConfirmation: undefined,
|
|
24
|
-
identityName: undefined,
|
|
25
|
-
runtimeTopology: undefined,
|
|
26
|
-
targetConfirmations: undefined,
|
|
27
|
-
};
|
|
28
|
-
const positionals = [];
|
|
29
|
-
for (const argument of arguments_) {
|
|
30
|
-
if (argument === "--json") flags.json = true;
|
|
31
|
-
else if (argument === "--help" || argument === "-h") flags.help = true;
|
|
32
|
-
else if (argument === "--verbose") flags.verbosity = "verbose";
|
|
33
|
-
else if (argument === "--debug") flags.verbosity = "debug";
|
|
34
|
-
else if (argument === "--dry-run") flags.dryRun = true;
|
|
35
|
-
else if (argument === "--write") flags.write = true;
|
|
36
|
-
else if (argument === "--plain") flags.plain = true;
|
|
37
|
-
else if (argument.startsWith("--config="))
|
|
38
|
-
flags.configPath = argument.slice("--config=".length);
|
|
39
|
-
else if (argument.startsWith("--confirm-candidates="))
|
|
40
|
-
flags.confirmation = argument.slice("--confirm-candidates=".length);
|
|
41
|
-
else if (argument.startsWith("--confirm-cleanup="))
|
|
42
|
-
flags.cleanupConfirmation = argument.slice("--confirm-cleanup=".length);
|
|
43
|
-
else if (argument.startsWith("--confirm-source-access="))
|
|
44
|
-
flags.sourceAccessConfirmation = argument.slice(
|
|
45
|
-
"--confirm-source-access=".length,
|
|
46
|
-
);
|
|
47
|
-
else if (argument.startsWith("--confirm-source-retirement="))
|
|
48
|
-
flags.sourceRetirementConfirmation = argument.slice(
|
|
49
|
-
"--confirm-source-retirement=".length,
|
|
50
|
-
);
|
|
51
|
-
else if (argument.startsWith("--confirm-refresh="))
|
|
52
|
-
flags.refreshConfirmation = argument.slice("--confirm-refresh=".length);
|
|
53
|
-
else if (argument.startsWith("--confirm-identity="))
|
|
54
|
-
flags.identityConfirmation = argument.slice("--confirm-identity=".length);
|
|
55
|
-
else if (argument.startsWith("--identity="))
|
|
56
|
-
flags.identityName = argument.slice("--identity=".length);
|
|
57
|
-
else if (argument.startsWith("--records="))
|
|
58
|
-
flags.recordsPath = argument.slice("--records=".length);
|
|
59
|
-
else if (argument.startsWith("--ledger="))
|
|
60
|
-
flags.ledgerPath = argument.slice("--ledger=".length);
|
|
61
|
-
else if (argument.startsWith("--assets="))
|
|
62
|
-
flags.assetsPath = argument.slice("--assets=".length);
|
|
63
|
-
else if (argument.startsWith("--target="))
|
|
64
|
-
flags.target = argument.slice("--target=".length);
|
|
65
|
-
else if (argument === "--include-runtime") flags.includeRuntime = true;
|
|
66
|
-
else if (argument === "--include-images") flags.includeImages = true;
|
|
67
|
-
else if (argument.startsWith("--"))
|
|
68
|
-
throw new Error(`Unknown Rehearsal option: ${argument}.`);
|
|
69
|
-
else positionals.push(argument);
|
|
70
|
-
}
|
|
71
|
-
return { flags, positionals };
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
export const resetGuidedFlags = (flags) => {
|
|
75
|
-
Object.assign(flags, {
|
|
76
|
-
dryRun: false,
|
|
77
|
-
write: false,
|
|
78
|
-
confirmation: undefined,
|
|
79
|
-
recordsPath: undefined,
|
|
80
|
-
ledgerPath: undefined,
|
|
81
|
-
assetsPath: undefined,
|
|
82
|
-
target: undefined,
|
|
83
|
-
includeRuntime: false,
|
|
84
|
-
includeImages: false,
|
|
85
|
-
cleanupConfirmation: undefined,
|
|
86
|
-
sourceAccessConfirmation: undefined,
|
|
87
|
-
sourceRetirementConfirmation: undefined,
|
|
88
|
-
refreshConfirmation: undefined,
|
|
89
|
-
identityConfirmation: undefined,
|
|
90
|
-
identityName: undefined,
|
|
91
|
-
runtimeTopology: undefined,
|
|
92
|
-
targetConfirmations: undefined,
|
|
93
|
-
setupPlan: undefined,
|
|
94
|
-
preparationPlan: undefined,
|
|
95
|
-
cleanupPlan: undefined,
|
|
96
|
-
});
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
export const commandMutatesProject = ({ command, flags, guided }) => {
|
|
100
|
-
if (guided) return true;
|
|
101
|
-
if (["setup", "init", "baseline prepare", "privacy key"].includes(command))
|
|
102
|
-
return flags.write;
|
|
103
|
-
if (command === "cleanup") return flags.write;
|
|
104
|
-
if (command === "source apply")
|
|
105
|
-
return Boolean(flags.sourceAccessConfirmation);
|
|
106
|
-
if (command === "source retire")
|
|
107
|
-
return Boolean(flags.sourceRetirementConfirmation);
|
|
108
|
-
if (command === "refresh") return Boolean(flags.refreshConfirmation);
|
|
109
|
-
if (command === "identity claim") return Boolean(flags.identityConfirmation);
|
|
110
|
-
if (command === "run") return !flags.dryRun;
|
|
111
|
-
return [
|
|
112
|
-
"baseline create",
|
|
113
|
-
"baseline refresh",
|
|
114
|
-
"start",
|
|
115
|
-
"migrate",
|
|
116
|
-
"reset",
|
|
117
|
-
"stop",
|
|
118
|
-
"discard",
|
|
119
|
-
].includes(command);
|
|
120
|
-
};
|