@formigio/fazemos-cli 0.10.35 → 0.10.38
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/dist/config.d.ts +16 -0
- package/dist/config.js +31 -0
- package/dist/config.js.map +1 -1
- package/dist/connectionErrorCopy.d.ts +5 -1
- package/dist/connectionErrorCopy.js +15 -2
- package/dist/connectionErrorCopy.js.map +1 -1
- package/dist/dircontext.d.ts +45 -0
- package/dist/dircontext.js +89 -0
- package/dist/dircontext.js.map +1 -0
- package/dist/index.js +650 -18
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/config.d.ts
CHANGED
|
@@ -94,6 +94,22 @@ export declare function getEnv(): {
|
|
|
94
94
|
export declare function getToken(): string | null;
|
|
95
95
|
export declare function getActiveOrgId(): string | null;
|
|
96
96
|
export declare function setActiveOrgId(orgId: string): void;
|
|
97
|
+
/** Set the in-memory active-org override (resolved org id, or null to clear). */
|
|
98
|
+
export declare function setOrgOverride(orgId: string | null): void;
|
|
99
|
+
/** Set the in-memory active-project override (resolved project id, or null to clear). */
|
|
100
|
+
export declare function setProjectOverride(projectId: string | null): void;
|
|
101
|
+
/** Record where the directory context came from, for display in whoami/config. */
|
|
102
|
+
export declare function setDirContextSource(source: {
|
|
103
|
+
path: string;
|
|
104
|
+
org?: string;
|
|
105
|
+
project?: string;
|
|
106
|
+
} | null): void;
|
|
107
|
+
/** Returns the directory-context source (file path + raw slugs) if one is active. */
|
|
108
|
+
export declare function getDirContextSource(): {
|
|
109
|
+
path: string;
|
|
110
|
+
org?: string;
|
|
111
|
+
project?: string;
|
|
112
|
+
} | null;
|
|
97
113
|
export declare function setAuth(env: string, email: string, idToken: string, refreshToken: string, expiresInSeconds: number): void;
|
|
98
114
|
/**
|
|
99
115
|
* Returns the active project id for the currently-active org, or null if
|
package/dist/config.js
CHANGED
|
@@ -39,12 +39,41 @@ export function getToken() {
|
|
|
39
39
|
return auth.idToken;
|
|
40
40
|
}
|
|
41
41
|
export function getActiveOrgId() {
|
|
42
|
+
if (orgOverride)
|
|
43
|
+
return orgOverride;
|
|
42
44
|
const orgId = config.get('activeOrgId');
|
|
43
45
|
return orgId || null;
|
|
44
46
|
}
|
|
45
47
|
export function setActiveOrgId(orgId) {
|
|
46
48
|
config.set('activeOrgId', orgId);
|
|
47
49
|
}
|
|
50
|
+
// ── Directory-scoped context override (.fazemos.json) ───────
|
|
51
|
+
//
|
|
52
|
+
// A `.fazemos.json` discovered by walking up from the cwd pins a default org
|
|
53
|
+
// and project for the working directory. These overrides are resolved once at
|
|
54
|
+
// CLI bootstrap (slug → id against /auth/me) and held in memory for the
|
|
55
|
+
// process. They take precedence over the persisted "active" selection but sit
|
|
56
|
+
// below an explicit `--project` flag (which is threaded via ApiOptions). See
|
|
57
|
+
// src/dircontext.ts and the preAction hook in src/index.ts.
|
|
58
|
+
let orgOverride = null;
|
|
59
|
+
let projectOverride = null;
|
|
60
|
+
let dirContextSource = null;
|
|
61
|
+
/** Set the in-memory active-org override (resolved org id, or null to clear). */
|
|
62
|
+
export function setOrgOverride(orgId) {
|
|
63
|
+
orgOverride = orgId;
|
|
64
|
+
}
|
|
65
|
+
/** Set the in-memory active-project override (resolved project id, or null to clear). */
|
|
66
|
+
export function setProjectOverride(projectId) {
|
|
67
|
+
projectOverride = projectId;
|
|
68
|
+
}
|
|
69
|
+
/** Record where the directory context came from, for display in whoami/config. */
|
|
70
|
+
export function setDirContextSource(source) {
|
|
71
|
+
dirContextSource = source;
|
|
72
|
+
}
|
|
73
|
+
/** Returns the directory-context source (file path + raw slugs) if one is active. */
|
|
74
|
+
export function getDirContextSource() {
|
|
75
|
+
return dirContextSource;
|
|
76
|
+
}
|
|
48
77
|
export function setAuth(env, email, idToken, refreshToken, expiresInSeconds) {
|
|
49
78
|
const auth = config.get('auth');
|
|
50
79
|
auth[env] = {
|
|
@@ -63,6 +92,8 @@ export function setAuth(env, email, idToken, refreshToken, expiresInSeconds) {
|
|
|
63
92
|
* "requirement missing: project" error when the API says so.
|
|
64
93
|
*/
|
|
65
94
|
export function getActiveProjectId() {
|
|
95
|
+
if (projectOverride)
|
|
96
|
+
return projectOverride;
|
|
66
97
|
const orgId = getActiveOrgId();
|
|
67
98
|
if (!orgId)
|
|
68
99
|
return null;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,5 +65,9 @@ export declare function isProjectConnectionUnavailable(body: unknown): body is P
|
|
|
65
65
|
*
|
|
66
66
|
* F22 — Branches on `error.provider` per UX-manifest §3 table. Falls
|
|
67
67
|
* back to a provider-neutral line when provider is unknown/null.
|
|
68
|
+
*
|
|
69
|
+
* F42 — For reason='missing' (both connection columns NULL after BUG72
|
|
70
|
+
* closure), admin copy appends a `projects setup` next-step hint so
|
|
71
|
+
* operators know exactly which command to run.
|
|
68
72
|
*/
|
|
69
|
-
export declare function renderProjectConnectionUnavailableCopy(error: Pick<ProjectConnectionUnavailableErrorBody, 'reason' | 'orgSlug' | 'connectionId' | 'provider'>, role: 'owner' | 'admin' | 'member' | string): ConnectionErrorLines;
|
|
73
|
+
export declare function renderProjectConnectionUnavailableCopy(error: Pick<ProjectConnectionUnavailableErrorBody, 'reason' | 'orgSlug' | 'projectSlug' | 'connectionId' | 'provider'>, role: 'owner' | 'admin' | 'member' | string): ConnectionErrorLines;
|
|
@@ -87,6 +87,10 @@ function providerLabel(provider) {
|
|
|
87
87
|
*
|
|
88
88
|
* F22 — Branches on `error.provider` per UX-manifest §3 table. Falls
|
|
89
89
|
* back to a provider-neutral line when provider is unknown/null.
|
|
90
|
+
*
|
|
91
|
+
* F42 — For reason='missing' (both connection columns NULL after BUG72
|
|
92
|
+
* closure), admin copy appends a `projects setup` next-step hint so
|
|
93
|
+
* operators know exactly which command to run.
|
|
90
94
|
*/
|
|
91
95
|
export function renderProjectConnectionUnavailableCopy(error, role) {
|
|
92
96
|
const isAdmin = role === 'owner' || role === 'admin';
|
|
@@ -96,6 +100,15 @@ export function renderProjectConnectionUnavailableCopy(error, role) {
|
|
|
96
100
|
: `/org/${error.orgSlug}/settings/connections`;
|
|
97
101
|
const ctaUrl = origin ? `${origin}${settingsPath}` : settingsPath;
|
|
98
102
|
const label = providerLabel(error.provider);
|
|
103
|
+
/**
|
|
104
|
+
* F42 §5.2.1 — next-step hint for the "no connection bound" (reason=missing)
|
|
105
|
+
* admin case. Rendered as the second line of the body so existing call sites
|
|
106
|
+
* (pl create) display it without code changes. Uses `projectSlug` from the
|
|
107
|
+
* structured error payload.
|
|
108
|
+
*/
|
|
109
|
+
const missingAdminNextStep = error.projectSlug
|
|
110
|
+
? `Run: fazemos projects setup ${error.projectSlug} --vcs-connection-id <id> (See: fazemos connections list)`
|
|
111
|
+
: 'Run: fazemos projects setup <slug> --vcs-connection-id <id> (See: fazemos connections list)';
|
|
99
112
|
// ── Defensive fallback: unknown provider ──────────────────────
|
|
100
113
|
// UX manifest §3 last paragraph: "render the provider name as a raw
|
|
101
114
|
// string if neither github nor bitbucket — 'Code platform connection
|
|
@@ -105,7 +118,7 @@ export function renderProjectConnectionUnavailableCopy(error, role) {
|
|
|
105
118
|
return isAdmin
|
|
106
119
|
? {
|
|
107
120
|
title: 'Connect a code platform to run this pipeline.',
|
|
108
|
-
body:
|
|
121
|
+
body: `This project needs a code platform connection to clone its repos.\n${missingAdminNextStep}`,
|
|
109
122
|
ctaUrl,
|
|
110
123
|
}
|
|
111
124
|
: {
|
|
@@ -129,7 +142,7 @@ export function renderProjectConnectionUnavailableCopy(error, role) {
|
|
|
129
142
|
return isAdmin
|
|
130
143
|
? {
|
|
131
144
|
title: `Connect ${label} to run this pipeline.`,
|
|
132
|
-
body: `This project needs a ${label} connection to clone its repos
|
|
145
|
+
body: `This project needs a ${label} connection to clone its repos.\n${missingAdminNextStep}`,
|
|
133
146
|
ctaUrl,
|
|
134
147
|
}
|
|
135
148
|
: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectionErrorCopy.js","sourceRoot":"","sources":["../src/connectionErrorCopy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAoCrC;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,IAAa;IAEb,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,CAAC,GAAG,IAA+B,CAAC;IAC1C,OAAO,CACL,CAAC,CAAC,IAAI,KAAK,gCAAgC;QAC3C,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAC5B,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAgB,CAAC;QAC/E,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAC7B,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAClC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,kEAAkE;QAClE,0EAA0E;QAC1E,uDAAuD;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,yCAAyC;QACzC,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACjE,OAAO,uBAAuB,CAAC;QACjC,CAAC;QACD,iDAAiD;QACjD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC5C,OAAO,GAAG,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,QAA2D;IAChF,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,QAAQ,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"connectionErrorCopy.js","sourceRoot":"","sources":["../src/connectionErrorCopy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-directory default org/project context.
|
|
3
|
+
*
|
|
4
|
+
* A `.fazemos.json` file pins the default org and project for a working
|
|
5
|
+
* directory (and everything beneath it), so running the CLI inside a given
|
|
6
|
+
* project tree scopes every call to that org/project without a manual
|
|
7
|
+
* `orgs switch` / `projects switch`. Discovery walks up from the cwd to the
|
|
8
|
+
* filesystem root — the nearest file wins — exactly like git, eslint, etc.
|
|
9
|
+
*
|
|
10
|
+
* Values are stored as **slugs** (not UUIDs) so the file is human-readable,
|
|
11
|
+
* git-committable, and resolves correctly across environments (dev/prod have
|
|
12
|
+
* different ids for the same org/project). Slug → id resolution happens at
|
|
13
|
+
* call time against the cached /auth/me response.
|
|
14
|
+
*/
|
|
15
|
+
export declare const DIR_CONFIG_FILENAME = ".fazemos.json";
|
|
16
|
+
export interface DirContext {
|
|
17
|
+
/** Org slug (or UUID) to pin for this directory. */
|
|
18
|
+
org?: string;
|
|
19
|
+
/** Project slug (or UUID) to pin for this directory. */
|
|
20
|
+
project?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface FoundDirContext {
|
|
23
|
+
/** Absolute path to the `.fazemos.json` that supplied the context. */
|
|
24
|
+
path: string;
|
|
25
|
+
context: DirContext;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Read the `.fazemos.json` in a single directory (no walk-up). Returns null
|
|
29
|
+
* when the file is absent. Throws on malformed JSON so the caller can surface
|
|
30
|
+
* a clear error rather than silently ignoring a typo'd config.
|
|
31
|
+
*/
|
|
32
|
+
export declare function readDirContextFile(dir: string): FoundDirContext | null;
|
|
33
|
+
/**
|
|
34
|
+
* Walk up from `startDir` to the filesystem root looking for the nearest
|
|
35
|
+
* `.fazemos.json`. Returns null if none is found. Throws if the nearest file
|
|
36
|
+
* is malformed.
|
|
37
|
+
*/
|
|
38
|
+
export declare function findDirContextFile(startDir?: string): FoundDirContext | null;
|
|
39
|
+
/**
|
|
40
|
+
* Write a `.fazemos.json` into `dir`. Fields with no value are omitted so the
|
|
41
|
+
* file stays minimal. Returns the absolute path written.
|
|
42
|
+
*/
|
|
43
|
+
export declare function writeDirContextFile(dir: string, context: DirContext): string;
|
|
44
|
+
/** Remove the `.fazemos.json` in `dir`. Returns the path if one was removed, else null. */
|
|
45
|
+
export declare function removeDirContextFile(dir: string): string | null;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync, rmSync } from 'fs';
|
|
2
|
+
import { dirname, join, parse as parsePath } from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Per-directory default org/project context.
|
|
5
|
+
*
|
|
6
|
+
* A `.fazemos.json` file pins the default org and project for a working
|
|
7
|
+
* directory (and everything beneath it), so running the CLI inside a given
|
|
8
|
+
* project tree scopes every call to that org/project without a manual
|
|
9
|
+
* `orgs switch` / `projects switch`. Discovery walks up from the cwd to the
|
|
10
|
+
* filesystem root — the nearest file wins — exactly like git, eslint, etc.
|
|
11
|
+
*
|
|
12
|
+
* Values are stored as **slugs** (not UUIDs) so the file is human-readable,
|
|
13
|
+
* git-committable, and resolves correctly across environments (dev/prod have
|
|
14
|
+
* different ids for the same org/project). Slug → id resolution happens at
|
|
15
|
+
* call time against the cached /auth/me response.
|
|
16
|
+
*/
|
|
17
|
+
export const DIR_CONFIG_FILENAME = '.fazemos.json';
|
|
18
|
+
/** Parse a raw object into a DirContext, tolerating unknown fields. */
|
|
19
|
+
function coerce(parsed, file) {
|
|
20
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
21
|
+
throw new Error(`Invalid ${DIR_CONFIG_FILENAME} at ${file}: expected a JSON object`);
|
|
22
|
+
}
|
|
23
|
+
const obj = parsed;
|
|
24
|
+
const ctx = {};
|
|
25
|
+
if (typeof obj.org === 'string' && obj.org.trim())
|
|
26
|
+
ctx.org = obj.org.trim();
|
|
27
|
+
if (typeof obj.project === 'string' && obj.project.trim())
|
|
28
|
+
ctx.project = obj.project.trim();
|
|
29
|
+
return ctx;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Read the `.fazemos.json` in a single directory (no walk-up). Returns null
|
|
33
|
+
* when the file is absent. Throws on malformed JSON so the caller can surface
|
|
34
|
+
* a clear error rather than silently ignoring a typo'd config.
|
|
35
|
+
*/
|
|
36
|
+
export function readDirContextFile(dir) {
|
|
37
|
+
const file = join(dir, DIR_CONFIG_FILENAME);
|
|
38
|
+
if (!existsSync(file))
|
|
39
|
+
return null;
|
|
40
|
+
let parsed;
|
|
41
|
+
try {
|
|
42
|
+
parsed = JSON.parse(readFileSync(file, 'utf-8'));
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
throw new Error(`Invalid ${DIR_CONFIG_FILENAME} at ${file}: ${err.message}`);
|
|
46
|
+
}
|
|
47
|
+
return { path: file, context: coerce(parsed, file) };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Walk up from `startDir` to the filesystem root looking for the nearest
|
|
51
|
+
* `.fazemos.json`. Returns null if none is found. Throws if the nearest file
|
|
52
|
+
* is malformed.
|
|
53
|
+
*/
|
|
54
|
+
export function findDirContextFile(startDir = process.cwd()) {
|
|
55
|
+
const root = parsePath(startDir).root;
|
|
56
|
+
let dir = startDir;
|
|
57
|
+
// eslint-disable-next-line no-constant-condition
|
|
58
|
+
while (true) {
|
|
59
|
+
const found = readDirContextFile(dir);
|
|
60
|
+
if (found)
|
|
61
|
+
return found;
|
|
62
|
+
if (dir === root)
|
|
63
|
+
return null;
|
|
64
|
+
dir = dirname(dir);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Write a `.fazemos.json` into `dir`. Fields with no value are omitted so the
|
|
69
|
+
* file stays minimal. Returns the absolute path written.
|
|
70
|
+
*/
|
|
71
|
+
export function writeDirContextFile(dir, context) {
|
|
72
|
+
const file = join(dir, DIR_CONFIG_FILENAME);
|
|
73
|
+
const out = {};
|
|
74
|
+
if (context.org)
|
|
75
|
+
out.org = context.org;
|
|
76
|
+
if (context.project)
|
|
77
|
+
out.project = context.project;
|
|
78
|
+
writeFileSync(file, JSON.stringify(out, null, 2) + '\n', 'utf-8');
|
|
79
|
+
return file;
|
|
80
|
+
}
|
|
81
|
+
/** Remove the `.fazemos.json` in `dir`. Returns the path if one was removed, else null. */
|
|
82
|
+
export function removeDirContextFile(dir) {
|
|
83
|
+
const file = join(dir, DIR_CONFIG_FILENAME);
|
|
84
|
+
if (!existsSync(file))
|
|
85
|
+
return null;
|
|
86
|
+
rmSync(file);
|
|
87
|
+
return file;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=dircontext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dircontext.js","sourceRoot":"","sources":["../src/dircontext.ts"],"names":[],"mappings":"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"}
|