@gasboost/console 0.2.0 → 0.4.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 +1 -1
- package/dist/appsScript/AppsScriptProjectRepository.d.ts +21 -0
- package/dist/appsScript/AppsScriptProjectRepository.d.ts.map +1 -0
- package/dist/appsScript/AppsScriptProjectRepository.js +75 -0
- package/dist/appsScript/AppsScriptProjectRepository.js.map +1 -0
- package/dist/appsScript/appsScriptOperations.d.ts +6 -2
- package/dist/appsScript/appsScriptOperations.d.ts.map +1 -1
- package/dist/appsScript/appsScriptOperations.js +150 -40
- package/dist/appsScript/appsScriptOperations.js.map +1 -1
- package/dist/development/developmentOperations.d.ts +17 -0
- package/dist/development/developmentOperations.d.ts.map +1 -0
- package/dist/development/developmentOperations.js +197 -0
- package/dist/development/developmentOperations.js.map +1 -0
- package/dist/env/EnvFileRepository.d.ts +13 -0
- package/dist/env/EnvFileRepository.d.ts.map +1 -0
- package/dist/env/EnvFileRepository.js +67 -0
- package/dist/env/EnvFileRepository.js.map +1 -0
- package/dist/firebase/FirebaseProjectRepository.d.ts +17 -0
- package/dist/firebase/FirebaseProjectRepository.d.ts.map +1 -0
- package/dist/firebase/FirebaseProjectRepository.js +82 -0
- package/dist/firebase/FirebaseProjectRepository.js.map +1 -0
- package/dist/firebase/FirebaseRunner.d.ts +10 -0
- package/dist/firebase/FirebaseRunner.d.ts.map +1 -0
- package/dist/firebase/FirebaseRunner.js +54 -0
- package/dist/firebase/FirebaseRunner.js.map +1 -0
- package/dist/firebase/firebaseOperations.d.ts +20 -0
- package/dist/firebase/firebaseOperations.d.ts.map +1 -0
- package/dist/firebase/firebaseOperations.js +96 -0
- package/dist/firebase/firebaseOperations.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/openBrowser.d.ts +2 -0
- package/dist/openBrowser.d.ts.map +1 -0
- package/dist/openBrowser.js +20 -0
- package/dist/openBrowser.js.map +1 -0
- package/dist/startGasboostConsole.d.ts +3 -1
- package/dist/startGasboostConsole.d.ts.map +1 -1
- package/dist/startGasboostConsole.js +26 -10
- package/dist/startGasboostConsole.js.map +1 -1
- package/dist/ui/assets/index-B6Dn-OF9.css +1 -0
- package/dist/ui/assets/index-BGK5B9RA.js +6 -0
- package/dist/ui/gasboost-logo.png +0 -0
- package/dist/ui/index.html +170 -14
- package/package.json +3 -3
- package/dist/ui/assets/index-B2QLlRZv.css +0 -1
- package/dist/ui/assets/index-Bv7Miq39.js +0 -6
package/README.md
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { GasboostAppsScriptConfig } from "@gasboost/config";
|
|
2
|
+
export type AppsScriptProjectState = {
|
|
3
|
+
readonly configured: boolean;
|
|
4
|
+
readonly scriptId?: string;
|
|
5
|
+
readonly rootDir: string;
|
|
6
|
+
readonly manifestExists: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare class AppsScriptProjectRepository {
|
|
9
|
+
private readonly projectRoot;
|
|
10
|
+
private readonly config;
|
|
11
|
+
constructor({ projectRoot, config, }: {
|
|
12
|
+
readonly projectRoot: string;
|
|
13
|
+
readonly config: GasboostAppsScriptConfig;
|
|
14
|
+
});
|
|
15
|
+
read(): Promise<AppsScriptProjectState>;
|
|
16
|
+
connect(scriptId: string): Promise<void>;
|
|
17
|
+
private readClaspSettings;
|
|
18
|
+
private readClaspObject;
|
|
19
|
+
private exists;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=AppsScriptProjectRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppsScriptProjectRepository.d.ts","sourceRoot":"","sources":["../../src/appsScript/AppsScriptProjectRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAIjE,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAElD,YAAmB,EACjB,WAAW,EACX,MAAM,GACP,EAAE;QACD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;KAC3C,EAGA;IAEY,IAAI,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAOnD;IAEY,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWpD;YAEa,iBAAiB;YA2BjB,eAAe;YA0Bf,MAAM;CAgBrB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
export class AppsScriptProjectRepository {
|
|
4
|
+
projectRoot;
|
|
5
|
+
config;
|
|
6
|
+
constructor({ projectRoot, config, }) {
|
|
7
|
+
this.projectRoot = projectRoot;
|
|
8
|
+
this.config = config;
|
|
9
|
+
}
|
|
10
|
+
async read() {
|
|
11
|
+
const settings = await this.readClaspSettings();
|
|
12
|
+
const manifestExists = await this.exists(join(this.projectRoot, settings.rootDir, "appsscript.json"));
|
|
13
|
+
return { ...settings, manifestExists };
|
|
14
|
+
}
|
|
15
|
+
async connect(scriptId) {
|
|
16
|
+
const current = (await this.readClaspObject()) ?? {};
|
|
17
|
+
const rootDir = typeof current.rootDir === "string"
|
|
18
|
+
? current.rootDir
|
|
19
|
+
: (this.config.rootDir ?? ".");
|
|
20
|
+
await writeFile(join(this.projectRoot, ".clasp.json"), `${JSON.stringify({ ...current, scriptId, rootDir }, null, 2)}\n`, "utf8");
|
|
21
|
+
}
|
|
22
|
+
async readClaspSettings() {
|
|
23
|
+
const fallback = {
|
|
24
|
+
configured: false,
|
|
25
|
+
rootDir: this.config.rootDir ?? ".",
|
|
26
|
+
};
|
|
27
|
+
const value = await this.readClaspObject();
|
|
28
|
+
if (value === undefined)
|
|
29
|
+
return fallback;
|
|
30
|
+
if (typeof value.scriptId !== "string" || value.scriptId.length === 0) {
|
|
31
|
+
return fallback;
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
configured: true,
|
|
35
|
+
scriptId: value.scriptId,
|
|
36
|
+
rootDir: typeof value.rootDir === "string"
|
|
37
|
+
? value.rootDir
|
|
38
|
+
: (this.config.rootDir ?? "."),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async readClaspObject() {
|
|
42
|
+
try {
|
|
43
|
+
const value = JSON.parse(await readFile(join(this.projectRoot, ".clasp.json"), "utf8"));
|
|
44
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
45
|
+
throw new Error("Expected a JSON object.");
|
|
46
|
+
}
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
if (typeof error === "object" &&
|
|
51
|
+
error !== null &&
|
|
52
|
+
"code" in error &&
|
|
53
|
+
error.code === "ENOENT") {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
throw new Error(".clasp.json exists but does not contain valid project settings.", { cause: error });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async exists(path) {
|
|
60
|
+
try {
|
|
61
|
+
await readFile(path, "utf8");
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
if (typeof error === "object" &&
|
|
66
|
+
error !== null &&
|
|
67
|
+
"code" in error &&
|
|
68
|
+
error.code === "ENOENT") {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=AppsScriptProjectRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppsScriptProjectRepository.js","sourceRoot":"","sources":["../../src/appsScript/AppsScriptProjectRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,16 @@ export type AppsScriptStatus = {
|
|
|
6
6
|
readonly configured: boolean;
|
|
7
7
|
readonly scriptId?: string;
|
|
8
8
|
readonly rootDir: string;
|
|
9
|
+
readonly manifestExists: boolean;
|
|
10
|
+
readonly desired: boolean;
|
|
11
|
+
readonly deploymentId?: string;
|
|
9
12
|
};
|
|
10
13
|
type AppsScriptOperation = OperationDefinition<any, unknown>;
|
|
11
|
-
export declare function createAppsScriptOperations({ projectRoot, config, clasp, }: {
|
|
14
|
+
export declare function createAppsScriptOperations({ projectRoot, config, clasp, browserOpener, }: {
|
|
12
15
|
readonly projectRoot: string;
|
|
13
|
-
readonly config
|
|
16
|
+
readonly config?: GasboostAppsScriptConfig;
|
|
14
17
|
readonly clasp: ClaspRunner;
|
|
18
|
+
readonly browserOpener?: (url: string) => Promise<void>;
|
|
15
19
|
}): readonly AppsScriptOperation[];
|
|
16
20
|
export {};
|
|
17
21
|
//# sourceMappingURL=appsScriptOperations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appsScriptOperations.d.ts","sourceRoot":"","sources":["../../src/appsScript/appsScriptOperations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"appsScriptOperations.d.ts","sourceRoot":"","sources":["../../src/appsScript/appsScriptOperations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAKrE,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,KAAK,mBAAmB,GAAG,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AA2B7D,wBAAgB,0BAA0B,CAAC,EACzC,WAAW,EACX,MAAM,EACN,KAAK,EACL,aAA2B,GAC5B,EAAE;IACD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,GAAG,SAAS,mBAAmB,EAAE,CAiJjC"}
|
|
@@ -1,15 +1,44 @@
|
|
|
1
|
-
import { readFile } from "node:fs/promises";
|
|
2
|
-
import { join } from "node:path";
|
|
3
1
|
import { z } from "zod";
|
|
2
|
+
import { EnvFileRepository } from "../env/EnvFileRepository.js";
|
|
3
|
+
import { openBrowser } from "../openBrowser.js";
|
|
4
|
+
import { AppsScriptProjectRepository } from "./AppsScriptProjectRepository.js";
|
|
4
5
|
const emptyInput = z.object({}).strict();
|
|
5
6
|
const createInput = z
|
|
6
7
|
.object({
|
|
7
8
|
title: z.string().trim().min(1).max(100),
|
|
8
9
|
})
|
|
9
10
|
.strict();
|
|
11
|
+
const connectInput = z
|
|
12
|
+
.object({
|
|
13
|
+
scriptId: z.string().trim().min(6).max(200),
|
|
14
|
+
})
|
|
15
|
+
.strict();
|
|
10
16
|
const pushInput = z.object({ confirmed: z.literal(true) }).strict();
|
|
11
|
-
|
|
12
|
-
|
|
17
|
+
const createDeploymentInput = z
|
|
18
|
+
.object({
|
|
19
|
+
description: z.string().trim().max(120).optional(),
|
|
20
|
+
})
|
|
21
|
+
.strict();
|
|
22
|
+
const updateDeploymentInput = z
|
|
23
|
+
.object({
|
|
24
|
+
deploymentId: z.string().trim().min(1).max(200).optional(),
|
|
25
|
+
description: z.string().trim().max(120).optional(),
|
|
26
|
+
})
|
|
27
|
+
.strict();
|
|
28
|
+
const defaultAppsScriptConfig = { type: "webapp" };
|
|
29
|
+
export function createAppsScriptOperations({ projectRoot, config, clasp, browserOpener = openBrowser, }) {
|
|
30
|
+
const effectiveConfig = config ?? defaultAppsScriptConfig;
|
|
31
|
+
const projectRepository = new AppsScriptProjectRepository({
|
|
32
|
+
projectRoot,
|
|
33
|
+
config: effectiveConfig,
|
|
34
|
+
});
|
|
35
|
+
const envRepository = new EnvFileRepository(projectRoot);
|
|
36
|
+
const status = async () => getAppsScriptStatus({
|
|
37
|
+
configDesired: config !== undefined,
|
|
38
|
+
projectRepository,
|
|
39
|
+
envRepository,
|
|
40
|
+
clasp,
|
|
41
|
+
});
|
|
13
42
|
return [
|
|
14
43
|
{
|
|
15
44
|
id: "apps.status",
|
|
@@ -36,7 +65,7 @@ export function createAppsScriptOperations({ projectRoot, config, clasp, }) {
|
|
|
36
65
|
id: "apps.create",
|
|
37
66
|
input: createInput,
|
|
38
67
|
async handler(input, context) {
|
|
39
|
-
const current = await
|
|
68
|
+
const current = await projectRepository.read();
|
|
40
69
|
if (current.configured) {
|
|
41
70
|
throw new Error("An Apps Script project is already configured.");
|
|
42
71
|
}
|
|
@@ -44,25 +73,37 @@ export function createAppsScriptOperations({ projectRoot, config, clasp, }) {
|
|
|
44
73
|
const args = [
|
|
45
74
|
"create-script",
|
|
46
75
|
"--type",
|
|
47
|
-
|
|
76
|
+
effectiveConfig.type,
|
|
48
77
|
"--title",
|
|
49
78
|
input.title,
|
|
50
79
|
"--rootDir",
|
|
51
|
-
|
|
80
|
+
effectiveConfig.rootDir ?? ".",
|
|
52
81
|
];
|
|
53
82
|
const result = await clasp.run(args, context.log);
|
|
54
83
|
assertClaspSuccess("Apps Script project creation", result);
|
|
84
|
+
await syncScriptId(projectRepository, envRepository);
|
|
55
85
|
context.progress({ message: "Apps Script project created", percentage: 100 });
|
|
56
86
|
return status();
|
|
57
87
|
},
|
|
58
88
|
},
|
|
89
|
+
{
|
|
90
|
+
id: "apps.connect",
|
|
91
|
+
input: connectInput,
|
|
92
|
+
async handler(input, context) {
|
|
93
|
+
context.progress({ message: "Connecting Apps Script project", percentage: 30 });
|
|
94
|
+
await projectRepository.connect(input.scriptId);
|
|
95
|
+
await envRepository.update({ GAS_SCRIPT_ID: input.scriptId });
|
|
96
|
+
context.progress({ message: "Apps Script project connected", percentage: 100 });
|
|
97
|
+
return status();
|
|
98
|
+
},
|
|
99
|
+
},
|
|
59
100
|
{
|
|
60
101
|
id: "apps.open",
|
|
61
102
|
input: emptyInput,
|
|
62
103
|
async handler(_input, context) {
|
|
63
|
-
await assertProjectConfigured(
|
|
64
|
-
|
|
65
|
-
|
|
104
|
+
const project = await assertProjectConfigured(projectRepository);
|
|
105
|
+
context.log(`Opening Apps Script editor for ${project.scriptId}`);
|
|
106
|
+
await browserOpener(`https://script.google.com/home/projects/${encodeURIComponent(project.scriptId)}/edit`);
|
|
66
107
|
return { opened: true };
|
|
67
108
|
},
|
|
68
109
|
},
|
|
@@ -70,7 +111,7 @@ export function createAppsScriptOperations({ projectRoot, config, clasp, }) {
|
|
|
70
111
|
id: "apps.push",
|
|
71
112
|
input: pushInput,
|
|
72
113
|
async handler(_input, context) {
|
|
73
|
-
await assertProjectConfigured(
|
|
114
|
+
await assertProjectConfigured(projectRepository);
|
|
74
115
|
context.progress({ message: "Pushing local files", percentage: 20 });
|
|
75
116
|
const result = await clasp.run(["push", "--force"], context.log);
|
|
76
117
|
assertClaspSuccess("Apps Script push", result);
|
|
@@ -78,49 +119,83 @@ export function createAppsScriptOperations({ projectRoot, config, clasp, }) {
|
|
|
78
119
|
return { pushed: true };
|
|
79
120
|
},
|
|
80
121
|
},
|
|
122
|
+
{
|
|
123
|
+
id: "apps.deployments",
|
|
124
|
+
input: emptyInput,
|
|
125
|
+
async handler(_input, context) {
|
|
126
|
+
await assertProjectConfigured(projectRepository);
|
|
127
|
+
const result = await clasp.run(["deployments", "--json"], context.log);
|
|
128
|
+
assertClaspSuccess("Loading deployments", result);
|
|
129
|
+
return parseDeployments(result.stdout);
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
id: "apps.deployment.create",
|
|
134
|
+
input: createDeploymentInput,
|
|
135
|
+
async handler(input, context) {
|
|
136
|
+
await assertProjectConfigured(projectRepository);
|
|
137
|
+
const args = ["create-deployment"];
|
|
138
|
+
if (input.description !== undefined && input.description.length > 0) {
|
|
139
|
+
args.push("--description", input.description);
|
|
140
|
+
}
|
|
141
|
+
const result = await clasp.run(args, context.log);
|
|
142
|
+
assertClaspSuccess("Creating deployment", result);
|
|
143
|
+
const deploymentId = extractDeploymentId(result.stdout);
|
|
144
|
+
if (deploymentId !== undefined) {
|
|
145
|
+
await envRepository.update({ DEPLOYMENT_ID: deploymentId });
|
|
146
|
+
}
|
|
147
|
+
return { deploymentId };
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
id: "apps.deployment.update",
|
|
152
|
+
input: updateDeploymentInput,
|
|
153
|
+
async handler(input, context) {
|
|
154
|
+
await assertProjectConfigured(projectRepository);
|
|
155
|
+
const env = await envRepository.read();
|
|
156
|
+
const deploymentId = input.deploymentId ?? env.DEPLOYMENT_ID;
|
|
157
|
+
if (deploymentId === undefined || deploymentId.length === 0) {
|
|
158
|
+
throw new Error("Select or create a deployment first.");
|
|
159
|
+
}
|
|
160
|
+
const args = ["update-deployment", deploymentId];
|
|
161
|
+
if (input.description !== undefined && input.description.length > 0) {
|
|
162
|
+
args.push("--description", input.description);
|
|
163
|
+
}
|
|
164
|
+
const result = await clasp.run(args, context.log);
|
|
165
|
+
assertClaspSuccess("Updating deployment", result);
|
|
166
|
+
await envRepository.update({ DEPLOYMENT_ID: deploymentId });
|
|
167
|
+
return { deploymentId };
|
|
168
|
+
},
|
|
169
|
+
},
|
|
81
170
|
];
|
|
82
171
|
}
|
|
83
|
-
async function getAppsScriptStatus({
|
|
172
|
+
async function getAppsScriptStatus({ configDesired, projectRepository, envRepository, clasp, }) {
|
|
84
173
|
const [project, authorization] = await Promise.all([
|
|
85
|
-
|
|
174
|
+
projectRepository.read(),
|
|
86
175
|
clasp.run(["show-authorized-user", "--json"]),
|
|
87
176
|
]);
|
|
177
|
+
if (project.scriptId !== undefined) {
|
|
178
|
+
await envRepository.update({ GAS_SCRIPT_ID: project.scriptId });
|
|
179
|
+
}
|
|
180
|
+
const runtime = await envRepository.read();
|
|
88
181
|
return {
|
|
89
182
|
authenticated: authorization.exitCode === 0,
|
|
90
183
|
configured: project.configured,
|
|
91
184
|
...(project.scriptId === undefined ? {} : { scriptId: project.scriptId }),
|
|
92
185
|
rootDir: project.rootDir,
|
|
186
|
+
manifestExists: project.manifestExists,
|
|
187
|
+
desired: configDesired,
|
|
188
|
+
...(runtime.DEPLOYMENT_ID === undefined
|
|
189
|
+
? {}
|
|
190
|
+
: { deploymentId: runtime.DEPLOYMENT_ID }),
|
|
93
191
|
};
|
|
94
192
|
}
|
|
95
|
-
async function
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
const value = JSON.parse(await readFile(join(projectRoot, ".clasp.json"), "utf8"));
|
|
99
|
-
if (typeof value.scriptId !== "string" || value.scriptId.length === 0) {
|
|
100
|
-
return fallback;
|
|
101
|
-
}
|
|
102
|
-
return {
|
|
103
|
-
configured: true,
|
|
104
|
-
scriptId: value.scriptId,
|
|
105
|
-
rootDir: typeof value.rootDir === "string"
|
|
106
|
-
? value.rootDir
|
|
107
|
-
: (config.rootDir ?? "."),
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
if (typeof error === "object" &&
|
|
112
|
-
error !== null &&
|
|
113
|
-
"code" in error &&
|
|
114
|
-
error.code === "ENOENT") {
|
|
115
|
-
return fallback;
|
|
116
|
-
}
|
|
117
|
-
throw new Error(".clasp.json exists but does not contain valid project settings.", { cause: error });
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
async function assertProjectConfigured(projectRoot, config) {
|
|
121
|
-
if (!(await readProjectSettings(projectRoot, config)).configured) {
|
|
193
|
+
async function assertProjectConfigured(projectRepository) {
|
|
194
|
+
const project = await projectRepository.read();
|
|
195
|
+
if (!project.configured || project.scriptId === undefined) {
|
|
122
196
|
throw new Error("Create or connect an Apps Script project first.");
|
|
123
197
|
}
|
|
198
|
+
return { scriptId: project.scriptId };
|
|
124
199
|
}
|
|
125
200
|
function assertClaspSuccess(action, result) {
|
|
126
201
|
if (result.exitCode === 0)
|
|
@@ -128,4 +203,39 @@ function assertClaspSuccess(action, result) {
|
|
|
128
203
|
const diagnostic = result.stderr.trim() || result.stdout.trim();
|
|
129
204
|
throw new Error(diagnostic.length === 0 ? `${action} failed.` : `${action} failed: ${diagnostic}`);
|
|
130
205
|
}
|
|
206
|
+
async function syncScriptId(projectRepository, envRepository) {
|
|
207
|
+
const project = await projectRepository.read();
|
|
208
|
+
if (project.scriptId !== undefined) {
|
|
209
|
+
await envRepository.update({ GAS_SCRIPT_ID: project.scriptId });
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function parseDeployments(stdout) {
|
|
213
|
+
try {
|
|
214
|
+
const value = JSON.parse(stdout);
|
|
215
|
+
if (!Array.isArray(value))
|
|
216
|
+
return { deployments: [] };
|
|
217
|
+
return {
|
|
218
|
+
deployments: value.flatMap((item) => {
|
|
219
|
+
if (typeof item !== "object" || item === null)
|
|
220
|
+
return [];
|
|
221
|
+
const deploymentId = "deploymentId" in item ? item.deploymentId : undefined;
|
|
222
|
+
const description = "description" in item ? item.description : undefined;
|
|
223
|
+
if (typeof deploymentId !== "string")
|
|
224
|
+
return [];
|
|
225
|
+
return [
|
|
226
|
+
{
|
|
227
|
+
deploymentId,
|
|
228
|
+
...(typeof description === "string" ? { description } : {}),
|
|
229
|
+
},
|
|
230
|
+
];
|
|
231
|
+
}),
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
return { deployments: [] };
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
function extractDeploymentId(stdout) {
|
|
239
|
+
return /(?:Deployment ID|deploymentId)[:\s]+([A-Za-z0-9_-]+)/.exec(stdout)?.[1];
|
|
240
|
+
}
|
|
131
241
|
//# sourceMappingURL=appsScriptOperations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appsScriptOperations.js","sourceRoot":"","sources":["../../src/appsScript/appsScriptOperations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"appsScriptOperations.js","sourceRoot":"","sources":["../../src/appsScript/appsScriptOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { OperationDefinition } from "@gasboost/console-runtime";
|
|
2
|
+
export type DevelopmentStatus = {
|
|
3
|
+
readonly running: boolean;
|
|
4
|
+
readonly localUrl?: string;
|
|
5
|
+
readonly command?: readonly string[];
|
|
6
|
+
readonly log: readonly string[];
|
|
7
|
+
};
|
|
8
|
+
type DevelopmentOperation = OperationDefinition<Record<string, never>, DevelopmentStatus>;
|
|
9
|
+
export declare function createDevelopmentOperations({ projectRoot, browserOpener, }: {
|
|
10
|
+
readonly projectRoot: string;
|
|
11
|
+
readonly browserOpener?: (url: string) => Promise<void>;
|
|
12
|
+
}): {
|
|
13
|
+
readonly operations: readonly DevelopmentOperation[];
|
|
14
|
+
readonly cleanup: () => Promise<void>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=developmentOperations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"developmentOperations.d.ts","sourceRoot":"","sources":["../../src/development/developmentOperations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAOrE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC,CAAC;AAEF,KAAK,oBAAoB,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAM1F,wBAAgB,2BAA2B,CAAC,EAC1C,WAAW,EACX,aAA2B,GAC5B,EAAE;IACD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,GAAG;IACF,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,CA+DA"}
|