@fireproof/core-cli 0.23.1
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/LICENSE.md +201 -0
- package/README.md +269 -0
- package/build-cmd.d.ts +40 -0
- package/build-cmd.js +269 -0
- package/build-cmd.js.map +1 -0
- package/build-cmd.ts +299 -0
- package/cloud-token-key-cmd.d.ts +14 -0
- package/cloud-token-key-cmd.js +46 -0
- package/cloud-token-key-cmd.js.map +1 -0
- package/cloud-token-key-cmd.ts +50 -0
- package/main.d.ts +1 -0
- package/main.js +32 -0
- package/main.js.map +1 -0
- package/main.ts +38 -0
- package/package.json +57 -0
- package/pre-signed-url.d.ts +26 -0
- package/pre-signed-url.js +100 -0
- package/pre-signed-url.js.map +1 -0
- package/pre-signed-url.ts +113 -0
- package/run.sh +17 -0
- package/set-scripts-cmd.d.ts +33 -0
- package/set-scripts-cmd.js +155 -0
- package/set-scripts-cmd.js.map +1 -0
- package/set-scripts-cmd.ts +160 -0
- package/tsc-cmd.d.ts +11 -0
- package/tsc-cmd.js +33 -0
- package/tsc-cmd.js.map +1 -0
- package/tsc-cmd.ts +41 -0
- package/tsconfig.json +18 -0
- package/write-env.d.ts +23 -0
- package/write-env.js +103 -0
- package/write-env.js.map +1 -0
- package/write-env.ts +116 -0
package/build-cmd.js
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { array, command, flag, multioption, option, string } from "cmd-ts";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { findUp } from "find-up";
|
|
5
|
+
import { cd, $ } from "zx";
|
|
6
|
+
import { SemVer } from "semver";
|
|
7
|
+
function getEnvVersion(version = "refs/tags/v0.0.0-smoke") {
|
|
8
|
+
if (process.env.GITHUB_REF &&
|
|
9
|
+
(process.env.GITHUB_REF.startsWith("refs/tags/v") || process.env.GITHUB_REF.startsWith("refs/tags/core@"))) {
|
|
10
|
+
version = process.env.GITHUB_REF;
|
|
11
|
+
}
|
|
12
|
+
return version
|
|
13
|
+
.split("/")
|
|
14
|
+
.slice(-1)[0]
|
|
15
|
+
.replace(/^core@/, "")
|
|
16
|
+
.replace(/^v/, "");
|
|
17
|
+
}
|
|
18
|
+
async function getVersion(fpVersionFname) {
|
|
19
|
+
let top = await findUp("tsconfig.dist.json");
|
|
20
|
+
if (!top) {
|
|
21
|
+
top = process.cwd();
|
|
22
|
+
}
|
|
23
|
+
const fpVersionFile = path.join(path.dirname(top), fpVersionFname);
|
|
24
|
+
if (fs.existsSync(fpVersionFile)) {
|
|
25
|
+
return getEnvVersion((await fs.readFile(fpVersionFile, "utf-8")).trim());
|
|
26
|
+
}
|
|
27
|
+
const gitHead = (await $ `git rev-parse --short HEAD`).stdout.trim();
|
|
28
|
+
const dateTick = (await $ `date +%s`).stdout.trim();
|
|
29
|
+
return getEnvVersion(`refs/tags/v0.0.0-smoke-${gitHead}-${dateTick}`);
|
|
30
|
+
}
|
|
31
|
+
function patchDeps(dep, version) {
|
|
32
|
+
if (typeof dep !== "object" || !dep) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
for (const i of Object.keys(dep)) {
|
|
36
|
+
const val = dep[i];
|
|
37
|
+
if (val.startsWith("workspace:")) {
|
|
38
|
+
dep[i] = version;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return dep;
|
|
42
|
+
}
|
|
43
|
+
async function patchPackageJson(packageJsonPath, version) {
|
|
44
|
+
const packageJson = await fs.readJSON(packageJsonPath);
|
|
45
|
+
packageJson.version = version;
|
|
46
|
+
delete packageJson.scripts["pack"];
|
|
47
|
+
delete packageJson.scripts["publish"];
|
|
48
|
+
packageJson.dependencies = patchDeps(packageJson.dependencies, version);
|
|
49
|
+
packageJson.devDependencies = patchDeps(packageJson.devDependencies, version);
|
|
50
|
+
await fs.writeJSONSync(packageJsonPath, packageJson, { spaces: 2 });
|
|
51
|
+
}
|
|
52
|
+
async function updateTsconfig(srcTsConfig, dstTsConfig) {
|
|
53
|
+
const tsconfig = await fs.readJSONSync(srcTsConfig);
|
|
54
|
+
tsconfig.extends = [await findUp("tsconfig.dist.json")];
|
|
55
|
+
tsconfig.compilerOptions = {
|
|
56
|
+
noEmit: false,
|
|
57
|
+
outDir: "./",
|
|
58
|
+
};
|
|
59
|
+
tsconfig.include = tsconfig.include || [];
|
|
60
|
+
tsconfig.include.push("**/*");
|
|
61
|
+
tsconfig.exclude = tsconfig.exclude || [];
|
|
62
|
+
tsconfig.exclude.push("node_modules", "dist", ".git", ".vscode");
|
|
63
|
+
await fs.writeJSONSync(dstTsConfig, tsconfig, { spaces: 2 });
|
|
64
|
+
}
|
|
65
|
+
export function buildCmd(sthis) {
|
|
66
|
+
const cmd = command({
|
|
67
|
+
name: "fireproof build cli",
|
|
68
|
+
description: "helps to build fp",
|
|
69
|
+
version: "1.0.0",
|
|
70
|
+
args: {
|
|
71
|
+
prepareVersion: flag({
|
|
72
|
+
long: "prepare-version",
|
|
73
|
+
short: "p",
|
|
74
|
+
description: "Prepare the version for the build, defaults to the current git tag or a generated version.",
|
|
75
|
+
}),
|
|
76
|
+
fpVersion: option({
|
|
77
|
+
long: "fp-version",
|
|
78
|
+
short: "f",
|
|
79
|
+
defaultValue: () => "./fp-version.txt",
|
|
80
|
+
defaultValueIsSerializable: true,
|
|
81
|
+
type: string,
|
|
82
|
+
description: "Path to the file containing the version, defaults to './fp-version.txt'.",
|
|
83
|
+
}),
|
|
84
|
+
version: option({
|
|
85
|
+
long: "version",
|
|
86
|
+
short: "v",
|
|
87
|
+
defaultValue: () => "",
|
|
88
|
+
type: string,
|
|
89
|
+
description: "The version of the build, defaults to the current git tag or a generated version.",
|
|
90
|
+
}),
|
|
91
|
+
srcDir: option({
|
|
92
|
+
long: "srcDir",
|
|
93
|
+
short: "s",
|
|
94
|
+
type: string,
|
|
95
|
+
defaultValue: () => "./",
|
|
96
|
+
defaultValueIsSerializable: true,
|
|
97
|
+
}),
|
|
98
|
+
dstDir: option({
|
|
99
|
+
long: "dstDir",
|
|
100
|
+
short: "d",
|
|
101
|
+
defaultValue: () => "./dist",
|
|
102
|
+
defaultValueIsSerializable: true,
|
|
103
|
+
type: string,
|
|
104
|
+
}),
|
|
105
|
+
excludedNames: multioption({
|
|
106
|
+
long: "excludedNames",
|
|
107
|
+
short: "e",
|
|
108
|
+
type: array(string),
|
|
109
|
+
defaultValue: () => ["node_modules/", "dist/", ".git/", ".vscode/", "__screenshots__/"],
|
|
110
|
+
defaultValueIsSerializable: true,
|
|
111
|
+
}),
|
|
112
|
+
noCleanDst: flag({
|
|
113
|
+
long: "noCleanDst",
|
|
114
|
+
short: "c",
|
|
115
|
+
}),
|
|
116
|
+
noTsconfig: flag({
|
|
117
|
+
long: "noTsconfig",
|
|
118
|
+
short: "t",
|
|
119
|
+
description: "Do not update tsconfig.json in the destination directory.",
|
|
120
|
+
}),
|
|
121
|
+
noBuild: flag({
|
|
122
|
+
long: "noBuild",
|
|
123
|
+
short: "b",
|
|
124
|
+
description: "Do not run the build command after copying files.",
|
|
125
|
+
}),
|
|
126
|
+
doPack: flag({
|
|
127
|
+
long: "doPack",
|
|
128
|
+
short: "P",
|
|
129
|
+
description: "Create a package for distribution.",
|
|
130
|
+
}),
|
|
131
|
+
packDestDir: option({
|
|
132
|
+
long: "packDestDir",
|
|
133
|
+
short: "o",
|
|
134
|
+
type: string,
|
|
135
|
+
defaultValue: () => "",
|
|
136
|
+
}),
|
|
137
|
+
npmrc: option({
|
|
138
|
+
long: "npmrc",
|
|
139
|
+
short: "n",
|
|
140
|
+
type: string,
|
|
141
|
+
defaultValue: () => "",
|
|
142
|
+
description: "Path to the npmrc file to use for packing, defaults to './dist/npmrc-smoke'.",
|
|
143
|
+
}),
|
|
144
|
+
licenseFile: option({
|
|
145
|
+
long: "licenseFile",
|
|
146
|
+
short: "l",
|
|
147
|
+
type: string,
|
|
148
|
+
defaultValue: () => "LICENSE.md",
|
|
149
|
+
description: "Path to the license file to use for packing, defaults to './LICENSE'.",
|
|
150
|
+
}),
|
|
151
|
+
readmeFile: option({
|
|
152
|
+
long: "readmeFile",
|
|
153
|
+
short: "m",
|
|
154
|
+
type: string,
|
|
155
|
+
defaultValue: () => "README.md",
|
|
156
|
+
description: "Path to the readme file to use for packing, defaults to './README.md'.",
|
|
157
|
+
}),
|
|
158
|
+
registry: option({
|
|
159
|
+
long: "registry",
|
|
160
|
+
short: "r",
|
|
161
|
+
type: string,
|
|
162
|
+
defaultValue: () => "",
|
|
163
|
+
description: "The npm registry to use for publishing, defaults to 'https://registry.npmjs.org/'.",
|
|
164
|
+
}),
|
|
165
|
+
pubTags: multioption({
|
|
166
|
+
long: "pubTags",
|
|
167
|
+
short: "t",
|
|
168
|
+
type: array(string),
|
|
169
|
+
defaultValue: () => [],
|
|
170
|
+
defaultValueIsSerializable: true,
|
|
171
|
+
description: "Tags to use for publishing the package, defaults to ['latest'].",
|
|
172
|
+
}),
|
|
173
|
+
},
|
|
174
|
+
handler: async (args) => {
|
|
175
|
+
const top = await findUp("tsconfig.dist.json");
|
|
176
|
+
if (!top) {
|
|
177
|
+
throw new Error("Could not find tsconfig.dist.json in the project root.");
|
|
178
|
+
}
|
|
179
|
+
if (args.fpVersion) {
|
|
180
|
+
args.fpVersion = path.join(args.dstDir, args.fpVersion);
|
|
181
|
+
}
|
|
182
|
+
if (!args.version) {
|
|
183
|
+
args.version = await getVersion(args.fpVersion);
|
|
184
|
+
}
|
|
185
|
+
if (args.prepareVersion) {
|
|
186
|
+
await fs.mkdirp(args.dstDir);
|
|
187
|
+
const fpVersionFile = path.join(args.dstDir, "fp-version.txt");
|
|
188
|
+
args.version = await getVersion(args.fpVersion);
|
|
189
|
+
await fs.writeFile(fpVersionFile, args.version);
|
|
190
|
+
console.log(`Using version: ${args.version}`);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
if (args.srcDir === args.dstDir) {
|
|
194
|
+
throw new Error("Source and destination directories cannot be the same.");
|
|
195
|
+
}
|
|
196
|
+
const tmpDest = await fs.mkdtemp("../fp-dist-");
|
|
197
|
+
const licenseFile = await findUp(args.licenseFile);
|
|
198
|
+
if (licenseFile) {
|
|
199
|
+
await fs.copyFile(licenseFile, path.join(tmpDest, path.basename(args.licenseFile)));
|
|
200
|
+
}
|
|
201
|
+
const readmeFile = await findUp(args.readmeFile);
|
|
202
|
+
if (readmeFile) {
|
|
203
|
+
await fs.copyFile(readmeFile, path.join(tmpDest, path.basename(args.readmeFile)));
|
|
204
|
+
}
|
|
205
|
+
await fs.copy(args.srcDir, tmpDest, {
|
|
206
|
+
filter: (src, dst) => {
|
|
207
|
+
if (src.startsWith(args.dstDir)) {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
if (args.excludedNames.find((name) => src.includes(name))) {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
return true;
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
if (!args.noCleanDst) {
|
|
217
|
+
await fs.rm(args.dstDir, { recursive: true, force: true });
|
|
218
|
+
await fs.move(tmpDest, args.dstDir);
|
|
219
|
+
}
|
|
220
|
+
if (!args.noTsconfig) {
|
|
221
|
+
await updateTsconfig(path.join(args.srcDir, "tsconfig.json"), path.join(args.dstDir, "tsconfig.json"));
|
|
222
|
+
}
|
|
223
|
+
$.verbose = true;
|
|
224
|
+
cd(args.dstDir);
|
|
225
|
+
await patchPackageJson("package.json", args.version);
|
|
226
|
+
if (!args.noBuild) {
|
|
227
|
+
await $ `pnpm run build`;
|
|
228
|
+
}
|
|
229
|
+
if (args.doPack) {
|
|
230
|
+
if (!args.packDestDir) {
|
|
231
|
+
args.packDestDir = path.join(path.dirname(top), "dist");
|
|
232
|
+
await fs.mkdirp(args.packDestDir);
|
|
233
|
+
}
|
|
234
|
+
if (args.packDestDir) {
|
|
235
|
+
await fs.copyFile(path.join(path.dirname(args.packDestDir), ".gitignore"), ".gitignore");
|
|
236
|
+
await fs.copyFile(path.join(path.dirname(args.packDestDir), ".npmignore"), ".npmignore");
|
|
237
|
+
await $ `pnpm pack --out "${args.packDestDir}/%s.tgz"`;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
if (!args.registry) {
|
|
242
|
+
args.registry = "https://registry.npmjs.org/";
|
|
243
|
+
}
|
|
244
|
+
if (!args.npmrc) {
|
|
245
|
+
args.npmrc = path.join(path.join(path.dirname(top), "dist"), "npmrc-smoke");
|
|
246
|
+
}
|
|
247
|
+
if (fs.existsSync(args.npmrc)) {
|
|
248
|
+
console.log(`Using npmrc: ${args.npmrc}, destination: ${args.dstDir}`);
|
|
249
|
+
await fs.copyFile(args.npmrc, ".npmrc");
|
|
250
|
+
}
|
|
251
|
+
const tags = args.pubTags;
|
|
252
|
+
try {
|
|
253
|
+
const semVer = new SemVer(args.version);
|
|
254
|
+
if (semVer.prerelease.find((i) => typeof i === "string" && i.includes("dev"))) {
|
|
255
|
+
tags.push("dev");
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
catch (e) {
|
|
259
|
+
console.warn(`Warn parsing version ${args.version}:`, e);
|
|
260
|
+
}
|
|
261
|
+
const registry = ["--registry", args.registry];
|
|
262
|
+
const tagsOpts = tags.map((tag) => ["--tag", tag]).flat();
|
|
263
|
+
await $ `${["pnpm", "publish", "--access", "public", ...registry, "--no-git-checks", ...tagsOpts]}`;
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
});
|
|
267
|
+
return cmd;
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=build-cmd.js.map
|
package/build-cmd.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-cmd.js","sourceRoot":"","sources":["build-cmd.ts"],"names":[],"mappings":"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"}
|
package/build-cmd.ts
ADDED
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import { array, command, flag, multioption, option, string } from "cmd-ts";
|
|
3
|
+
import fs from "fs-extra";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { findUp } from "find-up";
|
|
6
|
+
import { cd, $ } from "zx";
|
|
7
|
+
import { SuperThis } from "@fireproof/core-types-base";
|
|
8
|
+
import { SemVer } from "semver";
|
|
9
|
+
|
|
10
|
+
function getEnvVersion(version = "refs/tags/v0.0.0-smoke") {
|
|
11
|
+
if (
|
|
12
|
+
process.env.GITHUB_REF &&
|
|
13
|
+
(process.env.GITHUB_REF.startsWith("refs/tags/v") || process.env.GITHUB_REF.startsWith("refs/tags/core@"))
|
|
14
|
+
) {
|
|
15
|
+
version = process.env.GITHUB_REF;
|
|
16
|
+
}
|
|
17
|
+
return version
|
|
18
|
+
.split("/")
|
|
19
|
+
.slice(-1)[0]
|
|
20
|
+
.replace(/^core@/, "")
|
|
21
|
+
.replace(/^v/, "");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async function getVersion(fpVersionFname: string) {
|
|
25
|
+
let top = await findUp("tsconfig.dist.json");
|
|
26
|
+
if (!top) {
|
|
27
|
+
top = process.cwd();
|
|
28
|
+
}
|
|
29
|
+
const fpVersionFile = path.join(path.dirname(top), fpVersionFname);
|
|
30
|
+
if (fs.existsSync(fpVersionFile)) {
|
|
31
|
+
return getEnvVersion((await fs.readFile(fpVersionFile, "utf-8")).trim());
|
|
32
|
+
}
|
|
33
|
+
const gitHead = (await $`git rev-parse --short HEAD`).stdout.trim();
|
|
34
|
+
const dateTick = (await $`date +%s`).stdout.trim();
|
|
35
|
+
return getEnvVersion(`refs/tags/v0.0.0-smoke-${gitHead}-${dateTick}`);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function patchDeps(dep: Record<string, string>, version: string) {
|
|
39
|
+
if (typeof dep !== "object" || !dep) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
for (const i of Object.keys(dep)) {
|
|
43
|
+
const val = dep[i];
|
|
44
|
+
if (val.startsWith("workspace:")) {
|
|
45
|
+
dep[i] = version;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return dep;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async function patchPackageJson(packageJsonPath: string, version: string) {
|
|
52
|
+
const packageJson = await fs.readJSON(packageJsonPath);
|
|
53
|
+
packageJson.version = version;
|
|
54
|
+
delete packageJson.scripts["pack"];
|
|
55
|
+
delete packageJson.scripts["publish"];
|
|
56
|
+
packageJson.dependencies = patchDeps(packageJson.dependencies, version);
|
|
57
|
+
packageJson.devDependencies = patchDeps(packageJson.devDependencies, version);
|
|
58
|
+
await fs.writeJSONSync(packageJsonPath, packageJson, { spaces: 2 });
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
async function updateTsconfig(srcTsConfig: string, dstTsConfig: string) {
|
|
62
|
+
const tsconfig = await fs.readJSONSync(srcTsConfig);
|
|
63
|
+
tsconfig.extends = [await findUp("tsconfig.dist.json")];
|
|
64
|
+
tsconfig.compilerOptions = {
|
|
65
|
+
noEmit: false,
|
|
66
|
+
outDir: "./",
|
|
67
|
+
};
|
|
68
|
+
tsconfig.include = tsconfig.include || [];
|
|
69
|
+
tsconfig.include.push("**/*");
|
|
70
|
+
tsconfig.exclude = tsconfig.exclude || [];
|
|
71
|
+
tsconfig.exclude.push("node_modules", "dist", ".git", ".vscode");
|
|
72
|
+
|
|
73
|
+
await fs.writeJSONSync(dstTsConfig, tsconfig, { spaces: 2 });
|
|
74
|
+
// {
|
|
75
|
+
// "extends": "../../tsconfig.json",
|
|
76
|
+
// "compilerOptions": {
|
|
77
|
+
// "outDir": "./dist"
|
|
78
|
+
// }
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
82
|
+
export function buildCmd(sthis: SuperThis) {
|
|
83
|
+
const cmd = command({
|
|
84
|
+
name: "fireproof build cli",
|
|
85
|
+
description: "helps to build fp",
|
|
86
|
+
version: "1.0.0",
|
|
87
|
+
args: {
|
|
88
|
+
prepareVersion: flag({
|
|
89
|
+
long: "prepare-version",
|
|
90
|
+
short: "p",
|
|
91
|
+
description: "Prepare the version for the build, defaults to the current git tag or a generated version.",
|
|
92
|
+
}),
|
|
93
|
+
fpVersion: option({
|
|
94
|
+
long: "fp-version",
|
|
95
|
+
short: "f",
|
|
96
|
+
defaultValue: () => "./fp-version.txt",
|
|
97
|
+
defaultValueIsSerializable: true,
|
|
98
|
+
type: string,
|
|
99
|
+
description: "Path to the file containing the version, defaults to './fp-version.txt'.",
|
|
100
|
+
}),
|
|
101
|
+
version: option({
|
|
102
|
+
long: "version",
|
|
103
|
+
short: "v",
|
|
104
|
+
defaultValue: () => "",
|
|
105
|
+
type: string,
|
|
106
|
+
description: "The version of the build, defaults to the current git tag or a generated version.",
|
|
107
|
+
}),
|
|
108
|
+
srcDir: option({
|
|
109
|
+
long: "srcDir",
|
|
110
|
+
short: "s",
|
|
111
|
+
type: string,
|
|
112
|
+
defaultValue: () => "./",
|
|
113
|
+
defaultValueIsSerializable: true,
|
|
114
|
+
}),
|
|
115
|
+
dstDir: option({
|
|
116
|
+
long: "dstDir",
|
|
117
|
+
short: "d",
|
|
118
|
+
defaultValue: () => "./dist",
|
|
119
|
+
defaultValueIsSerializable: true,
|
|
120
|
+
type: string,
|
|
121
|
+
}),
|
|
122
|
+
excludedNames: multioption({
|
|
123
|
+
long: "excludedNames",
|
|
124
|
+
short: "e",
|
|
125
|
+
type: array(string),
|
|
126
|
+
defaultValue: () => ["node_modules/", "dist/", ".git/", ".vscode/", "__screenshots__/"],
|
|
127
|
+
defaultValueIsSerializable: true,
|
|
128
|
+
}),
|
|
129
|
+
noCleanDst: flag({
|
|
130
|
+
long: "noCleanDst",
|
|
131
|
+
short: "c",
|
|
132
|
+
}),
|
|
133
|
+
noTsconfig: flag({
|
|
134
|
+
long: "noTsconfig",
|
|
135
|
+
short: "t",
|
|
136
|
+
description: "Do not update tsconfig.json in the destination directory.",
|
|
137
|
+
}),
|
|
138
|
+
noBuild: flag({
|
|
139
|
+
long: "noBuild",
|
|
140
|
+
short: "b",
|
|
141
|
+
description: "Do not run the build command after copying files.",
|
|
142
|
+
}),
|
|
143
|
+
doPack: flag({
|
|
144
|
+
long: "doPack",
|
|
145
|
+
short: "P",
|
|
146
|
+
description: "Create a package for distribution.",
|
|
147
|
+
}),
|
|
148
|
+
packDestDir: option({
|
|
149
|
+
long: "packDestDir",
|
|
150
|
+
short: "o",
|
|
151
|
+
type: string,
|
|
152
|
+
defaultValue: () => "",
|
|
153
|
+
}),
|
|
154
|
+
npmrc: option({
|
|
155
|
+
long: "npmrc",
|
|
156
|
+
short: "n",
|
|
157
|
+
type: string,
|
|
158
|
+
defaultValue: () => "",
|
|
159
|
+
description: "Path to the npmrc file to use for packing, defaults to './dist/npmrc-smoke'.",
|
|
160
|
+
}),
|
|
161
|
+
licenseFile: option({
|
|
162
|
+
long: "licenseFile",
|
|
163
|
+
short: "l",
|
|
164
|
+
type: string,
|
|
165
|
+
defaultValue: () => "LICENSE.md",
|
|
166
|
+
description: "Path to the license file to use for packing, defaults to './LICENSE'.",
|
|
167
|
+
}),
|
|
168
|
+
readmeFile: option({
|
|
169
|
+
long: "readmeFile",
|
|
170
|
+
short: "m",
|
|
171
|
+
type: string,
|
|
172
|
+
defaultValue: () => "README.md",
|
|
173
|
+
description: "Path to the readme file to use for packing, defaults to './README.md'.",
|
|
174
|
+
}),
|
|
175
|
+
registry: option({
|
|
176
|
+
long: "registry",
|
|
177
|
+
short: "r",
|
|
178
|
+
type: string,
|
|
179
|
+
defaultValue: () => "",
|
|
180
|
+
description: "The npm registry to use for publishing, defaults to 'https://registry.npmjs.org/'.",
|
|
181
|
+
}),
|
|
182
|
+
pubTags: multioption({
|
|
183
|
+
long: "pubTags",
|
|
184
|
+
short: "t",
|
|
185
|
+
type: array(string),
|
|
186
|
+
defaultValue: () => [],
|
|
187
|
+
defaultValueIsSerializable: true,
|
|
188
|
+
description: "Tags to use for publishing the package, defaults to ['latest'].",
|
|
189
|
+
}),
|
|
190
|
+
},
|
|
191
|
+
handler: async (args) => {
|
|
192
|
+
const top = await findUp("tsconfig.dist.json");
|
|
193
|
+
if (!top) {
|
|
194
|
+
throw new Error("Could not find tsconfig.dist.json in the project root.");
|
|
195
|
+
}
|
|
196
|
+
if (args.fpVersion) {
|
|
197
|
+
args.fpVersion = path.join(args.dstDir, args.fpVersion);
|
|
198
|
+
}
|
|
199
|
+
if (!args.version) {
|
|
200
|
+
args.version = await getVersion(args.fpVersion);
|
|
201
|
+
}
|
|
202
|
+
if (args.prepareVersion) {
|
|
203
|
+
await fs.mkdirp(args.dstDir);
|
|
204
|
+
const fpVersionFile = path.join(args.dstDir, "fp-version.txt");
|
|
205
|
+
args.version = await getVersion(args.fpVersion);
|
|
206
|
+
await fs.writeFile(fpVersionFile, args.version);
|
|
207
|
+
console.log(`Using version: ${args.version}`);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
if (args.srcDir === args.dstDir) {
|
|
211
|
+
throw new Error("Source and destination directories cannot be the same.");
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// args.srcDir = path.resolve(args.srcDir);
|
|
215
|
+
|
|
216
|
+
const tmpDest = await fs.mkdtemp("../fp-dist-");
|
|
217
|
+
const licenseFile = await findUp(args.licenseFile);
|
|
218
|
+
if (licenseFile) {
|
|
219
|
+
await fs.copyFile(licenseFile, path.join(tmpDest, path.basename(args.licenseFile)));
|
|
220
|
+
}
|
|
221
|
+
const readmeFile = await findUp(args.readmeFile);
|
|
222
|
+
if (readmeFile) {
|
|
223
|
+
await fs.copyFile(readmeFile, path.join(tmpDest, path.basename(args.readmeFile)));
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
await fs.copy(args.srcDir, tmpDest, {
|
|
227
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
228
|
+
filter: (src: string, dst: string) => {
|
|
229
|
+
if (src.startsWith(args.dstDir)) {
|
|
230
|
+
return false; // Skip copying if the source is within the destination directory
|
|
231
|
+
}
|
|
232
|
+
// const basename = path.basename(src);
|
|
233
|
+
|
|
234
|
+
// Exclude by full name (for directories or specific files)
|
|
235
|
+
if (args.excludedNames.find((name) => src.includes(name))) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
// Include everything else
|
|
239
|
+
return true;
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
if (!args.noCleanDst) {
|
|
243
|
+
await fs.rm(args.dstDir, { recursive: true, force: true });
|
|
244
|
+
await fs.move(tmpDest, args.dstDir);
|
|
245
|
+
}
|
|
246
|
+
if (!args.noTsconfig) {
|
|
247
|
+
await updateTsconfig(path.join(args.srcDir, "tsconfig.json"), path.join(args.dstDir, "tsconfig.json"));
|
|
248
|
+
}
|
|
249
|
+
$.verbose = true;
|
|
250
|
+
cd(args.dstDir);
|
|
251
|
+
|
|
252
|
+
await patchPackageJson("package.json", args.version);
|
|
253
|
+
// await $`pnpm version ${args.version}`;
|
|
254
|
+
|
|
255
|
+
if (!args.noBuild) {
|
|
256
|
+
await $`pnpm run build`;
|
|
257
|
+
}
|
|
258
|
+
if (args.doPack) {
|
|
259
|
+
if (!args.packDestDir) {
|
|
260
|
+
args.packDestDir = path.join(path.dirname(top), "dist");
|
|
261
|
+
await fs.mkdirp(args.packDestDir);
|
|
262
|
+
}
|
|
263
|
+
if (args.packDestDir) {
|
|
264
|
+
await fs.copyFile(path.join(path.dirname(args.packDestDir), ".gitignore"), ".gitignore");
|
|
265
|
+
await fs.copyFile(path.join(path.dirname(args.packDestDir), ".npmignore"), ".npmignore");
|
|
266
|
+
await $`pnpm pack --out "${args.packDestDir}/%s.tgz"`;
|
|
267
|
+
}
|
|
268
|
+
} else {
|
|
269
|
+
if (!args.registry) {
|
|
270
|
+
args.registry = "https://registry.npmjs.org/";
|
|
271
|
+
}
|
|
272
|
+
if (!args.npmrc) {
|
|
273
|
+
args.npmrc = path.join(path.join(path.dirname(top), "dist"), "npmrc-smoke");
|
|
274
|
+
}
|
|
275
|
+
if (fs.existsSync(args.npmrc)) {
|
|
276
|
+
console.log(`Using npmrc: ${args.npmrc}, destination: ${args.dstDir}`);
|
|
277
|
+
await fs.copyFile(args.npmrc, ".npmrc");
|
|
278
|
+
// await $`cat .npmrc`;
|
|
279
|
+
// await $`env | grep -e npm_config -e NPM_CONFIG -e PNPM_CONFIG`;
|
|
280
|
+
}
|
|
281
|
+
const tags = args.pubTags;
|
|
282
|
+
try {
|
|
283
|
+
const semVer = new SemVer(args.version);
|
|
284
|
+
if (semVer.prerelease.find((i) => typeof i === "string" && i.includes("dev"))) {
|
|
285
|
+
tags.push("dev");
|
|
286
|
+
}
|
|
287
|
+
} catch (e) {
|
|
288
|
+
console.warn(`Warn parsing version ${args.version}:`, e);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
const registry = ["--registry", args.registry];
|
|
292
|
+
const tagsOpts = tags.map((tag) => ["--tag", tag]).flat();
|
|
293
|
+
await $`${["pnpm", "publish", "--access", "public", ...registry, "--no-git-checks", ...tagsOpts]}`;
|
|
294
|
+
// pnpm publish --access public --no-git-checks ${tagsOpts}
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
});
|
|
298
|
+
return cmd;
|
|
299
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SuperThis } from "@fireproof/core-types-base";
|
|
2
|
+
export declare function keyCmd(sthis: SuperThis): Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
|
|
3
|
+
parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<{
|
|
4
|
+
generatePair: boolean;
|
|
5
|
+
ourToJWK: string;
|
|
6
|
+
JWKToour: string;
|
|
7
|
+
}>>;
|
|
8
|
+
} & import("cmd-ts/dist/cjs/helpdoc.js").PrintHelp & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & import("cmd-ts/dist/cjs/helpdoc.js").Named & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Versioned> & import("cmd-ts/dist/cjs/argparser.js").Register & import("cmd-ts/dist/cjs/runner.js").Handling<{
|
|
9
|
+
generatePair: boolean;
|
|
10
|
+
ourToJWK: string;
|
|
11
|
+
JWKToour: string;
|
|
12
|
+
}, Promise<void>> & {
|
|
13
|
+
run(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<Promise<void>>>;
|
|
14
|
+
} & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Versioned & import("cmd-ts/dist/cjs/helpdoc.js").Descriptive & import("cmd-ts/dist/cjs/helpdoc.js").Aliased>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as rt from "@fireproof/core-runtime";
|
|
2
|
+
import { command, flag, option, string } from "cmd-ts";
|
|
3
|
+
import { exportJWK } from "jose/key/export";
|
|
4
|
+
export function keyCmd(sthis) {
|
|
5
|
+
return command({
|
|
6
|
+
name: "cli-key-cmds",
|
|
7
|
+
description: "handle keys for cloud token generation",
|
|
8
|
+
version: "1.0.0",
|
|
9
|
+
args: {
|
|
10
|
+
generatePair: flag({
|
|
11
|
+
long: "generatePair",
|
|
12
|
+
short: "g",
|
|
13
|
+
}),
|
|
14
|
+
ourToJWK: option({
|
|
15
|
+
long: "ourToJWK",
|
|
16
|
+
short: "o",
|
|
17
|
+
defaultValue: () => "",
|
|
18
|
+
type: string,
|
|
19
|
+
}),
|
|
20
|
+
JWKToour: option({
|
|
21
|
+
long: "JWKToour",
|
|
22
|
+
short: "j",
|
|
23
|
+
defaultValue: () => "",
|
|
24
|
+
type: string,
|
|
25
|
+
}),
|
|
26
|
+
},
|
|
27
|
+
handler: async (args) => {
|
|
28
|
+
switch (true) {
|
|
29
|
+
case !!args.ourToJWK:
|
|
30
|
+
{
|
|
31
|
+
const key = await rt.sts.env2jwk(args.ourToJWK, "ES256", sthis).then((jwk) => jwk);
|
|
32
|
+
console.log(`${JSON.stringify(await exportJWK(key))}`);
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
case args.generatePair:
|
|
36
|
+
{
|
|
37
|
+
const key = await rt.sts.SessionTokenService.generateKeyPair("ES256", { extractable: true });
|
|
38
|
+
console.log(`${rt.sts.envKeyDefaults.PUBLIC}=${key.strings.publicKey}`);
|
|
39
|
+
console.log(`${rt.sts.envKeyDefaults.SECRET}=${key.strings.privateKey}`);
|
|
40
|
+
}
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=cloud-token-key-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-token-key-cmd.js","sourceRoot":"","sources":["cloud-token-key-cmd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,MAAM,CAAC,KAAgB;IACrC,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE;YACJ,YAAY,EAAE,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,GAAG;aACX,CAAC;YACF,QAAQ,EAAE,MAAM,CAAC;gBACf,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,GAAG;gBACV,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE;gBACtB,IAAI,EAAE,MAAM;aACb,CAAC;YACF,QAAQ,EAAE,MAAM,CAAC;gBACf,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,GAAG;gBACV,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE;gBACtB,IAAI,EAAE,MAAM;aACb,CAAC;SACH;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ;oBAClB,CAAC;wBACC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;wBAEnF,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;oBACzD,CAAC;oBACD,MAAM;gBACR,KAAK,IAAI,CAAC,YAAY;oBACpB,CAAC;wBACC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;wBAE7F,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;wBAExE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;oBAC3E,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|