ic-mops 1.11.1 → 2.0.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/.DS_Store +0 -0
- package/.eslintrc.json +7 -7
- package/CHANGELOG.md +15 -0
- package/api/actors.ts +41 -37
- package/api/downloadPackageFiles.ts +75 -61
- package/api/getHighestVersion.ts +5 -5
- package/api/index.ts +4 -4
- package/api/network.ts +19 -21
- package/api/resolveVersion.ts +14 -11
- package/bin/mops.js +1 -1
- package/bun.lock +234 -198
- package/bundle/bench/bench-canister.mo +2 -2
- package/bundle/bench/user-bench.mo +0 -4
- package/bundle/bin/mops.js +1 -1
- package/bundle/cli.js +1000 -924
- package/bundle/cli.tgz +0 -0
- package/bundle/declarations/bench/bench.did +3 -3
- package/bundle/declarations/bench/bench.did.d.ts +3 -3
- package/bundle/declarations/bench/index.d.ts +3 -3
- package/bundle/declarations/bench/index.js +1 -1
- package/bundle/declarations/main/index.d.ts +3 -3
- package/bundle/declarations/main/index.js +1 -1
- package/bundle/declarations/main/main.did +78 -121
- package/bundle/declarations/main/main.did.d.ts +48 -98
- package/bundle/declarations/main/main.did.js +53 -107
- package/bundle/declarations/storage/index.d.ts +3 -3
- package/bundle/declarations/storage/index.js +4 -4
- package/bundle/declarations/storage/storage.did.d.ts +3 -3
- package/bundle/package.json +6 -5
- package/bundle/templates/mops-publish.yml +3 -3
- package/bundle/templates/mops-test.yml +3 -3
- package/bundle-package-json.ts +8 -8
- package/cache.ts +80 -65
- package/check-requirements.ts +49 -45
- package/cli.ts +577 -376
- package/commands/add.ts +142 -129
- package/commands/available-updates.ts +55 -28
- package/commands/bench/bench-canister.mo +114 -108
- package/commands/bench/user-bench.mo +6 -6
- package/commands/bench-replica.ts +146 -106
- package/commands/bench.ts +563 -497
- package/commands/build.ts +177 -0
- package/commands/bump.ts +68 -57
- package/commands/check-candid.ts +24 -0
- package/commands/docs-coverage.ts +124 -102
- package/commands/docs.ts +118 -108
- package/commands/format.ts +171 -155
- package/commands/init.ts +301 -275
- package/commands/install/install-all.ts +75 -62
- package/commands/install/install-dep.ts +43 -28
- package/commands/install/install-deps.ts +23 -15
- package/commands/install/install-local-dep.ts +42 -34
- package/commands/install/install-mops-dep.ts +154 -123
- package/commands/install/sync-local-cache.ts +39 -35
- package/commands/maintainer.ts +109 -99
- package/commands/outdated.ts +31 -18
- package/commands/owner.ts +107 -99
- package/commands/publish.ts +534 -443
- package/commands/remove.ts +119 -89
- package/commands/replica.ts +391 -303
- package/commands/search.ts +42 -36
- package/commands/self.ts +63 -56
- package/commands/sources.ts +66 -49
- package/commands/sync.ts +92 -75
- package/commands/template.ts +145 -102
- package/commands/test/mmf1.ts +146 -119
- package/commands/test/reporters/compact-reporter.ts +87 -84
- package/commands/test/reporters/files-reporter.ts +56 -51
- package/commands/test/reporters/reporter.ts +12 -6
- package/commands/test/reporters/silent-reporter.ts +58 -59
- package/commands/test/reporters/verbose-reporter.ts +66 -54
- package/commands/test/test.ts +497 -460
- package/commands/test/utils.ts +85 -6
- package/commands/toolchain/index.ts +363 -322
- package/commands/toolchain/moc.ts +78 -50
- package/commands/toolchain/pocket-ic.ts +41 -34
- package/commands/toolchain/toolchain-utils.ts +92 -72
- package/commands/toolchain/wasmtime.ts +37 -34
- package/commands/update.ts +91 -56
- package/commands/user.ts +90 -81
- package/commands/watch/deployer.ts +188 -152
- package/commands/watch/error-checker.ts +90 -80
- package/commands/watch/formatter.ts +72 -60
- package/commands/watch/generator.ts +116 -96
- package/commands/watch/globMoFiles.ts +13 -13
- package/commands/watch/parseDfxJson.ts +63 -57
- package/commands/watch/tester.ts +83 -65
- package/commands/watch/warning-checker.ts +149 -136
- package/commands/watch/watch.ts +123 -95
- package/declarations/bench/bench.did.d.ts +3 -3
- package/declarations/bench/index.d.ts +3 -3
- package/declarations/bench/index.js +1 -1
- package/declarations/main/index.d.ts +3 -3
- package/declarations/main/index.js +1 -1
- package/declarations/main/main.did.d.ts +3 -3
- package/declarations/storage/index.d.ts +3 -3
- package/declarations/storage/index.js +4 -4
- package/declarations/storage/storage.did.d.ts +3 -3
- package/dist/api/actors.d.ts +4 -4
- package/dist/api/actors.js +8 -8
- package/dist/api/downloadPackageFiles.d.ts +2 -2
- package/dist/api/downloadPackageFiles.js +10 -10
- package/dist/api/getHighestVersion.js +1 -1
- package/dist/api/index.d.ts +4 -4
- package/dist/api/index.js +4 -4
- package/dist/api/network.js +9 -9
- package/dist/api/resolveVersion.js +3 -3
- package/dist/bin/mops.js +1 -1
- package/dist/bundle-package-json.js +8 -8
- package/dist/cache.js +22 -17
- package/dist/check-requirements.js +11 -11
- package/dist/cli.js +283 -186
- package/dist/commands/add.d.ts +1 -1
- package/dist/commands/add.js +41 -38
- package/dist/commands/available-updates.d.ts +1 -1
- package/dist/commands/available-updates.js +32 -14
- package/dist/commands/bench/bench-canister.mo +114 -108
- package/dist/commands/bench/user-bench.mo +6 -6
- package/dist/commands/bench-replica.d.ts +6 -5
- package/dist/commands/bench-replica.js +58 -36
- package/dist/commands/bench.d.ts +5 -5
- package/dist/commands/bench.js +134 -118
- package/dist/commands/build.d.ts +7 -0
- package/dist/commands/build.js +121 -0
- package/dist/commands/bump.js +27 -18
- package/dist/commands/check-candid.d.ts +4 -0
- package/dist/commands/check-candid.js +15 -0
- package/dist/commands/docs-coverage.d.ts +1 -1
- package/dist/commands/docs-coverage.js +45 -31
- package/dist/commands/docs.d.ts +1 -1
- package/dist/commands/docs.js +39 -38
- package/dist/commands/format.js +31 -27
- package/dist/commands/init.js +102 -92
- package/dist/commands/install/install-all.d.ts +2 -2
- package/dist/commands/install/install-all.js +23 -21
- package/dist/commands/install/install-dep.d.ts +1 -1
- package/dist/commands/install/install-dep.js +21 -8
- package/dist/commands/install/install-deps.d.ts +1 -1
- package/dist/commands/install/install-deps.js +1 -1
- package/dist/commands/install/install-local-dep.js +11 -9
- package/dist/commands/install/install-mops-dep.d.ts +1 -1
- package/dist/commands/install/install-mops-dep.js +32 -27
- package/dist/commands/install/sync-local-cache.js +10 -10
- package/dist/commands/maintainer.js +21 -21
- package/dist/commands/outdated.js +16 -6
- package/dist/commands/owner.js +21 -21
- package/dist/commands/publish.js +148 -128
- package/dist/commands/remove.d.ts +1 -1
- package/dist/commands/remove.js +42 -30
- package/dist/commands/replica.d.ts +9 -8
- package/dist/commands/replica.js +105 -65
- package/dist/commands/search.js +15 -13
- package/dist/commands/self.js +31 -28
- package/dist/commands/sources.d.ts +5 -1
- package/dist/commands/sources.js +23 -17
- package/dist/commands/sync.d.ts +1 -1
- package/dist/commands/sync.js +38 -25
- package/dist/commands/template.js +66 -56
- package/dist/commands/test/mmf1.d.ts +3 -3
- package/dist/commands/test/mmf1.js +33 -31
- package/dist/commands/test/reporters/compact-reporter.d.ts +3 -3
- package/dist/commands/test/reporters/compact-reporter.js +19 -15
- package/dist/commands/test/reporters/files-reporter.d.ts +3 -3
- package/dist/commands/test/reporters/files-reporter.js +18 -14
- package/dist/commands/test/reporters/reporter.d.ts +2 -2
- package/dist/commands/test/reporters/silent-reporter.d.ts +3 -3
- package/dist/commands/test/reporters/silent-reporter.js +4 -4
- package/dist/commands/test/reporters/verbose-reporter.d.ts +3 -3
- package/dist/commands/test/reporters/verbose-reporter.js +17 -13
- package/dist/commands/test/test.d.ts +4 -4
- package/dist/commands/test/test.js +151 -181
- package/dist/commands/test/utils.d.ts +6 -0
- package/dist/commands/test/utils.js +63 -2
- package/dist/commands/toolchain/index.d.ts +1 -1
- package/dist/commands/toolchain/index.js +81 -69
- package/dist/commands/toolchain/moc.d.ts +1 -1
- package/dist/commands/toolchain/moc.js +48 -24
- package/dist/commands/toolchain/pocket-ic.js +12 -12
- package/dist/commands/toolchain/toolchain-utils.d.ts +2 -0
- package/dist/commands/toolchain/toolchain-utils.js +32 -23
- package/dist/commands/toolchain/wasmtime.js +11 -11
- package/dist/commands/update.d.ts +1 -1
- package/dist/commands/update.js +30 -12
- package/dist/commands/user.js +31 -28
- package/dist/commands/watch/deployer.d.ts +4 -4
- package/dist/commands/watch/deployer.js +45 -36
- package/dist/commands/watch/error-checker.d.ts +2 -2
- package/dist/commands/watch/error-checker.js +27 -27
- package/dist/commands/watch/formatter.d.ts +4 -4
- package/dist/commands/watch/formatter.js +17 -17
- package/dist/commands/watch/generator.d.ts +3 -3
- package/dist/commands/watch/generator.js +28 -23
- package/dist/commands/watch/globMoFiles.js +8 -8
- package/dist/commands/watch/parseDfxJson.d.ts +2 -2
- package/dist/commands/watch/parseDfxJson.js +9 -9
- package/dist/commands/watch/tester.d.ts +4 -4
- package/dist/commands/watch/tester.js +23 -21
- package/dist/commands/watch/warning-checker.d.ts +3 -3
- package/dist/commands/watch/warning-checker.js +36 -36
- package/dist/commands/watch/watch.js +45 -32
- package/dist/declarations/bench/bench.did.d.ts +3 -3
- package/dist/declarations/bench/index.d.ts +3 -3
- package/dist/declarations/bench/index.js +1 -1
- package/dist/declarations/main/index.d.ts +3 -3
- package/dist/declarations/main/index.js +1 -1
- package/dist/declarations/main/main.did.d.ts +3 -3
- package/dist/declarations/storage/index.d.ts +3 -3
- package/dist/declarations/storage/index.js +4 -4
- package/dist/declarations/storage/storage.did.d.ts +3 -3
- package/dist/environments/nodejs/cli.d.ts +1 -0
- package/dist/environments/nodejs/cli.js +4 -0
- package/dist/environments/web/cli.d.ts +1 -0
- package/dist/environments/web/cli.js +4 -0
- package/dist/error.d.ts +1 -0
- package/dist/error.js +5 -0
- package/dist/fix-dist.js +5 -5
- package/dist/helpers/find-changelog-entry.js +8 -5
- package/dist/helpers/get-dep-name.d.ts +1 -0
- package/dist/helpers/get-dep-name.js +4 -1
- package/dist/helpers/get-dfx-version.js +4 -4
- package/dist/helpers/get-moc-path.js +8 -7
- package/dist/helpers/get-moc-version.js +10 -7
- package/dist/helpers/get-package-id.js +2 -2
- package/dist/helpers/is-candid-compatible.d.ts +1 -0
- package/dist/helpers/is-candid-compatible.js +20 -0
- package/dist/integrity.d.ts +1 -1
- package/dist/integrity.js +47 -38
- package/dist/jest.config.d.ts +11 -0
- package/dist/jest.config.js +14 -0
- package/dist/mops.d.ts +6 -6
- package/dist/mops.js +87 -80
- package/dist/notify-installs.js +4 -4
- package/dist/package.json +11 -10
- package/dist/pem.d.ts +3 -3
- package/dist/pem.js +20 -12
- package/dist/release-cli.js +20 -20
- package/dist/resolve-packages.d.ts +1 -1
- package/dist/resolve-packages.js +52 -36
- package/dist/templates/mops-publish.yml +3 -3
- package/dist/templates/mops-test.yml +3 -3
- package/dist/templates/src/lib.mo +13 -13
- package/dist/templates/test/lib.test.mo +2 -2
- package/dist/templates.js +1 -1
- package/dist/tests/cli.test.d.ts +1 -0
- package/dist/tests/cli.test.js +63 -0
- package/dist/types.d.ts +14 -4
- package/dist/vessel.d.ts +2 -2
- package/dist/vessel.js +41 -34
- package/dist/wasm/pkg/bundler/package.json +20 -0
- package/dist/wasm/pkg/bundler/wasm.d.ts +3 -0
- package/dist/wasm/pkg/bundler/wasm.js +5 -0
- package/dist/wasm/pkg/bundler/wasm_bg.js +93 -0
- package/dist/wasm/pkg/bundler/wasm_bg.wasm +0 -0
- package/dist/wasm/pkg/bundler/wasm_bg.wasm.d.ts +8 -0
- package/dist/wasm/pkg/nodejs/package.json +14 -0
- package/dist/wasm/pkg/nodejs/wasm.d.ts +3 -0
- package/dist/wasm/pkg/nodejs/wasm.js +98 -0
- package/dist/wasm/pkg/nodejs/wasm_bg.wasm +0 -0
- package/dist/wasm/pkg/nodejs/wasm_bg.wasm.d.ts +8 -0
- package/dist/wasm/pkg/web/package.json +18 -0
- package/dist/wasm/pkg/web/wasm.d.ts +35 -0
- package/dist/wasm/pkg/web/wasm.js +191 -0
- package/dist/wasm/pkg/web/wasm_bg.wasm +0 -0
- package/dist/wasm/pkg/web/wasm_bg.wasm.d.ts +8 -0
- package/dist/wasm.d.ts +5 -0
- package/dist/wasm.js +10 -0
- package/environments/nodejs/cli.ts +6 -0
- package/environments/web/cli.ts +6 -0
- package/error.ts +6 -0
- package/fix-dist.ts +5 -5
- package/global.d.ts +3 -3
- package/helpers/find-changelog-entry.ts +26 -23
- package/helpers/get-dep-name.ts +7 -3
- package/helpers/get-dfx-version.ts +8 -9
- package/helpers/get-moc-path.ts +25 -26
- package/helpers/get-moc-version.ts +21 -19
- package/helpers/get-package-id.ts +4 -4
- package/helpers/is-candid-compatible.ts +22 -0
- package/integrity.ts +270 -236
- package/jest.config.js +14 -0
- package/mops.ts +238 -215
- package/notify-installs.ts +16 -17
- package/package.json +21 -15
- package/parallel.ts +28 -24
- package/pem.ts +55 -47
- package/release-cli.ts +73 -39
- package/resolve-packages.ts +231 -189
- package/templates/mops-publish.yml +3 -3
- package/templates/mops-test.yml +3 -3
- package/templates/src/lib.mo +13 -13
- package/templates/test/lib.test.mo +2 -2
- package/templates.ts +4 -4
- package/tests/__snapshots__/cli.test.ts.snap +202 -0
- package/tests/build/error/candid/bar.did +3 -0
- package/tests/build/error/dfx.json +12 -0
- package/tests/build/error/mops.toml +9 -0
- package/tests/build/error/src/Bar.mo +5 -0
- package/tests/build/error/src/Foo.mo +5 -0
- package/tests/build/success/.dfx/local/canister_ids.json +17 -0
- package/tests/build/success/.dfx/local/canisters/bar/bar.did +3 -0
- package/tests/build/success/.dfx/local/canisters/bar/bar.most +4 -0
- package/tests/build/success/.dfx/local/canisters/bar/bar.wasm +0 -0
- package/tests/build/success/.dfx/local/canisters/bar/constructor.did +3 -0
- package/tests/build/success/.dfx/local/canisters/bar/index.js +42 -0
- package/tests/build/success/.dfx/local/canisters/bar/init_args.txt +1 -0
- package/tests/build/success/.dfx/local/canisters/bar/service.did +3 -0
- package/tests/build/success/.dfx/local/canisters/bar/service.did.d.ts +7 -0
- package/tests/build/success/.dfx/local/canisters/bar/service.did.js +4 -0
- package/tests/build/success/.dfx/local/canisters/foo/constructor.did +3 -0
- package/tests/build/success/.dfx/local/canisters/foo/foo.did +3 -0
- package/tests/build/success/.dfx/local/canisters/foo/foo.most +4 -0
- package/tests/build/success/.dfx/local/canisters/foo/foo.wasm +0 -0
- package/tests/build/success/.dfx/local/canisters/foo/index.js +42 -0
- package/tests/build/success/.dfx/local/canisters/foo/init_args.txt +1 -0
- package/tests/build/success/.dfx/local/canisters/foo/service.did +3 -0
- package/tests/build/success/.dfx/local/canisters/foo/service.did.d.ts +7 -0
- package/tests/build/success/.dfx/local/canisters/foo/service.did.js +4 -0
- package/tests/build/success/.dfx/local/lsp/ucwa4-rx777-77774-qaada-cai.did +3 -0
- package/tests/build/success/.dfx/local/lsp/ulvla-h7777-77774-qaacq-cai.did +3 -0
- package/tests/build/success/.dfx/local/network-id +4 -0
- package/tests/build/success/candid/bar.did +3 -0
- package/tests/build/success/dfx.json +12 -0
- package/tests/build/success/mops.toml +9 -0
- package/tests/build/success/src/Bar.mo +5 -0
- package/tests/build/success/src/Foo.mo +5 -0
- package/tests/check-candid/a.did +3 -0
- package/tests/check-candid/b.did +5 -0
- package/tests/check-candid/c.did +3 -0
- package/tests/cli.test.ts +82 -0
- package/tsconfig.json +26 -19
- package/types.ts +41 -31
- package/vessel.ts +219 -187
- package/wasm/Cargo.lock +1475 -0
- package/wasm/Cargo.toml +28 -0
- package/wasm/pkg/bundler/package.json +20 -0
- package/wasm/pkg/bundler/wasm.d.ts +3 -0
- package/wasm/pkg/bundler/wasm.js +5 -0
- package/wasm/pkg/bundler/wasm_bg.js +93 -0
- package/wasm/pkg/bundler/wasm_bg.wasm +0 -0
- package/wasm/pkg/bundler/wasm_bg.wasm.d.ts +8 -0
- package/wasm/pkg/nodejs/package.json +14 -0
- package/wasm/pkg/nodejs/wasm.d.ts +3 -0
- package/wasm/pkg/nodejs/wasm.js +98 -0
- package/wasm/pkg/nodejs/wasm_bg.wasm +0 -0
- package/wasm/pkg/nodejs/wasm_bg.wasm.d.ts +8 -0
- package/wasm/pkg/web/package.json +18 -0
- package/wasm/pkg/web/wasm.d.ts +35 -0
- package/wasm/pkg/web/wasm.js +191 -0
- package/wasm/pkg/web/wasm_bg.wasm +0 -0
- package/wasm/pkg/web/wasm_bg.wasm.d.ts +8 -0
- package/wasm/src/lib.rs +17 -0
- package/wasm.ts +16 -0
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import path from
|
|
3
|
-
import fs from
|
|
4
|
-
import os from
|
|
5
|
-
import { execSync } from
|
|
6
|
-
import chalk from
|
|
7
|
-
import prompts from
|
|
8
|
-
import { createLogUpdate } from
|
|
9
|
-
import { checkConfigFile, getClosestConfigFile, getRootDir, globalCacheDir, readConfig, writeConfig } from
|
|
10
|
-
import { checkRequirements } from
|
|
11
|
-
import * as moc from
|
|
12
|
-
import * as pocketIc from
|
|
13
|
-
import * as wasmtime from
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import fs from "node:fs";
|
|
4
|
+
import os from "node:os";
|
|
5
|
+
import { execSync } from "node:child_process";
|
|
6
|
+
import chalk from "chalk";
|
|
7
|
+
import prompts from "prompts";
|
|
8
|
+
import { createLogUpdate } from "log-update";
|
|
9
|
+
import { checkConfigFile, getClosestConfigFile, getRootDir, globalCacheDir, readConfig, writeConfig, } from "../../mops.js";
|
|
10
|
+
import { checkRequirements } from "../../check-requirements.js";
|
|
11
|
+
import * as moc from "./moc.js";
|
|
12
|
+
import * as pocketIc from "./pocket-ic.js";
|
|
13
|
+
import * as wasmtime from "./wasmtime.js";
|
|
14
14
|
function getToolUtils(tool) {
|
|
15
|
-
if (tool ===
|
|
15
|
+
if (tool === "moc") {
|
|
16
16
|
return moc;
|
|
17
17
|
}
|
|
18
|
-
else if (tool ===
|
|
18
|
+
else if (tool === "pocket-ic") {
|
|
19
19
|
return pocketIc;
|
|
20
20
|
}
|
|
21
|
-
else if (tool ===
|
|
21
|
+
else if (tool === "wasmtime") {
|
|
22
22
|
return wasmtime;
|
|
23
23
|
}
|
|
24
24
|
else {
|
|
@@ -35,12 +35,14 @@ async function ensureToolchainInited({ strict = true } = {}) {
|
|
|
35
35
|
// for non-stict perform check only if dfx.json exists and moc is listed in [toolchain] section
|
|
36
36
|
let rootDir = getRootDir();
|
|
37
37
|
let config = readConfig();
|
|
38
|
-
if (!strict &&
|
|
38
|
+
if (!strict &&
|
|
39
|
+
(!config.toolchain?.moc ||
|
|
40
|
+
(rootDir && !fs.existsSync(path.join(rootDir, "dfx.json"))))) {
|
|
39
41
|
return true;
|
|
40
42
|
}
|
|
41
43
|
try {
|
|
42
|
-
let res = execSync(
|
|
43
|
-
if (res && process.env.DFX_MOC_PATH ===
|
|
44
|
+
let res = execSync("which moc-wrapper").toString().trim();
|
|
45
|
+
if (res && process.env.DFX_MOC_PATH === "moc-wrapper") {
|
|
44
46
|
return true;
|
|
45
47
|
}
|
|
46
48
|
}
|
|
@@ -50,82 +52,88 @@ async function ensureToolchainInited({ strict = true } = {}) {
|
|
|
50
52
|
}
|
|
51
53
|
// update shell config files to set DFX_MOC_PATH to moc-wrapper
|
|
52
54
|
async function init({ reset = false, silent = false } = {}) {
|
|
53
|
-
if (process.platform ==
|
|
54
|
-
console.error(
|
|
55
|
+
if (process.platform == "win32") {
|
|
56
|
+
console.error("Windows is not supported. Please use WSL");
|
|
55
57
|
process.exit(1);
|
|
56
58
|
}
|
|
57
59
|
try {
|
|
58
|
-
let res = execSync(
|
|
60
|
+
let res = execSync("which mocv").toString().trim();
|
|
59
61
|
if (res) {
|
|
60
|
-
console.error(
|
|
61
|
-
console.log(
|
|
62
|
+
console.error("Mops is not compatible with mocv. Please uninstall mocv and try again.");
|
|
63
|
+
console.log("Steps to uninstall mocv:");
|
|
62
64
|
console.log('1. Run "mocv reset"');
|
|
63
65
|
console.log('2. Run "npm uninstall -g mocv"');
|
|
64
66
|
console.log('TIP: Alternative to "mocv use <version>" is "mops toolchain use moc <version>" (installs moc only for current project)');
|
|
65
|
-
console.log(
|
|
67
|
+
console.log("TIP: More details at https://docs.mops.one/cli/toolchain");
|
|
66
68
|
if (!process.env.CI || !silent) {
|
|
67
69
|
process.exit(1);
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
catch { }
|
|
72
|
-
let zshrc = path.join(os.homedir(),
|
|
73
|
-
let bashrc = path.join(os.homedir(),
|
|
74
|
-
let bashProfile = path.join(os.homedir(),
|
|
75
|
-
let zprofile = path.join(os.homedir(),
|
|
76
|
-
let shellConfigFiles = [
|
|
74
|
+
let zshrc = path.join(os.homedir(), ".zshrc");
|
|
75
|
+
let bashrc = path.join(os.homedir(), ".bashrc");
|
|
76
|
+
let bashProfile = path.join(os.homedir(), ".bash_profile");
|
|
77
|
+
let zprofile = path.join(os.homedir(), ".zprofile");
|
|
78
|
+
let shellConfigFiles = [
|
|
79
|
+
bashrc,
|
|
80
|
+
zshrc,
|
|
81
|
+
bashProfile,
|
|
82
|
+
zprofile,
|
|
83
|
+
process.env.GITHUB_ENV || "",
|
|
84
|
+
]
|
|
85
|
+
.map((x) => x)
|
|
86
|
+
.filter((file) => {
|
|
77
87
|
return fs.existsSync(file);
|
|
78
88
|
});
|
|
79
89
|
if (shellConfigFiles.length === 0) {
|
|
80
|
-
console.error(
|
|
90
|
+
console.error("Shell config files not found: .bashrc, .zshrc, .bash_profile, .zprofile");
|
|
81
91
|
console.log('TIP: You can add "export DFX_MOC_PATH=moc-wrapper" to your shell config file manually to initialize Mops toolchain');
|
|
82
92
|
process.exit(1);
|
|
83
93
|
}
|
|
84
94
|
// update all existing shell config files
|
|
85
95
|
for (let shellConfigFile of shellConfigFiles) {
|
|
86
96
|
let text = fs.readFileSync(shellConfigFile).toString();
|
|
87
|
-
let setDfxMocPathLine =
|
|
88
|
-
let newLines = [
|
|
89
|
-
setDfxMocPathLine,
|
|
90
|
-
];
|
|
97
|
+
let setDfxMocPathLine = "\nexport DFX_MOC_PATH=moc-wrapper";
|
|
98
|
+
let newLines = [setDfxMocPathLine];
|
|
91
99
|
let oldLines = [
|
|
92
100
|
// legacy mocv lines
|
|
93
|
-
`\nexport DFX_MOC_PATH=${path.join(path.join(os.homedir(),
|
|
101
|
+
`\nexport DFX_MOC_PATH=${path.join(path.join(os.homedir(), ".cache/mocv"), "versions/current")}/moc`,
|
|
94
102
|
'\nexport DFX_MOC_PATH="$HOME/.cache/mocv/versions/current/moc"',
|
|
95
103
|
// new
|
|
96
104
|
setDfxMocPathLine,
|
|
97
105
|
];
|
|
98
106
|
// remove old lines
|
|
99
107
|
for (let oldLine of oldLines) {
|
|
100
|
-
text = text.replace(oldLine,
|
|
108
|
+
text = text.replace(oldLine, "");
|
|
101
109
|
}
|
|
102
|
-
if (text.endsWith(
|
|
103
|
-
text = text.trimEnd() +
|
|
110
|
+
if (text.endsWith("\n\n")) {
|
|
111
|
+
text = text.trimEnd() + "\n";
|
|
104
112
|
}
|
|
105
113
|
// insert new lines
|
|
106
114
|
if (!reset) {
|
|
107
|
-
if (!text.endsWith(
|
|
108
|
-
text +=
|
|
115
|
+
if (!text.endsWith("\n")) {
|
|
116
|
+
text += "\n";
|
|
109
117
|
}
|
|
110
118
|
for (let newLine of newLines) {
|
|
111
119
|
if (shellConfigFile === process.env.GITHUB_ENV) {
|
|
112
|
-
newLine = newLine.replace(
|
|
120
|
+
newLine = newLine.replace("export ", "");
|
|
113
121
|
}
|
|
114
122
|
text += newLine;
|
|
115
123
|
}
|
|
116
|
-
text +=
|
|
124
|
+
text += "\n";
|
|
117
125
|
}
|
|
118
126
|
fs.writeFileSync(shellConfigFile, text);
|
|
119
127
|
}
|
|
120
128
|
if (!silent) {
|
|
121
|
-
console.log(chalk.green(
|
|
122
|
-
console.log(
|
|
129
|
+
console.log(chalk.green("Success!"));
|
|
130
|
+
console.log("Restart terminal to apply changes");
|
|
123
131
|
}
|
|
124
132
|
}
|
|
125
133
|
async function download(tool, version, { silent = false, verbose = false } = {}) {
|
|
126
134
|
let toolUtils = getToolUtils(tool);
|
|
127
135
|
let logUpdate = createLogUpdate(process.stdout, { showCursor: true });
|
|
128
|
-
silent || logUpdate(
|
|
136
|
+
silent || logUpdate("Installing", tool, version);
|
|
129
137
|
await toolUtils.download(version, { silent, verbose });
|
|
130
138
|
if (verbose) {
|
|
131
139
|
logUpdate.done();
|
|
@@ -151,19 +159,22 @@ async function installAll({ silent = false, verbose = false } = {}) {
|
|
|
151
159
|
logUpdate(...args);
|
|
152
160
|
}
|
|
153
161
|
};
|
|
154
|
-
log(
|
|
162
|
+
log("Installing toolchain...");
|
|
155
163
|
if (config.toolchain?.moc) {
|
|
156
|
-
await download(
|
|
164
|
+
await download("moc", config.toolchain.moc, { silent, verbose });
|
|
157
165
|
}
|
|
158
166
|
if (config.toolchain?.wasmtime) {
|
|
159
|
-
await download(
|
|
167
|
+
await download("wasmtime", config.toolchain.wasmtime, { silent, verbose });
|
|
160
168
|
}
|
|
161
|
-
if (config.toolchain?.[
|
|
162
|
-
await download(
|
|
169
|
+
if (config.toolchain?.["pocket-ic"]) {
|
|
170
|
+
await download("pocket-ic", config.toolchain["pocket-ic"], {
|
|
171
|
+
silent,
|
|
172
|
+
verbose,
|
|
173
|
+
});
|
|
163
174
|
}
|
|
164
175
|
if (!silent) {
|
|
165
176
|
logUpdate.clear();
|
|
166
|
-
console.log(chalk.green(
|
|
177
|
+
console.log(chalk.green("Toolchain installed"));
|
|
167
178
|
}
|
|
168
179
|
}
|
|
169
180
|
async function promptVersion(tool) {
|
|
@@ -175,13 +186,14 @@ async function promptVersion(tool) {
|
|
|
175
186
|
let versions = releases.map((item) => item.tag_name);
|
|
176
187
|
let currentIndex = versions.indexOf(current);
|
|
177
188
|
let res = await prompts({
|
|
178
|
-
type:
|
|
179
|
-
name:
|
|
189
|
+
type: "select",
|
|
190
|
+
name: "version",
|
|
180
191
|
message: `Select ${tool} version`,
|
|
181
192
|
choices: releases.map((release, i) => {
|
|
182
|
-
let date = new Date(release.published_at).toLocaleDateString(undefined, { year:
|
|
193
|
+
let date = new Date(release.published_at).toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" });
|
|
183
194
|
return {
|
|
184
|
-
title: release.tag_name +
|
|
195
|
+
title: release.tag_name +
|
|
196
|
+
chalk.gray(` ${date}${currentIndex === i ? chalk.italic(" (current)") : ""}`),
|
|
185
197
|
value: release.tag_name,
|
|
186
198
|
};
|
|
187
199
|
}),
|
|
@@ -191,7 +203,7 @@ async function promptVersion(tool) {
|
|
|
191
203
|
}
|
|
192
204
|
// download binary and set version in mops.toml
|
|
193
205
|
async function use(tool, version) {
|
|
194
|
-
if (tool ===
|
|
206
|
+
if (tool === "moc") {
|
|
195
207
|
await ensureToolchainInited();
|
|
196
208
|
}
|
|
197
209
|
if (!version) {
|
|
@@ -200,7 +212,7 @@ async function use(tool, version) {
|
|
|
200
212
|
if (!version) {
|
|
201
213
|
return;
|
|
202
214
|
}
|
|
203
|
-
if (version ===
|
|
215
|
+
if (version === "latest") {
|
|
204
216
|
version = await getToolUtils(tool).getLatestReleaseTag();
|
|
205
217
|
}
|
|
206
218
|
await download(tool, version);
|
|
@@ -211,7 +223,7 @@ async function use(tool, version) {
|
|
|
211
223
|
writeConfig(config);
|
|
212
224
|
await checkRequirements();
|
|
213
225
|
if (oldVersion === version) {
|
|
214
|
-
console.log(
|
|
226
|
+
console.log(`${tool} ${version} is already installed`);
|
|
215
227
|
}
|
|
216
228
|
else {
|
|
217
229
|
console.log(chalk.green(`Installed ${tool} ${version}`));
|
|
@@ -219,7 +231,7 @@ async function use(tool, version) {
|
|
|
219
231
|
}
|
|
220
232
|
// download latest binary and set version in mops.toml
|
|
221
233
|
async function update(tool) {
|
|
222
|
-
if (tool ===
|
|
234
|
+
if (tool === "moc") {
|
|
223
235
|
await ensureToolchainInited();
|
|
224
236
|
}
|
|
225
237
|
let config = readConfig();
|
|
@@ -236,11 +248,11 @@ async function update(tool) {
|
|
|
236
248
|
let oldVersion = config.toolchain[tool];
|
|
237
249
|
config.toolchain[tool] = version;
|
|
238
250
|
writeConfig(config);
|
|
239
|
-
if (tool ===
|
|
251
|
+
if (tool === "moc") {
|
|
240
252
|
await checkRequirements();
|
|
241
253
|
}
|
|
242
254
|
if (oldVersion === version) {
|
|
243
|
-
console.log(
|
|
255
|
+
console.log(`Latest ${tool} ${version} is already installed`);
|
|
244
256
|
}
|
|
245
257
|
else {
|
|
246
258
|
console.log(chalk.green(`Installed ${tool} ${version}`));
|
|
@@ -252,8 +264,8 @@ async function bin(tool, { fallback = false } = {}) {
|
|
|
252
264
|
let hasConfig = getClosestConfigFile();
|
|
253
265
|
// fallback to dfx moc
|
|
254
266
|
if (!hasConfig) {
|
|
255
|
-
if (tool ===
|
|
256
|
-
return execSync(
|
|
267
|
+
if (tool === "moc" && fallback) {
|
|
268
|
+
return execSync("dfx cache show").toString().trim() + "/moc";
|
|
257
269
|
}
|
|
258
270
|
checkConfigFile();
|
|
259
271
|
process.exit(1);
|
|
@@ -261,12 +273,12 @@ async function bin(tool, { fallback = false } = {}) {
|
|
|
261
273
|
let config = readConfig();
|
|
262
274
|
let version = config.toolchain?.[tool];
|
|
263
275
|
if (version) {
|
|
264
|
-
if (tool ===
|
|
276
|
+
if (tool === "moc") {
|
|
265
277
|
await ensureToolchainInited();
|
|
266
278
|
}
|
|
267
279
|
await download(tool, version, { silent: true });
|
|
268
|
-
if (tool ===
|
|
269
|
-
return path.join(globalCacheDir,
|
|
280
|
+
if (tool === "moc") {
|
|
281
|
+
return path.join(globalCacheDir, "moc", version, tool);
|
|
270
282
|
}
|
|
271
283
|
else {
|
|
272
284
|
return path.join(globalCacheDir, tool, version, tool);
|
|
@@ -274,8 +286,8 @@ async function bin(tool, { fallback = false } = {}) {
|
|
|
274
286
|
}
|
|
275
287
|
else {
|
|
276
288
|
// fallback to dfx moc
|
|
277
|
-
if (tool ===
|
|
278
|
-
return execSync(
|
|
289
|
+
if (tool === "moc" && fallback) {
|
|
290
|
+
return execSync("dfx cache show").toString().trim() + "/moc";
|
|
279
291
|
}
|
|
280
292
|
console.error(`Tool '${tool}' is not defined in [toolchain] section in mops.toml`);
|
|
281
293
|
console.log(`Run ${chalk.green(`mops toolchain use ${tool}`)} to install it`);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare let repo: string;
|
|
2
2
|
export declare let getLatestReleaseTag: () => Promise<string>;
|
|
3
3
|
export declare let getReleases: () => Promise<any>;
|
|
4
|
-
export declare let isCached: (version: string) => boolean;
|
|
4
|
+
export declare let isCached: (version: string, filename: "moc" | "moc.js") => boolean;
|
|
5
5
|
export declare let download: (version: string, { silent, verbose }?: {
|
|
6
6
|
silent?: boolean | undefined;
|
|
7
7
|
verbose?: boolean | undefined;
|
|
@@ -1,55 +1,79 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import path from
|
|
3
|
-
import fs from
|
|
4
|
-
import { SemVer } from
|
|
5
|
-
import { globalCacheDir } from
|
|
6
|
-
import * as toolchainUtils from
|
|
7
|
-
let cacheDir = path.join(globalCacheDir,
|
|
8
|
-
export let repo =
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import fs from "fs-extra";
|
|
4
|
+
import { SemVer } from "semver";
|
|
5
|
+
import { globalCacheDir } from "../../mops.js";
|
|
6
|
+
import * as toolchainUtils from "./toolchain-utils.js";
|
|
7
|
+
let cacheDir = path.join(globalCacheDir, "moc");
|
|
8
|
+
export let repo = "dfinity/motoko";
|
|
9
9
|
export let getLatestReleaseTag = async () => {
|
|
10
10
|
return toolchainUtils.getLatestReleaseTag(repo);
|
|
11
11
|
};
|
|
12
12
|
export let getReleases = async () => {
|
|
13
13
|
return toolchainUtils.getReleases(repo);
|
|
14
14
|
};
|
|
15
|
-
export let isCached = (version) => {
|
|
15
|
+
export let isCached = (version, filename) => {
|
|
16
16
|
let dir = path.join(cacheDir, version);
|
|
17
|
-
return fs.existsSync(dir) && fs.existsSync(path.join(dir,
|
|
17
|
+
return fs.existsSync(dir) && fs.existsSync(path.join(dir, filename));
|
|
18
18
|
};
|
|
19
19
|
export let download = async (version, { silent = false, verbose = false } = {}) => {
|
|
20
|
-
if (process.platform ==
|
|
21
|
-
console.error(
|
|
20
|
+
if (process.platform == "win32") {
|
|
21
|
+
console.error("Windows is not supported. Please use WSL");
|
|
22
22
|
process.exit(1);
|
|
23
23
|
}
|
|
24
24
|
if (!version) {
|
|
25
|
-
console.error(
|
|
25
|
+
console.error("version is not defined");
|
|
26
26
|
process.exit(1);
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
const destDir = path.join(cacheDir, version);
|
|
29
|
+
if (isCached(version, "moc.js")) {
|
|
30
|
+
if (verbose) {
|
|
31
|
+
console.log(`moc.js ${version} is already downloaded`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// Download the .js artifact
|
|
36
|
+
const jsUrl = `https://github.com/dfinity/motoko/releases/download/${version}/moc-${version}.js`;
|
|
37
|
+
const jsDestPath = path.join(destDir, "moc.js");
|
|
38
|
+
if (verbose && !silent) {
|
|
39
|
+
console.log(`Downloading ${jsUrl}`);
|
|
40
|
+
}
|
|
41
|
+
const buffer = await toolchainUtils.tryDownloadFile(jsUrl);
|
|
42
|
+
if (buffer) {
|
|
43
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
44
|
+
fs.writeFileSync(jsDestPath, buffer);
|
|
45
|
+
}
|
|
46
|
+
else if (verbose && !silent) {
|
|
47
|
+
console.log(`Warning: Could not download ${jsUrl}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (isCached(version, "moc")) {
|
|
29
51
|
if (verbose) {
|
|
30
52
|
console.log(`moc ${version} is already installed`);
|
|
31
53
|
}
|
|
32
54
|
return;
|
|
33
55
|
}
|
|
34
56
|
let url;
|
|
35
|
-
if (new SemVer(version).compare(new SemVer(
|
|
36
|
-
let platfrom = process.platform ==
|
|
37
|
-
let arch = process.arch.startsWith(
|
|
38
|
-
?
|
|
39
|
-
|
|
57
|
+
if (new SemVer(version).compare(new SemVer("0.14.6")) >= 0) {
|
|
58
|
+
let platfrom = process.platform == "darwin" ? "Darwin" : "Linux";
|
|
59
|
+
let arch = process.arch.startsWith("arm")
|
|
60
|
+
? process.platform == "darwin"
|
|
61
|
+
? "arm64"
|
|
62
|
+
: "aarch64"
|
|
63
|
+
: "x86_64";
|
|
40
64
|
url = `https://github.com/dfinity/motoko/releases/download/${version}/motoko-${platfrom}-${arch}-${version}.tar.gz`;
|
|
41
65
|
}
|
|
42
|
-
else if (new SemVer(version).compare(new SemVer(
|
|
43
|
-
let platfrom = process.platform ==
|
|
44
|
-
let arch =
|
|
66
|
+
else if (new SemVer(version).compare(new SemVer("0.9.5")) >= 0) {
|
|
67
|
+
let platfrom = process.platform == "darwin" ? "Darwin" : "Linux";
|
|
68
|
+
let arch = "x86_64";
|
|
45
69
|
url = `https://github.com/dfinity/motoko/releases/download/${version}/motoko-${platfrom}-${arch}-${version}.tar.gz`;
|
|
46
70
|
}
|
|
47
71
|
else {
|
|
48
|
-
let platfrom = process.platform ==
|
|
72
|
+
let platfrom = process.platform == "darwin" ? "macos" : "linux64";
|
|
49
73
|
url = `https://github.com/dfinity/motoko/releases/download/${version}/motoko-${platfrom}-${version}.tar.gz`;
|
|
50
74
|
}
|
|
51
75
|
if (verbose && !silent) {
|
|
52
76
|
console.log(`Downloading ${url}`);
|
|
53
77
|
}
|
|
54
|
-
await toolchainUtils.downloadAndExtract(url,
|
|
78
|
+
await toolchainUtils.downloadAndExtract(url, destDir);
|
|
55
79
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import path from
|
|
3
|
-
import fs from
|
|
4
|
-
import { globalCacheDir } from
|
|
5
|
-
import * as toolchainUtils from
|
|
6
|
-
let cacheDir = path.join(globalCacheDir,
|
|
7
|
-
export let repo =
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import fs from "node:fs";
|
|
4
|
+
import { globalCacheDir } from "../../mops.js";
|
|
5
|
+
import * as toolchainUtils from "./toolchain-utils.js";
|
|
6
|
+
let cacheDir = path.join(globalCacheDir, "pocket-ic");
|
|
7
|
+
export let repo = "dfinity/pocketic";
|
|
8
8
|
export let getLatestReleaseTag = async () => {
|
|
9
9
|
return toolchainUtils.getLatestReleaseTag(repo);
|
|
10
10
|
};
|
|
@@ -13,11 +13,11 @@ export let getReleases = async () => {
|
|
|
13
13
|
};
|
|
14
14
|
export let isCached = (version) => {
|
|
15
15
|
let dir = path.join(cacheDir, version);
|
|
16
|
-
return fs.existsSync(dir) && fs.existsSync(path.join(dir,
|
|
16
|
+
return fs.existsSync(dir) && fs.existsSync(path.join(dir, "pocket-ic"));
|
|
17
17
|
};
|
|
18
18
|
export let download = async (version, { silent = false, verbose = false } = {}) => {
|
|
19
19
|
if (!version) {
|
|
20
|
-
console.error(
|
|
20
|
+
console.error("version is not defined");
|
|
21
21
|
process.exit(1);
|
|
22
22
|
}
|
|
23
23
|
if (isCached(version)) {
|
|
@@ -26,11 +26,11 @@ export let download = async (version, { silent = false, verbose = false } = {})
|
|
|
26
26
|
}
|
|
27
27
|
return;
|
|
28
28
|
}
|
|
29
|
-
let platfrom = process.platform ==
|
|
30
|
-
let arch =
|
|
29
|
+
let platfrom = process.platform == "darwin" ? "darwin" : "linux";
|
|
30
|
+
let arch = "x86_64";
|
|
31
31
|
let url = `https://github.com/dfinity/pocketic/releases/download/${version}/pocket-ic-${arch}-${platfrom}.gz`;
|
|
32
32
|
if (verbose && !silent) {
|
|
33
33
|
console.log(`Downloading ${url}`);
|
|
34
34
|
}
|
|
35
|
-
await toolchainUtils.downloadAndExtract(url, path.join(cacheDir, version),
|
|
35
|
+
await toolchainUtils.downloadAndExtract(url, path.join(cacheDir, version), "pocket-ic");
|
|
36
36
|
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
export declare let tryDownloadFile: (url: string) => Promise<Buffer | null>;
|
|
1
3
|
export declare let downloadAndExtract: (url: string, destDir: string, destFileName?: string) => Promise<void>;
|
|
2
4
|
export declare let getLatestReleaseTag: (repo: string) => Promise<string>;
|
|
3
5
|
export declare let getReleases: (repo: string) => Promise<any>;
|
|
@@ -1,16 +1,25 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import path from
|
|
3
|
-
import { Buffer } from
|
|
4
|
-
import { unzipSync } from
|
|
5
|
-
import { chmodSync } from
|
|
6
|
-
import fs from
|
|
7
|
-
import decompress from
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { Buffer } from "node:buffer";
|
|
4
|
+
import { unzipSync } from "node:zlib";
|
|
5
|
+
import { chmodSync } from "node:fs";
|
|
6
|
+
import fs from "fs-extra";
|
|
7
|
+
import decompress from "decompress";
|
|
8
8
|
// import decompressTarxz from 'decomp-tarxz';
|
|
9
|
-
import { deleteSync } from
|
|
10
|
-
import { Octokit } from
|
|
11
|
-
import { extract as extractTar } from
|
|
12
|
-
import { getRootDir } from
|
|
13
|
-
export let
|
|
9
|
+
import { deleteSync } from "del";
|
|
10
|
+
import { Octokit } from "octokit";
|
|
11
|
+
import { extract as extractTar } from "tar";
|
|
12
|
+
import { getRootDir } from "../../mops.js";
|
|
13
|
+
export let tryDownloadFile = async (url) => {
|
|
14
|
+
let res = await fetch(url);
|
|
15
|
+
if (!res.ok) {
|
|
16
|
+
console.error(`HTTP ${res.status} ${url}`);
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
let arrayBuffer = await res.arrayBuffer();
|
|
20
|
+
return Buffer.from(arrayBuffer);
|
|
21
|
+
};
|
|
22
|
+
export let downloadAndExtract = async (url, destDir, destFileName = "") => {
|
|
14
23
|
let res = await fetch(url);
|
|
15
24
|
if (res.status !== 200) {
|
|
16
25
|
console.error(`ERROR ${res.status} ${url}`);
|
|
@@ -18,27 +27,27 @@ export let downloadAndExtract = async (url, destDir, destFileName = '') => {
|
|
|
18
27
|
}
|
|
19
28
|
let arrayBuffer = await res.arrayBuffer();
|
|
20
29
|
let buffer = Buffer.from(arrayBuffer);
|
|
21
|
-
let tmpDir = path.join(getRootDir(),
|
|
30
|
+
let tmpDir = path.join(getRootDir(), ".mops", "_tmp");
|
|
22
31
|
let archive = path.join(tmpDir, path.basename(url));
|
|
23
32
|
fs.mkdirSync(tmpDir, { recursive: true });
|
|
24
33
|
fs.writeFileSync(archive, buffer);
|
|
25
34
|
fs.mkdirSync(destDir, { recursive: true });
|
|
26
|
-
if (archive.endsWith(
|
|
27
|
-
let decompressTarxz = await import(
|
|
35
|
+
if (archive.endsWith(".xz")) {
|
|
36
|
+
let decompressTarxz = await import("decomp-tarxz");
|
|
28
37
|
await decompress(archive, tmpDir, {
|
|
29
38
|
plugins: [decompressTarxz.default()],
|
|
30
39
|
}).catch(() => {
|
|
31
40
|
deleteSync([tmpDir]);
|
|
32
41
|
});
|
|
33
|
-
fs.cpSync(path.join(tmpDir, path.parse(archive).name.replace(
|
|
42
|
+
fs.cpSync(path.join(tmpDir, path.parse(archive).name.replace(".tar", "")), destDir, { recursive: true });
|
|
34
43
|
}
|
|
35
|
-
else if (archive.endsWith(
|
|
44
|
+
else if (archive.endsWith("tar.gz")) {
|
|
36
45
|
await extractTar({
|
|
37
46
|
file: archive,
|
|
38
47
|
cwd: destDir,
|
|
39
48
|
});
|
|
40
49
|
}
|
|
41
|
-
else if (archive.endsWith(
|
|
50
|
+
else if (archive.endsWith(".gz")) {
|
|
42
51
|
let destFile = path.join(destDir, destFileName || path.parse(archive).name);
|
|
43
52
|
fs.writeFileSync(destFile, unzipSync(buffer));
|
|
44
53
|
chmodSync(destFile, 0o700);
|
|
@@ -52,24 +61,24 @@ export let getLatestReleaseTag = async (repo) => {
|
|
|
52
61
|
console.error(`Failed to fetch latest release tag for ${repo}`);
|
|
53
62
|
process.exit(1);
|
|
54
63
|
}
|
|
55
|
-
return release.tag_name.replace(/^v/,
|
|
64
|
+
return release.tag_name.replace(/^v/, "");
|
|
56
65
|
};
|
|
57
66
|
export let getReleases = async (repo) => {
|
|
58
|
-
let octokit = new Octokit;
|
|
67
|
+
let octokit = new Octokit();
|
|
59
68
|
let res = await octokit.request(`GET /repos/${repo}/releases`, {
|
|
60
69
|
per_page: 10,
|
|
61
70
|
headers: {
|
|
62
|
-
|
|
71
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
63
72
|
},
|
|
64
73
|
});
|
|
65
74
|
if (res.status !== 200) {
|
|
66
|
-
console.log(
|
|
75
|
+
console.log("Releases fetch error");
|
|
67
76
|
process.exit(1);
|
|
68
77
|
}
|
|
69
78
|
return res.data.map((release) => {
|
|
70
79
|
return {
|
|
71
80
|
...release,
|
|
72
|
-
tag_name: release.tag_name.replace(/^v/,
|
|
81
|
+
tag_name: release.tag_name.replace(/^v/, ""),
|
|
73
82
|
};
|
|
74
83
|
});
|
|
75
84
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import path from
|
|
3
|
-
import fs from
|
|
4
|
-
import { globalCacheDir } from
|
|
5
|
-
import * as toolchainUtils from
|
|
6
|
-
let cacheDir = path.join(globalCacheDir,
|
|
7
|
-
export let repo =
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import fs from "fs-extra";
|
|
4
|
+
import { globalCacheDir } from "../../mops.js";
|
|
5
|
+
import * as toolchainUtils from "./toolchain-utils.js";
|
|
6
|
+
let cacheDir = path.join(globalCacheDir, "wasmtime");
|
|
7
|
+
export let repo = "bytecodealliance/wasmtime";
|
|
8
8
|
export let getLatestReleaseTag = async () => {
|
|
9
9
|
return toolchainUtils.getLatestReleaseTag(repo);
|
|
10
10
|
};
|
|
@@ -13,11 +13,11 @@ export let getReleases = async () => {
|
|
|
13
13
|
};
|
|
14
14
|
export let isCached = (version) => {
|
|
15
15
|
let dir = path.join(cacheDir, version);
|
|
16
|
-
return fs.existsSync(dir) && fs.existsSync(path.join(dir,
|
|
16
|
+
return fs.existsSync(dir) && fs.existsSync(path.join(dir, "wasmtime"));
|
|
17
17
|
};
|
|
18
18
|
export let download = async (version, { silent = false, verbose = false } = {}) => {
|
|
19
19
|
if (!version) {
|
|
20
|
-
console.error(
|
|
20
|
+
console.error("version is not defined");
|
|
21
21
|
process.exit(1);
|
|
22
22
|
}
|
|
23
23
|
if (isCached(version)) {
|
|
@@ -26,8 +26,8 @@ export let download = async (version, { silent = false, verbose = false } = {})
|
|
|
26
26
|
}
|
|
27
27
|
return;
|
|
28
28
|
}
|
|
29
|
-
let platfrom = process.platform ==
|
|
30
|
-
let arch = process.arch.startsWith(
|
|
29
|
+
let platfrom = process.platform == "darwin" ? "macos" : "linux";
|
|
30
|
+
let arch = process.arch.startsWith("arm") ? "aarch64" : "x86_64";
|
|
31
31
|
let url = `https://github.com/bytecodealliance/wasmtime/releases/download/v${version}/wasmtime-v${version}-${arch}-${platfrom}.tar.xz`;
|
|
32
32
|
if (verbose && !silent) {
|
|
33
33
|
console.log(`Downloading ${url}`);
|