@fuzdev/fuz_gitops 0.78.1 â 0.79.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 +78 -24
- package/dist/ModulesDetail.svelte +15 -22
- package/dist/ModulesDetail.svelte.d.ts.map +1 -1
- package/dist/ModulesNav.svelte +4 -1
- package/dist/ModulesPage.svelte +1 -3
- package/dist/ModulesPage.svelte.d.ts.map +1 -1
- package/dist/PageHeader.svelte +2 -2
- package/dist/PageHeader.svelte.d.ts +0 -3
- package/dist/PageHeader.svelte.d.ts.map +1 -1
- package/dist/PullRequestsDetail.svelte +10 -9
- package/dist/PullRequestsDetail.svelte.d.ts.map +1 -1
- package/dist/PullRequestsPage.svelte +1 -3
- package/dist/PullRequestsPage.svelte.d.ts.map +1 -1
- package/dist/ReposTable.svelte +27 -48
- package/dist/ReposTable.svelte.d.ts.map +1 -1
- package/dist/ReposTree.svelte +5 -19
- package/dist/ReposTree.svelte.d.ts.map +1 -1
- package/dist/ReposTreeNav.svelte +5 -7
- package/dist/ReposTreeNav.svelte.d.ts.map +1 -1
- package/dist/TablePage.svelte +1 -3
- package/dist/TablePage.svelte.d.ts.map +1 -1
- package/dist/TreeItemPage.svelte +1 -3
- package/dist/TreeItemPage.svelte.d.ts.map +1 -1
- package/dist/TreePage.svelte +1 -3
- package/dist/TreePage.svelte.d.ts.map +1 -1
- package/dist/ci_reconcile.d.ts +6 -10
- package/dist/ci_reconcile.d.ts.map +1 -1
- package/dist/ci_reconcile.js +6 -8
- package/dist/dependency_graph.d.ts +26 -49
- package/dist/dependency_graph.d.ts.map +1 -1
- package/dist/dependency_graph.js +37 -80
- package/dist/dependency_updater.d.ts +1 -1
- package/dist/dependency_updater.d.ts.map +1 -1
- package/dist/dependency_updater.js +6 -1
- package/dist/fetch_repo_data.d.ts +34 -8
- package/dist/fetch_repo_data.d.ts.map +1 -1
- package/dist/fetch_repo_data.js +44 -22
- package/dist/fs_fetch_value_cache.d.ts +1 -1
- package/dist/fs_fetch_value_cache.js +1 -1
- package/dist/git_operations.d.ts +6 -49
- package/dist/git_operations.d.ts.map +1 -1
- package/dist/git_operations.js +13 -126
- package/dist/github.d.ts +17 -2
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +15 -6
- package/dist/github_helpers.d.ts.map +1 -1
- package/dist/github_helpers.js +3 -11
- package/dist/gitops_analyze.task.d.ts +24 -2
- package/dist/gitops_analyze.task.d.ts.map +1 -1
- package/dist/gitops_analyze.task.js +43 -30
- package/dist/gitops_config.d.ts +34 -79
- package/dist/gitops_config.d.ts.map +1 -1
- package/dist/gitops_config.js +76 -53
- package/dist/gitops_constants.d.ts +6 -4
- package/dist/gitops_constants.d.ts.map +1 -1
- package/dist/gitops_constants.js +6 -4
- package/dist/gitops_plan.task.d.ts +29 -3
- package/dist/gitops_plan.task.d.ts.map +1 -1
- package/dist/gitops_plan.task.js +80 -58
- package/dist/gitops_publish.task.d.ts +62 -2
- package/dist/gitops_publish.task.d.ts.map +1 -1
- package/dist/gitops_publish.task.js +187 -102
- package/dist/gitops_run.task.d.ts +74 -0
- package/dist/gitops_run.task.d.ts.map +1 -1
- package/dist/gitops_run.task.js +174 -160
- package/dist/gitops_sync.task.d.ts +65 -3
- package/dist/gitops_sync.task.d.ts.map +1 -1
- package/dist/gitops_sync.task.js +154 -30
- package/dist/gitops_task_helpers.d.ts +86 -59
- package/dist/gitops_task_helpers.d.ts.map +1 -1
- package/dist/gitops_task_helpers.js +120 -79
- package/dist/gitops_validate.task.d.ts +1 -2
- package/dist/gitops_validate.task.d.ts.map +1 -1
- package/dist/gitops_validate.task.js +15 -22
- package/dist/graph_validation.d.ts +16 -27
- package/dist/graph_validation.d.ts.map +1 -1
- package/dist/graph_validation.js +23 -64
- package/dist/local_repo.d.ts +50 -62
- package/dist/local_repo.d.ts.map +1 -1
- package/dist/local_repo.js +80 -193
- package/dist/log_helpers.d.ts +8 -8
- package/dist/log_helpers.d.ts.map +1 -1
- package/dist/multi_repo_publisher.d.ts +10 -0
- package/dist/multi_repo_publisher.d.ts.map +1 -1
- package/dist/multi_repo_publisher.js +115 -51
- package/dist/npm_registry.d.ts +23 -19
- package/dist/npm_registry.d.ts.map +1 -1
- package/dist/npm_registry.js +20 -47
- package/dist/operations.d.ts +75 -180
- package/dist/operations.d.ts.map +1 -1
- package/dist/operations.js +15 -7
- package/dist/operations_defaults.d.ts +17 -2
- package/dist/operations_defaults.d.ts.map +1 -1
- package/dist/operations_defaults.js +104 -121
- package/dist/output_helpers.d.ts +36 -0
- package/dist/output_helpers.d.ts.map +1 -1
- package/dist/output_helpers.js +37 -3
- package/dist/preflight_checks.d.ts +20 -27
- package/dist/preflight_checks.d.ts.map +1 -1
- package/dist/preflight_checks.js +37 -126
- package/dist/publish_steps.d.ts +2 -4
- package/dist/publish_steps.d.ts.map +1 -1
- package/dist/publish_steps.js +2 -6
- package/dist/publishing_event.d.ts +2 -8
- package/dist/publishing_event.d.ts.map +1 -1
- package/dist/publishing_event.js +5 -4
- package/dist/publishing_event_handler.d.ts +10 -8
- package/dist/publishing_event_handler.d.ts.map +1 -1
- package/dist/publishing_event_handler.js +14 -12
- package/dist/publishing_plan.d.ts +16 -1
- package/dist/publishing_plan.d.ts.map +1 -1
- package/dist/publishing_plan.js +328 -250
- package/dist/publishing_plan_logging.d.ts +1 -1
- package/dist/publishing_plan_logging.d.ts.map +1 -1
- package/dist/publishing_plan_logging.js +21 -14
- package/dist/repo.svelte.d.ts +7 -0
- package/dist/repo.svelte.d.ts.map +1 -1
- package/dist/repo.svelte.js +3 -0
- package/dist/repo_readiness.d.ts +210 -0
- package/dist/repo_readiness.d.ts.map +1 -0
- package/dist/repo_readiness.js +516 -0
- package/dist/repos_status.d.ts +3340 -0
- package/dist/repos_status.d.ts.map +1 -0
- package/dist/repos_status.js +555 -0
- package/dist/repos_status_load.d.ts +65 -0
- package/dist/repos_status_load.d.ts.map +1 -0
- package/dist/repos_status_load.js +131 -0
- package/package.json +7 -27
- package/src/lib/ci_reconcile.ts +7 -11
- package/src/lib/dependency_graph.ts +45 -97
- package/src/lib/dependency_updater.ts +7 -1
- package/src/lib/fetch_repo_data.ts +66 -29
- package/src/lib/fs_fetch_value_cache.ts +1 -1
- package/src/lib/git_operations.ts +15 -187
- package/src/lib/github.ts +20 -8
- package/src/lib/github_helpers.ts +5 -12
- package/src/lib/gitops_analyze.task.ts +79 -41
- package/src/lib/gitops_config.ts +88 -137
- package/src/lib/gitops_constants.ts +6 -4
- package/src/lib/gitops_plan.task.ts +113 -61
- package/src/lib/gitops_publish.task.ts +255 -122
- package/src/lib/gitops_run.task.ts +250 -178
- package/src/lib/gitops_sync.task.ts +208 -33
- package/src/lib/gitops_task_helpers.ts +166 -110
- package/src/lib/gitops_validate.task.ts +17 -27
- package/src/lib/graph_validation.ts +25 -86
- package/src/lib/local_repo.ts +109 -316
- package/src/lib/log_helpers.ts +8 -18
- package/src/lib/multi_repo_publisher.ts +138 -53
- package/src/lib/npm_registry.ts +37 -62
- package/src/lib/operations.ts +78 -150
- package/src/lib/operations_defaults.ts +108 -154
- package/src/lib/output_helpers.ts +55 -3
- package/src/lib/preflight_checks.ts +47 -183
- package/src/lib/publish_steps.ts +15 -13
- package/src/lib/publishing_event.ts +5 -4
- package/src/lib/publishing_event_handler.ts +18 -16
- package/src/lib/publishing_plan.ts +451 -287
- package/src/lib/publishing_plan_logging.ts +32 -23
- package/src/lib/repo.svelte.ts +8 -0
- package/src/lib/repo_readiness.ts +647 -0
- package/src/lib/repos_status.ts +671 -0
- package/src/lib/repos_status_load.ts +173 -0
- package/dist/config_reconcile.d.ts +0 -46
- package/dist/config_reconcile.d.ts.map +0 -1
- package/dist/config_reconcile.js +0 -64
- package/dist/paths.d.ts +0 -7
- package/dist/paths.d.ts.map +0 -1
- package/dist/paths.js +0 -6
- package/dist/repo_ops.d.ts +0 -59
- package/dist/repo_ops.d.ts.map +0 -1
- package/dist/repo_ops.js +0 -170
- package/dist/resolved_gitops_config.d.ts +0 -9
- package/dist/resolved_gitops_config.d.ts.map +0 -1
- package/dist/resolved_gitops_config.js +0 -12
- package/src/lib/config_reconcile.ts +0 -98
- package/src/lib/paths.ts +0 -6
- package/src/lib/repo_ops.ts +0 -216
- package/src/lib/resolved_gitops_config.ts +0 -27
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitops_config.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gitops_config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gitops_config.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gitops_config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,iCAAiC;AACjC,eAAO,MAAM,YAAY;;kBAIvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,yDAAyD;AACzD,MAAM,MAAM,kBAAkB,GAAG,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,kBAAkB,CAAC;CACpD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kCAAkC,GAC9C,SAAS,aAAa,CAAC,gBAAgB,CAAC,EACxC,iBAAiB,OAAO,KACtB,KAAK,CAAC,gBAAgB,CACgD,CAAC;AAE1E;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAwBzF,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,KAAK,OAAO,EAAE,aAAa,MAAM,KAAG,YAwBvE,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,CAC3C,aAAa,EAAE,GAAG,EAClB,WAAW,EAAE,MAAM,KACf,OAAO,CAAC,aAAa,IAAI,kBAS7B,CAAC"}
|
package/dist/gitops_config.js
CHANGED
|
@@ -1,76 +1,99 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The gitops config: which repos a project's gitops tasks work over, as a flat
|
|
3
|
+
* list of `repos.toml` registry keys.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* This allows users to provide minimal configs (e.g., just URLs as strings) while
|
|
9
|
-
* the system works with normalized configs internally for type safety.
|
|
5
|
+
* Every other fact about a repo â its dir, URL, branch, visibility, `ci`, and
|
|
6
|
+
* `archived` â comes from the registry, through `repos status --json`, so the
|
|
7
|
+
* config declares nothing that could drift from it.
|
|
10
8
|
*
|
|
11
9
|
* @module
|
|
12
10
|
*/
|
|
13
11
|
import { existsSync } from 'node:fs';
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
export const
|
|
17
|
-
repos:
|
|
18
|
-
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
/** A project's gitops config. */
|
|
14
|
+
export const GitopsConfig = z.strictObject({
|
|
15
|
+
repos: z
|
|
16
|
+
.array(z.string().min(1))
|
|
17
|
+
.meta({ description: 'repos.toml registry keys of owned repos, in the order tasks list them' })
|
|
19
18
|
});
|
|
20
19
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* The private repos a public host package must not publish. `gitops_sync` writes
|
|
21
|
+
* every configured repo's GitHub metadata into the host project's generated
|
|
22
|
+
* `repos.json` â a public site's data when the host package is public â so a
|
|
23
|
+
* private repo in that config would leak. Empty when the host is private.
|
|
24
|
+
*
|
|
25
|
+
* @param entries - the configured repos' registry entries
|
|
26
|
+
* @param host_is_private - whether the host `package.json` sets `private: true`
|
|
27
|
+
*/
|
|
28
|
+
export const gitops_config_leaked_private_repos = (entries, host_is_private) => host_is_private ? [] : entries.filter((e) => e.visibility === 'private');
|
|
29
|
+
/**
|
|
30
|
+
* Loads a gitops config module and validates it.
|
|
31
|
+
*
|
|
32
|
+
* @returns the config, or `null` when no file exists at `config_path`
|
|
33
|
+
* @throws {Error} if the module's default export isn't a valid config
|
|
23
34
|
*/
|
|
24
|
-
export const normalize_gitops_config = (raw_config) => {
|
|
25
|
-
const empty_config = create_empty_gitops_config();
|
|
26
|
-
// All of the raw config properties are optional,
|
|
27
|
-
// so fall back to the empty values when `undefined`.
|
|
28
|
-
const { repos, repos_dir } = raw_config;
|
|
29
|
-
return {
|
|
30
|
-
repos: repos ? repos.map((r) => parse_fuz_repo_config(r)) : empty_config.repos,
|
|
31
|
-
// Default to two dirs up from config if not specified
|
|
32
|
-
repos_dir: repos_dir ?? DEFAULT_REPOS_DIR
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
const parse_fuz_repo_config = (r) => {
|
|
36
|
-
if (typeof r === 'string') {
|
|
37
|
-
return {
|
|
38
|
-
repo_url: r,
|
|
39
|
-
repo_dir: null,
|
|
40
|
-
branch: 'main', // TODO @zts use flavored for GitBranch
|
|
41
|
-
visibility: 'public',
|
|
42
|
-
ci: true,
|
|
43
|
-
archived: false
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
const visibility = r.visibility ?? 'public';
|
|
47
|
-
return {
|
|
48
|
-
repo_url: strip_end(r.repo_url, '.git'),
|
|
49
|
-
repo_dir: r.repo_dir ?? null,
|
|
50
|
-
branch: r.branch ?? 'main', // TODO @zts use flavored for GitBranch
|
|
51
|
-
visibility,
|
|
52
|
-
ci: r.ci ?? visibility === 'public',
|
|
53
|
-
archived: r.archived ?? false
|
|
54
|
-
};
|
|
55
|
-
};
|
|
56
35
|
export const load_gitops_config = async (config_path) => {
|
|
57
36
|
if (!existsSync(config_path)) {
|
|
58
37
|
// No user config file found.
|
|
59
38
|
return null;
|
|
60
39
|
}
|
|
61
|
-
// Import the user's `gitops.config.ts`.
|
|
62
|
-
|
|
40
|
+
// Import the user's `gitops.config.ts`. An import or call failure keeps its
|
|
41
|
+
// stack, which carries the config's file and line; validation errors don't need one.
|
|
42
|
+
let config_module;
|
|
43
|
+
try {
|
|
44
|
+
config_module = await import(config_path);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
throw Error(`Failed to import the gitops config at ${config_path}:\n${error_with_stack(err)}`);
|
|
48
|
+
}
|
|
63
49
|
validate_gitops_config_module(config_module, config_path);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
50
|
+
let raw;
|
|
51
|
+
try {
|
|
52
|
+
raw =
|
|
53
|
+
typeof config_module.default === 'function'
|
|
54
|
+
? await config_module.default()
|
|
55
|
+
: config_module.default;
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
throw Error(`The gitops config at ${config_path} threw:\n${error_with_stack(err)}`);
|
|
59
|
+
}
|
|
60
|
+
return parse_gitops_config(raw, config_path);
|
|
61
|
+
};
|
|
62
|
+
const error_with_stack = (err) => err instanceof Error ? (err.stack ?? err.message) : String(err);
|
|
63
|
+
/**
|
|
64
|
+
* Validates a loaded config value: registry keys, each listed once.
|
|
65
|
+
*
|
|
66
|
+
* @throws {Error} naming the config and what's wrong with it
|
|
67
|
+
*/
|
|
68
|
+
export const parse_gitops_config = (raw, config_path) => {
|
|
69
|
+
const parsed = GitopsConfig.safeParse(raw);
|
|
70
|
+
if (!parsed.success) {
|
|
71
|
+
const hint = "\n `repos` lists repos.toml registry keys; a repo's url, dir, branch, visibility, ci, and archived come from the registry";
|
|
72
|
+
throw Error(`Invalid gitops config at ${config_path}:\n${z.prettifyError(parsed.error)}${hint}`);
|
|
73
|
+
}
|
|
74
|
+
const config = parsed.data;
|
|
75
|
+
const problems = [];
|
|
76
|
+
const seen = new Set();
|
|
77
|
+
for (const key of config.repos) {
|
|
78
|
+
if (key.includes('/')) {
|
|
79
|
+
problems.push(`\`${key}\` isn't a registry key â list repos by their repos.toml key`);
|
|
80
|
+
}
|
|
81
|
+
else if (seen.has(key)) {
|
|
82
|
+
problems.push(`\`${key}\` is listed more than once`);
|
|
83
|
+
}
|
|
84
|
+
seen.add(key);
|
|
85
|
+
}
|
|
86
|
+
if (problems.length) {
|
|
87
|
+
throw Error(`Invalid gitops config at ${config_path}:\n ${problems.join('\n ')}`);
|
|
88
|
+
}
|
|
89
|
+
return config;
|
|
67
90
|
};
|
|
68
91
|
export const validate_gitops_config_module = (config_module, config_path) => {
|
|
69
92
|
const config = config_module.default;
|
|
70
93
|
if (!config) {
|
|
71
|
-
throw Error(`Invalid
|
|
94
|
+
throw Error(`Invalid gitops config module at ${config_path}: expected a default export`);
|
|
72
95
|
}
|
|
73
96
|
else if (!(typeof config === 'function' || typeof config === 'object')) {
|
|
74
|
-
throw Error(`Invalid
|
|
97
|
+
throw Error(`Invalid gitops config module at ${config_path}: the default export must be a function or object`);
|
|
75
98
|
}
|
|
76
99
|
};
|
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
* @module
|
|
7
7
|
*/
|
|
8
8
|
/**
|
|
9
|
-
* Maximum number of
|
|
10
|
-
*
|
|
9
|
+
* Maximum number of fixed-point iterations plan generation runs to resolve
|
|
10
|
+
* transitive dependency cascades. Publishing executes the frozen plan in a
|
|
11
|
+
* single pass and doesn't iterate.
|
|
11
12
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
13
|
+
* Each iteration reaches at least one more level of dependents, so a deep dependency
|
|
14
|
+
* chain needs more; a plan that hits the limit still changing warns, naming
|
|
15
|
+
* the packages left.
|
|
14
16
|
*/
|
|
15
17
|
export declare const GITOPS_MAX_ITERATIONS_DEFAULT = 10;
|
|
16
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitops_constants.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gitops_constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH
|
|
1
|
+
{"version":3,"file":"gitops_constants.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gitops_constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,+BAA+B,SAAU,CAAC"}
|
package/dist/gitops_constants.js
CHANGED
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
* @module
|
|
7
7
|
*/
|
|
8
8
|
/**
|
|
9
|
-
* Maximum number of
|
|
10
|
-
*
|
|
9
|
+
* Maximum number of fixed-point iterations plan generation runs to resolve
|
|
10
|
+
* transitive dependency cascades. Publishing executes the frozen plan in a
|
|
11
|
+
* single pass and doesn't iterate.
|
|
11
12
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
13
|
+
* Each iteration reaches at least one more level of dependents, so a deep dependency
|
|
14
|
+
* chain needs more; a plan that hits the limit still changing warns, naming
|
|
15
|
+
* the packages left.
|
|
14
16
|
*/
|
|
15
17
|
export const GITOPS_MAX_ITERATIONS_DEFAULT = 10;
|
|
16
18
|
/**
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import type { Task } from '@fuzdev/gro';
|
|
2
|
+
import type { Logger } from '@fuzdev/fuz_util/log.ts';
|
|
2
3
|
import { z } from 'zod';
|
|
4
|
+
import { type ResolveGitopsReposOptions } from './gitops_task_helpers.js';
|
|
5
|
+
import type { LocalRepo } from './local_repo.js';
|
|
6
|
+
import type { ChangesetOperations } from './operations.js';
|
|
3
7
|
/** @nodocs */
|
|
4
8
|
export declare const Args: z.ZodObject<{
|
|
5
9
|
config: z.ZodDefault<z.ZodString>;
|
|
6
|
-
|
|
10
|
+
registry: z.ZodOptional<z.ZodString>;
|
|
7
11
|
format: z.ZodDefault<z.ZodEnum<{
|
|
8
12
|
stdout: "stdout";
|
|
9
13
|
json: "json";
|
|
@@ -11,7 +15,6 @@ export declare const Args: z.ZodObject<{
|
|
|
11
15
|
}>>;
|
|
12
16
|
outfile: z.ZodOptional<z.ZodString>;
|
|
13
17
|
verbose: z.ZodDefault<z.ZodBoolean>;
|
|
14
|
-
sync: z.ZodDefault<z.ZodBoolean>;
|
|
15
18
|
}, z.core.$strict>;
|
|
16
19
|
export type Args = z.infer<typeof Args>;
|
|
17
20
|
/**
|
|
@@ -20,10 +23,33 @@ export type Args = z.infer<typeof Args>;
|
|
|
20
23
|
*
|
|
21
24
|
* Usage:
|
|
22
25
|
* `gro gitops_plan`
|
|
23
|
-
* `gro gitops_plan --
|
|
26
|
+
* `gro gitops_plan --registry ../repos.toml`
|
|
24
27
|
* `gro gitops_plan --config ./custom.config.ts`
|
|
25
28
|
*
|
|
26
29
|
* @nodocs
|
|
27
30
|
*/
|
|
28
31
|
export declare const task: Task<Args>;
|
|
32
|
+
/**
|
|
33
|
+
* The side effects `run_gitops_plan` reaches through, injectable for tests.
|
|
34
|
+
*
|
|
35
|
+
* @nodocs
|
|
36
|
+
*/
|
|
37
|
+
export interface GitopsPlanDeps {
|
|
38
|
+
/** Loads the configured repos as they sit (`get_gitops_ready`). */
|
|
39
|
+
load_repos: (options: ResolveGitopsReposOptions) => Promise<{
|
|
40
|
+
local_repos: Array<LocalRepo>;
|
|
41
|
+
}>;
|
|
42
|
+
/** Reads each repo's changesets for the plan. */
|
|
43
|
+
changeset_ops: ChangesetOperations;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Runs `gro gitops_plan`: loads the repos as they sit, logs the readiness
|
|
47
|
+
* block, generates the plan, and outputs it. Under `--format json` or
|
|
48
|
+
* `markdown` without `--outfile`, the log goes to stderr and stdout carries
|
|
49
|
+
* the document alone (`route_human_output`).
|
|
50
|
+
*
|
|
51
|
+
* @throws {Error} when the plan has errors that would block publishing, after outputting it
|
|
52
|
+
* @nodocs
|
|
53
|
+
*/
|
|
54
|
+
export declare const run_gitops_plan: (args: Args, log: Logger, deps?: Partial<GitopsPlanDeps>) => Promise<void>;
|
|
29
55
|
//# sourceMappingURL=gitops_plan.task.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitops_plan.task.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gitops_plan.task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"gitops_plan.task.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gitops_plan.task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAGN,KAAK,yBAAyB,EAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAgB3D,cAAc;AACd,eAAO,MAAM,IAAI;;;;;;;;;;kBAkBf,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CAM3B,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B,mEAAmE;IACnE,UAAU,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAO,CAAC;QAAE,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;KAAE,CAAC,CAAC;IAC/F,iDAAiD;IACjD,aAAa,EAAE,mBAAmB,CAAC;CACnC;AAOD;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAC3B,MAAM,IAAI,EACV,KAAK,MAAM,EACX,OAAM,OAAO,CAAC,cAAc,CAAM,KAChC,OAAO,CAAC,IAAI,CA4Bd,CAAC"}
|
package/dist/gitops_plan.task.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { styleText as st } from 'node:util';
|
|
3
|
-
import { get_gitops_ready } from './gitops_task_helpers.js';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { get_gitops_ready, log_readiness_block } from './gitops_task_helpers.js';
|
|
4
|
+
import { default_changeset_operations } from './operations_defaults.js';
|
|
5
|
+
import { generate_publishing_plan, version_change_kind } from './publishing_plan.js';
|
|
6
|
+
import { log_publishing_plan } from './publishing_plan_logging.js';
|
|
7
|
+
import { format_and_output, output_is_machine, route_human_output } from './output_helpers.js';
|
|
6
8
|
import { GITOPS_CONFIG_PATH_DEFAULT } from './gitops_constants.js';
|
|
7
9
|
/** @nodocs */
|
|
8
10
|
export const Args = z.strictObject({
|
|
@@ -10,22 +12,18 @@ export const Args = z.strictObject({
|
|
|
10
12
|
.string()
|
|
11
13
|
.meta({ description: 'path to the gitops config file, absolute or relative to the cwd' })
|
|
12
14
|
.default(GITOPS_CONFIG_PATH_DEFAULT),
|
|
13
|
-
|
|
15
|
+
registry: z
|
|
14
16
|
.string()
|
|
15
|
-
.meta({
|
|
17
|
+
.meta({
|
|
18
|
+
description: 'path to the repos.toml registry, when `repos` would not find it walking up from the cwd'
|
|
19
|
+
})
|
|
16
20
|
.optional(),
|
|
17
21
|
format: z
|
|
18
22
|
.enum(['stdout', 'json', 'markdown'])
|
|
19
23
|
.meta({ description: 'output format' })
|
|
20
24
|
.default('stdout'),
|
|
21
25
|
outfile: z.string().meta({ description: 'write output to file instead of logging' }).optional(),
|
|
22
|
-
verbose: z.boolean().meta({ description: 'show additional details' }).default(false)
|
|
23
|
-
sync: z
|
|
24
|
-
.boolean()
|
|
25
|
-
.meta({
|
|
26
|
-
description: 'sync repos (switch branch, pull, install) before planning instead of reading the working tree as-is'
|
|
27
|
-
})
|
|
28
|
-
.default(false)
|
|
26
|
+
verbose: z.boolean().meta({ description: 'show additional details' }).default(false)
|
|
29
27
|
});
|
|
30
28
|
/**
|
|
31
29
|
* Generate a publishing plan showing what would happen during multi-repo publishing.
|
|
@@ -33,7 +31,7 @@ export const Args = z.strictObject({
|
|
|
33
31
|
*
|
|
34
32
|
* Usage:
|
|
35
33
|
* `gro gitops_plan`
|
|
36
|
-
* `gro gitops_plan --
|
|
34
|
+
* `gro gitops_plan --registry ../repos.toml`
|
|
37
35
|
* `gro gitops_plan --config ./custom.config.ts`
|
|
38
36
|
*
|
|
39
37
|
* @nodocs
|
|
@@ -42,29 +40,43 @@ export const task = {
|
|
|
42
40
|
summary: 'generate a publishing plan based on changesets',
|
|
43
41
|
Args,
|
|
44
42
|
run: async ({ args, log }) => {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
43
|
+
await run_gitops_plan(args, log);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const default_gitops_plan_deps = {
|
|
47
|
+
load_repos: get_gitops_ready,
|
|
48
|
+
changeset_ops: default_changeset_operations
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Runs `gro gitops_plan`: loads the repos as they sit, logs the readiness
|
|
52
|
+
* block, generates the plan, and outputs it. Under `--format json` or
|
|
53
|
+
* `markdown` without `--outfile`, the log goes to stderr and stdout carries
|
|
54
|
+
* the document alone (`route_human_output`).
|
|
55
|
+
*
|
|
56
|
+
* @throws {Error} when the plan has errors that would block publishing, after outputting it
|
|
57
|
+
* @nodocs
|
|
58
|
+
*/
|
|
59
|
+
export const run_gitops_plan = async (args, log, deps = {}) => {
|
|
60
|
+
const { load_repos, changeset_ops } = { ...default_gitops_plan_deps, ...deps };
|
|
61
|
+
const { config, registry, format, outfile, verbose } = args;
|
|
62
|
+
const write_stdout = route_human_output(log, output_is_machine(format, outfile));
|
|
63
|
+
log.info(st('cyan', 'Generating multi-repo publishing plan...'));
|
|
64
|
+
// Load local repos as they sit, and say which aren't at rest
|
|
65
|
+
const { local_repos } = await load_repos({ config, registry, log });
|
|
66
|
+
log_readiness_block(local_repos, log);
|
|
67
|
+
log.info(` Found ${local_repos.length} local repos`);
|
|
68
|
+
// Generate publishing plan
|
|
69
|
+
const plan = await generate_publishing_plan(local_repos, { log, verbose, ops: changeset_ops });
|
|
70
|
+
// Format and output using output_helpers
|
|
71
|
+
await format_and_output(plan, create_plan_formatters({ verbose }), {
|
|
72
|
+
format,
|
|
73
|
+
outfile,
|
|
74
|
+
log,
|
|
75
|
+
write_stdout
|
|
76
|
+
});
|
|
77
|
+
// Exit with error if there are blocking issues
|
|
78
|
+
if (plan.errors.length > 0) {
|
|
79
|
+
throw new Error('Publishing plan found errors that would block publishing');
|
|
68
80
|
}
|
|
69
81
|
};
|
|
70
82
|
const create_plan_formatters = (options = {}) => ({
|
|
@@ -76,6 +88,7 @@ const create_plan_formatters = (options = {}) => ({
|
|
|
76
88
|
breaking_cascades: Object.fromEntries(plan.breaking_cascades),
|
|
77
89
|
warnings: plan.warnings,
|
|
78
90
|
info: plan.info,
|
|
91
|
+
no_changes: plan.no_changes,
|
|
79
92
|
errors: plan.errors
|
|
80
93
|
};
|
|
81
94
|
return JSON.stringify(output, null, 2);
|
|
@@ -85,7 +98,7 @@ const create_plan_formatters = (options = {}) => ({
|
|
|
85
98
|
});
|
|
86
99
|
const format_plan_as_markdown = (plan) => {
|
|
87
100
|
const lines = [];
|
|
88
|
-
const { publishing_order, version_changes, dependency_updates, breaking_cascades, warnings, info, errors } = plan;
|
|
101
|
+
const { publishing_order, version_changes, dependency_updates, breaking_cascades, warnings, info, no_changes, errors } = plan;
|
|
89
102
|
lines.push('# Publishing Plan');
|
|
90
103
|
lines.push('');
|
|
91
104
|
// Errors
|
|
@@ -106,28 +119,28 @@ const format_plan_as_markdown = (plan) => {
|
|
|
106
119
|
}
|
|
107
120
|
// Version changes
|
|
108
121
|
if (version_changes.length > 0) {
|
|
109
|
-
const with_changesets = version_changes.filter((vc) => vc
|
|
110
|
-
const with_escalation = version_changes.filter((vc) => vc
|
|
111
|
-
const with_auto_changesets = version_changes.filter((vc) => vc
|
|
122
|
+
const with_changesets = version_changes.filter((vc) => version_change_kind(vc) === 'explicit');
|
|
123
|
+
const with_escalation = version_changes.filter((vc) => version_change_kind(vc) === 'escalation');
|
|
124
|
+
const with_auto_changesets = version_changes.filter((vc) => version_change_kind(vc) === 'auto');
|
|
112
125
|
if (with_changesets.length > 0) {
|
|
113
126
|
lines.push('## Version Changes (from changesets)');
|
|
114
127
|
lines.push('');
|
|
115
|
-
lines.push('| Package | From | To | Bump |
|
|
116
|
-
lines.push('
|
|
128
|
+
lines.push('| Package | From | To | Bump | Breaking |');
|
|
129
|
+
lines.push('|---------|------|----|------|----------|');
|
|
117
130
|
for (const change of with_changesets) {
|
|
118
|
-
const
|
|
119
|
-
lines.push(`| \`${change.package_name}\` | ${change.from} | ${change.to} | ${change.bump_type} | ${
|
|
131
|
+
const breaking = change.breaking ? 'đĨ Yes' : 'No';
|
|
132
|
+
lines.push(`| \`${change.package_name}\` | ${change.from} | ${change.to} | ${change.bump_type} | ${breaking} |`);
|
|
120
133
|
}
|
|
121
134
|
lines.push('');
|
|
122
135
|
}
|
|
123
136
|
if (with_escalation.length > 0) {
|
|
124
137
|
lines.push('## Version Changes (bump escalation required)');
|
|
125
138
|
lines.push('');
|
|
126
|
-
lines.push('| Package | From | To | Changesets Bump | Required Bump |
|
|
127
|
-
lines.push('
|
|
139
|
+
lines.push('| Package | From | To | Changesets Bump | Required Bump | Breaking |');
|
|
140
|
+
lines.push('|---------|------|-----|-----------------|---------------|----------|');
|
|
128
141
|
for (const change of with_escalation) {
|
|
129
|
-
const
|
|
130
|
-
lines.push(`| \`${change.package_name}\` | ${change.from} | ${change.to} | ${change.existing_bump} | ${change.required_bump} | ${
|
|
142
|
+
const breaking = change.breaking ? 'đĨ Yes' : 'No';
|
|
143
|
+
lines.push(`| \`${change.package_name}\` | ${change.from} | ${change.to} | ${change.existing_bump} | ${change.required_bump} | ${breaking} |`);
|
|
131
144
|
}
|
|
132
145
|
lines.push('');
|
|
133
146
|
lines.push('> âŦī¸ These packages have changesets, but dependencies require a larger version bump.');
|
|
@@ -136,11 +149,11 @@ const format_plan_as_markdown = (plan) => {
|
|
|
136
149
|
if (with_auto_changesets.length > 0) {
|
|
137
150
|
lines.push('## Version Changes (auto-generated for dependency updates)');
|
|
138
151
|
lines.push('');
|
|
139
|
-
lines.push('| Package | From | To | Bump |
|
|
140
|
-
lines.push('
|
|
152
|
+
lines.push('| Package | From | To | Bump | Breaking |');
|
|
153
|
+
lines.push('|---------|------|-----|------|----------|');
|
|
141
154
|
for (const change of with_auto_changesets) {
|
|
142
|
-
const
|
|
143
|
-
lines.push(`| \`${change.package_name}\` | ${change.from} | ${change.to} | ${change.bump_type} | ${
|
|
155
|
+
const breaking = change.breaking ? 'đĨ Yes' : 'No';
|
|
156
|
+
lines.push(`| \`${change.package_name}\` | ${change.from} | ${change.to} | ${change.bump_type} | ${breaking} |`);
|
|
144
157
|
}
|
|
145
158
|
lines.push('');
|
|
146
159
|
}
|
|
@@ -201,24 +214,33 @@ const format_plan_as_markdown = (plan) => {
|
|
|
201
214
|
}
|
|
202
215
|
lines.push('');
|
|
203
216
|
}
|
|
204
|
-
// Info (
|
|
217
|
+
// Info (normal status, not warnings)
|
|
205
218
|
if (info.length > 0) {
|
|
206
|
-
lines.push('## âšī¸
|
|
219
|
+
lines.push('## âšī¸ Info');
|
|
220
|
+
lines.push('');
|
|
221
|
+
for (const line of info) {
|
|
222
|
+
lines.push(`- ${line}`);
|
|
223
|
+
}
|
|
224
|
+
lines.push('');
|
|
225
|
+
}
|
|
226
|
+
// Packages with nothing to publish (normal status)
|
|
227
|
+
if (no_changes.length > 0) {
|
|
228
|
+
lines.push('## No Changes to Publish');
|
|
207
229
|
lines.push('');
|
|
208
|
-
lines.push('*These packages have no changesets and
|
|
230
|
+
lines.push('*These packages have no changesets and nothing to publish:*');
|
|
209
231
|
lines.push('');
|
|
210
|
-
for (const pkg of
|
|
232
|
+
for (const pkg of no_changes) {
|
|
211
233
|
lines.push(`- \`${pkg}\``);
|
|
212
234
|
}
|
|
213
235
|
lines.push('');
|
|
214
236
|
}
|
|
215
237
|
// Summary
|
|
216
|
-
const
|
|
238
|
+
const breaking_count = version_changes.filter((vc) => vc.breaking).length;
|
|
217
239
|
lines.push('## Summary');
|
|
218
240
|
lines.push('');
|
|
219
241
|
lines.push(`- **Packages to publish**: ${version_changes.length}`);
|
|
220
242
|
lines.push(`- **Dependency updates**: ${dependency_updates.length}`);
|
|
221
|
-
lines.push(`- **
|
|
243
|
+
lines.push(`- **Breaking changes**: ${breaking_count}`);
|
|
222
244
|
lines.push(`- **Warnings**: ${warnings.length}`);
|
|
223
245
|
lines.push(`- **Errors**: ${errors.length}`);
|
|
224
246
|
return lines;
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import type { Task } from '@fuzdev/gro';
|
|
2
|
+
import type { Logger } from '@fuzdev/fuz_util/log.ts';
|
|
2
3
|
import { z } from 'zod';
|
|
4
|
+
import { type ResolveGitopsReposOptions } from './gitops_task_helpers.js';
|
|
5
|
+
import type { LocalRepo } from './local_repo.js';
|
|
6
|
+
import type { GitopsOperations, ReposOperations } from './operations.js';
|
|
3
7
|
/** @nodocs */
|
|
4
8
|
export declare const Args: z.ZodObject<{
|
|
5
9
|
config: z.ZodDefault<z.ZodString>;
|
|
6
|
-
|
|
10
|
+
registry: z.ZodOptional<z.ZodString>;
|
|
7
11
|
peer_strategy: z.ZodDefault<z.ZodEnum<{
|
|
8
12
|
exact: "exact";
|
|
9
13
|
caret: "caret";
|
|
10
14
|
tilde: "tilde";
|
|
15
|
+
gte: "gte";
|
|
11
16
|
}>>;
|
|
12
17
|
wetrun: z.ZodDefault<z.ZodBoolean>;
|
|
13
18
|
format: z.ZodDefault<z.ZodEnum<{
|
|
@@ -21,10 +26,65 @@ export declare const Args: z.ZodObject<{
|
|
|
21
26
|
emit_json: z.ZodDefault<z.ZodBoolean>;
|
|
22
27
|
outfile: z.ZodOptional<z.ZodString>;
|
|
23
28
|
verbose: z.ZodDefault<z.ZodBoolean>;
|
|
24
|
-
sync: z.ZodDefault<z.ZodBoolean>;
|
|
25
29
|
preview: z.ZodDefault<z.ZodBoolean>;
|
|
26
30
|
}, z.core.$strict>;
|
|
27
31
|
export type Args = z.infer<typeof Args>;
|
|
28
32
|
/** @nodocs */
|
|
29
33
|
export declare const task: Task<Args>;
|
|
34
|
+
/**
|
|
35
|
+
* The side effects `run_gitops_publish` reaches through, injectable so the
|
|
36
|
+
* order of its steps is testable.
|
|
37
|
+
*
|
|
38
|
+
* @nodocs
|
|
39
|
+
*/
|
|
40
|
+
export interface GitopsPublishDeps {
|
|
41
|
+
/** Loads the configured repos as they sit (`get_gitops_ready`). */
|
|
42
|
+
load_repos: (options: ResolveGitopsReposOptions) => Promise<{
|
|
43
|
+
local_repos: Array<LocalRepo>;
|
|
44
|
+
}>;
|
|
45
|
+
/** Runs `repos status` for the readiness gate. */
|
|
46
|
+
repos_ops: ReposOperations;
|
|
47
|
+
/** The executor's operations. */
|
|
48
|
+
ops: GitopsOperations;
|
|
49
|
+
/**
|
|
50
|
+
* Asks the operator to confirm the plan, on stderr, so a machine-readable
|
|
51
|
+
* stdout carries nothing but its document or events.
|
|
52
|
+
*/
|
|
53
|
+
confirm: () => Promise<boolean>;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Runs `gro gitops_publish`, in order: load the repos as they sit,
|
|
57
|
+
* generate the plan, and â for `--wetrun` â run the readiness gate
|
|
58
|
+
* (`gate_publish_readiness`, read-only: `repos status --fetch`) before
|
|
59
|
+
* printing the plan and asking to confirm, so a refusal or a "no" changes
|
|
60
|
+
* nothing. Then preflight and the executor. A dry run skips the gate and
|
|
61
|
+
* prints the diagnostics' readiness block instead. Under `--emit_json`, or
|
|
62
|
+
* `--format json` or `markdown` without `--outfile`, the log goes to stderr
|
|
63
|
+
* and stdout carries the events or the report alone (`route_human_output`).
|
|
64
|
+
*
|
|
65
|
+
* @returns `cancelled` when the operator declines, `failed` when the run failed (its output already written), else `done`
|
|
66
|
+
* @throws {TaskError} when the readiness gate refuses or loading fails
|
|
67
|
+
* @nodocs
|
|
68
|
+
*/
|
|
69
|
+
export declare const run_gitops_publish: (args: Args, log: Logger, deps?: Partial<GitopsPublishDeps>) => Promise<"done" | "cancelled" | "failed">;
|
|
70
|
+
/**
|
|
71
|
+
* Where `gro publish` and `gro deploy`, streaming live, show their stdout: on
|
|
72
|
+
* our stderr when our stdout carries a machine-readable stream â the
|
|
73
|
+
* `--emit_json` events, or a JSON or markdown report not sent to `--outfile` â
|
|
74
|
+
* so their output can't corrupt it, else on our stdout. The same test sends
|
|
75
|
+
* the task's own log and prompt to stderr.
|
|
76
|
+
*
|
|
77
|
+
* @nodocs
|
|
78
|
+
*/
|
|
79
|
+
export declare const to_child_stdout: (args: Pick<Args, "emit_json" | "format" | "outfile">) => "stdout" | "stderr";
|
|
80
|
+
/**
|
|
81
|
+
* A failed package's markdown: the message's first line on the bullet, and the
|
|
82
|
+
* rest â the end of a command's stderr â in an indented fenced block, its fence
|
|
83
|
+
* longer than any backtick run inside so stderr can't close it.
|
|
84
|
+
*
|
|
85
|
+
* @param name - the package name
|
|
86
|
+
* @param message - the failure message
|
|
87
|
+
* @nodocs
|
|
88
|
+
*/
|
|
89
|
+
export declare const format_failure_markdown: (name: string, message: string) => Array<string>;
|
|
30
90
|
//# sourceMappingURL=gitops_publish.task.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitops_publish.task.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gitops_publish.task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"gitops_publish.task.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gitops_publish.task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAIN,KAAK,yBAAyB,EAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAyBzE,cAAc;AACd,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;kBAoDf,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,cAAc;AACd,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CAY3B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IACjC,mEAAmE;IACnE,UAAU,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAO,CAAC;QAAE,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;KAAE,CAAC,CAAC;IAC/F,kDAAkD;IAClD,SAAS,EAAE,eAAe,CAAC;IAC3B,iCAAiC;IACjC,GAAG,EAAE,gBAAgB,CAAC;IACtB;;;OAGG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAChC;AAYD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,GAC9B,MAAM,IAAI,EACV,KAAK,MAAM,EACX,OAAM,OAAO,CAAC,iBAAiB,CAAM,KACnC,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,QAAQ,CA4HzC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAC3B,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC,KAClD,QAAQ,GAAG,QACuE,CAAC;AAEtF;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,KAAK,CAAC,MAAM,CAQnF,CAAC"}
|