ic-mops 1.12.0 → 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 +6 -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/bundle/bench/bench-canister.mo +109 -101
- package/bundle/bench/user-bench.mo +6 -6
- package/bundle/bin/mops.js +1 -1
- package/bundle/cli.js +797 -792
- package/bundle/cli.tgz +0 -0
- package/bundle/package.json +6 -5
- package/bundle/templates/mops-publish.yml +3 -3
- package/bundle/templates/mops-test.yml +3 -3
- package/bundle/templates/src/lib.mo +13 -13
- package/bundle/templates/test/lib.test.mo +2 -2
- 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 -41
- package/commands/bench/bench-canister.mo +114 -108
- package/commands/bench/user-bench.mo +6 -6
- package/commands/bench-replica.ts +146 -118
- 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 +30 -24
- package/commands/owner.ts +107 -99
- package/commands/publish.ts +534 -443
- package/commands/remove.ts +119 -89
- package/commands/replica.ts +391 -316
- 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 +498 -401
- package/commands/test/utils.ts +72 -67
- 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 +82 -64
- 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/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 +40 -37
- package/dist/commands/available-updates.d.ts +1 -1
- package/dist/commands/available-updates.js +18 -12
- 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 +4 -4
- package/dist/commands/bench-replica.js +45 -34
- 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 +12 -8
- 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 +7 -7
- package/dist/commands/replica.js +85 -57
- 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 +134 -112
- package/dist/commands/test/utils.d.ts +3 -3
- package/dist/commands/test/utils.js +17 -17
- 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 +18 -14
- 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/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.js +2 -2
- 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 +9 -5
- 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 +5 -5
- 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 +19 -10
- 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,65 +1,93 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import path from
|
|
3
|
-
import fs from
|
|
4
|
-
import {SemVer} from
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import fs from "fs-extra";
|
|
4
|
+
import { SemVer } from "semver";
|
|
5
5
|
|
|
6
|
-
import {globalCacheDir} from
|
|
7
|
-
import * as toolchainUtils from
|
|
6
|
+
import { globalCacheDir } from "../../mops.js";
|
|
7
|
+
import * as toolchainUtils from "./toolchain-utils.js";
|
|
8
8
|
|
|
9
|
-
let cacheDir = path.join(globalCacheDir,
|
|
9
|
+
let cacheDir = path.join(globalCacheDir, "moc");
|
|
10
10
|
|
|
11
|
-
export let repo =
|
|
11
|
+
export let repo = "dfinity/motoko";
|
|
12
12
|
|
|
13
13
|
export let getLatestReleaseTag = async () => {
|
|
14
|
-
|
|
14
|
+
return toolchainUtils.getLatestReleaseTag(repo);
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
export let getReleases = async () => {
|
|
18
|
-
|
|
18
|
+
return toolchainUtils.getReleases(repo);
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
export let isCached = (version :
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
export let isCached = (version: string, filename: "moc" | "moc.js") => {
|
|
22
|
+
let dir = path.join(cacheDir, version);
|
|
23
|
+
return fs.existsSync(dir) && fs.existsSync(path.join(dir, filename));
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
export let download = async (
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
26
|
+
export let download = async (
|
|
27
|
+
version: string,
|
|
28
|
+
{ silent = false, verbose = false } = {},
|
|
29
|
+
) => {
|
|
30
|
+
if (process.platform == "win32") {
|
|
31
|
+
console.error("Windows is not supported. Please use WSL");
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
if (!version) {
|
|
35
|
+
console.error("version is not defined");
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
41
38
|
|
|
42
|
-
|
|
43
|
-
if (new SemVer(version).compare(new SemVer('0.14.6')) >= 0) {
|
|
44
|
-
let platfrom = process.platform == 'darwin' ? 'Darwin' : 'Linux';
|
|
45
|
-
let arch = process.arch.startsWith('arm')
|
|
46
|
-
? (process.platform == 'darwin' ? 'arm64' : 'aarch64')
|
|
47
|
-
: 'x86_64';
|
|
48
|
-
url = `https://github.com/dfinity/motoko/releases/download/${version}/motoko-${platfrom}-${arch}-${version}.tar.gz`;
|
|
49
|
-
}
|
|
50
|
-
else if (new SemVer(version).compare(new SemVer('0.9.5')) >= 0) {
|
|
51
|
-
let platfrom = process.platform == 'darwin' ? 'Darwin' : 'Linux';
|
|
52
|
-
let arch = 'x86_64';
|
|
53
|
-
url = `https://github.com/dfinity/motoko/releases/download/${version}/motoko-${platfrom}-${arch}-${version}.tar.gz`;
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
let platfrom = process.platform == 'darwin' ? 'macos' : 'linux64';
|
|
57
|
-
url = `https://github.com/dfinity/motoko/releases/download/${version}/motoko-${platfrom}-${version}.tar.gz`;
|
|
58
|
-
}
|
|
39
|
+
const destDir = path.join(cacheDir, version);
|
|
59
40
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
41
|
+
if (isCached(version, "moc.js")) {
|
|
42
|
+
if (verbose) {
|
|
43
|
+
console.log(`moc.js ${version} is already downloaded`);
|
|
44
|
+
}
|
|
45
|
+
} else {
|
|
46
|
+
// Download the .js artifact
|
|
47
|
+
const jsUrl = `https://github.com/dfinity/motoko/releases/download/${version}/moc-${version}.js`;
|
|
48
|
+
const jsDestPath = path.join(destDir, "moc.js");
|
|
63
49
|
|
|
64
|
-
|
|
65
|
-
};
|
|
50
|
+
if (verbose && !silent) {
|
|
51
|
+
console.log(`Downloading ${jsUrl}`);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const buffer = await toolchainUtils.tryDownloadFile(jsUrl);
|
|
55
|
+
if (buffer) {
|
|
56
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
57
|
+
fs.writeFileSync(jsDestPath, buffer);
|
|
58
|
+
} else if (verbose && !silent) {
|
|
59
|
+
console.log(`Warning: Could not download ${jsUrl}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (isCached(version, "moc")) {
|
|
64
|
+
if (verbose) {
|
|
65
|
+
console.log(`moc ${version} is already installed`);
|
|
66
|
+
}
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
let url;
|
|
71
|
+
if (new SemVer(version).compare(new SemVer("0.14.6")) >= 0) {
|
|
72
|
+
let platfrom = process.platform == "darwin" ? "Darwin" : "Linux";
|
|
73
|
+
let arch = process.arch.startsWith("arm")
|
|
74
|
+
? process.platform == "darwin"
|
|
75
|
+
? "arm64"
|
|
76
|
+
: "aarch64"
|
|
77
|
+
: "x86_64";
|
|
78
|
+
url = `https://github.com/dfinity/motoko/releases/download/${version}/motoko-${platfrom}-${arch}-${version}.tar.gz`;
|
|
79
|
+
} else if (new SemVer(version).compare(new SemVer("0.9.5")) >= 0) {
|
|
80
|
+
let platfrom = process.platform == "darwin" ? "Darwin" : "Linux";
|
|
81
|
+
let arch = "x86_64";
|
|
82
|
+
url = `https://github.com/dfinity/motoko/releases/download/${version}/motoko-${platfrom}-${arch}-${version}.tar.gz`;
|
|
83
|
+
} else {
|
|
84
|
+
let platfrom = process.platform == "darwin" ? "macos" : "linux64";
|
|
85
|
+
url = `https://github.com/dfinity/motoko/releases/download/${version}/motoko-${platfrom}-${version}.tar.gz`;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (verbose && !silent) {
|
|
89
|
+
console.log(`Downloading ${url}`);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
await toolchainUtils.downloadAndExtract(url, destDir);
|
|
93
|
+
};
|
|
@@ -1,46 +1,53 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import path from
|
|
3
|
-
import fs from
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import fs from "node:fs";
|
|
4
4
|
|
|
5
|
-
import {globalCacheDir} from
|
|
6
|
-
import * as toolchainUtils from
|
|
5
|
+
import { globalCacheDir } from "../../mops.js";
|
|
6
|
+
import * as toolchainUtils from "./toolchain-utils.js";
|
|
7
7
|
|
|
8
|
-
let cacheDir = path.join(globalCacheDir,
|
|
8
|
+
let cacheDir = path.join(globalCacheDir, "pocket-ic");
|
|
9
9
|
|
|
10
|
-
export let repo =
|
|
10
|
+
export let repo = "dfinity/pocketic";
|
|
11
11
|
|
|
12
12
|
export let getLatestReleaseTag = async () => {
|
|
13
|
-
|
|
13
|
+
return toolchainUtils.getLatestReleaseTag(repo);
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
export let getReleases = async () => {
|
|
17
|
-
|
|
17
|
+
return toolchainUtils.getReleases(repo);
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
export let isCached = (version
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
export let isCached = (version: string) => {
|
|
21
|
+
let dir = path.join(cacheDir, version);
|
|
22
|
+
return fs.existsSync(dir) && fs.existsSync(path.join(dir, "pocket-ic"));
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
export let download = async (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
25
|
+
export let download = async (
|
|
26
|
+
version: string,
|
|
27
|
+
{ silent = false, verbose = false } = {},
|
|
28
|
+
) => {
|
|
29
|
+
if (!version) {
|
|
30
|
+
console.error("version is not defined");
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
if (isCached(version)) {
|
|
34
|
+
if (verbose) {
|
|
35
|
+
console.log(`pocket-ic ${version} is already installed`);
|
|
36
|
+
}
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
let platfrom = process.platform == "darwin" ? "darwin" : "linux";
|
|
41
|
+
let arch = "x86_64";
|
|
42
|
+
let url = `https://github.com/dfinity/pocketic/releases/download/${version}/pocket-ic-${arch}-${platfrom}.gz`;
|
|
43
|
+
|
|
44
|
+
if (verbose && !silent) {
|
|
45
|
+
console.log(`Downloading ${url}`);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
await toolchainUtils.downloadAndExtract(
|
|
49
|
+
url,
|
|
50
|
+
path.join(cacheDir, version),
|
|
51
|
+
"pocket-ic",
|
|
52
|
+
);
|
|
53
|
+
};
|
|
@@ -1,86 +1,106 @@
|
|
|
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
|
|
9
|
+
import { deleteSync } from "del";
|
|
10
|
+
import { Octokit } from "octokit";
|
|
11
|
+
import { extract as extractTar } from "tar";
|
|
12
12
|
|
|
13
|
-
import {getRootDir} from
|
|
13
|
+
import { getRootDir } from "../../mops.js";
|
|
14
14
|
|
|
15
|
-
export let
|
|
16
|
-
|
|
15
|
+
export let tryDownloadFile = async (url: string): Promise<Buffer | null> => {
|
|
16
|
+
let res = await fetch(url);
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
if (!res.ok) {
|
|
19
|
+
console.error(`HTTP ${res.status} ${url}`);
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
let arrayBuffer = await res.arrayBuffer();
|
|
24
|
+
return Buffer.from(arrayBuffer);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export let downloadAndExtract = async (
|
|
28
|
+
url: string,
|
|
29
|
+
destDir: string,
|
|
30
|
+
destFileName: string = "",
|
|
31
|
+
) => {
|
|
32
|
+
let res = await fetch(url);
|
|
33
|
+
|
|
34
|
+
if (res.status !== 200) {
|
|
35
|
+
console.error(`ERROR ${res.status} ${url}`);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
25
38
|
|
|
26
|
-
|
|
27
|
-
|
|
39
|
+
let arrayBuffer = await res.arrayBuffer();
|
|
40
|
+
let buffer = Buffer.from(arrayBuffer);
|
|
28
41
|
|
|
29
|
-
|
|
30
|
-
|
|
42
|
+
let tmpDir = path.join(getRootDir(), ".mops", "_tmp");
|
|
43
|
+
let archive = path.join(tmpDir, path.basename(url));
|
|
31
44
|
|
|
32
|
-
|
|
45
|
+
fs.mkdirSync(tmpDir, { recursive: true });
|
|
46
|
+
fs.writeFileSync(archive, buffer);
|
|
33
47
|
|
|
34
|
-
|
|
35
|
-
let decompressTarxz = await import('decomp-tarxz');
|
|
36
|
-
await decompress(archive, tmpDir, {
|
|
37
|
-
plugins: [decompressTarxz.default()],
|
|
38
|
-
}).catch(() => {
|
|
39
|
-
deleteSync([tmpDir]);
|
|
40
|
-
});
|
|
41
|
-
fs.cpSync(path.join(tmpDir, path.parse(archive).name.replace('.tar', '')), destDir, {recursive: true});
|
|
42
|
-
}
|
|
43
|
-
else if (archive.endsWith('tar.gz')) {
|
|
44
|
-
await extractTar({
|
|
45
|
-
file: archive,
|
|
46
|
-
cwd: destDir,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
else if (archive.endsWith('.gz')) {
|
|
50
|
-
let destFile = path.join(destDir, destFileName || path.parse(archive).name);
|
|
51
|
-
fs.writeFileSync(destFile, unzipSync(buffer));
|
|
52
|
-
chmodSync(destFile, 0o700);
|
|
53
|
-
}
|
|
48
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
54
49
|
|
|
55
|
-
|
|
50
|
+
if (archive.endsWith(".xz")) {
|
|
51
|
+
let decompressTarxz = await import("decomp-tarxz");
|
|
52
|
+
await decompress(archive, tmpDir, {
|
|
53
|
+
plugins: [decompressTarxz.default()],
|
|
54
|
+
}).catch(() => {
|
|
55
|
+
deleteSync([tmpDir]);
|
|
56
|
+
});
|
|
57
|
+
fs.cpSync(
|
|
58
|
+
path.join(tmpDir, path.parse(archive).name.replace(".tar", "")),
|
|
59
|
+
destDir,
|
|
60
|
+
{ recursive: true },
|
|
61
|
+
);
|
|
62
|
+
} else if (archive.endsWith("tar.gz")) {
|
|
63
|
+
await extractTar({
|
|
64
|
+
file: archive,
|
|
65
|
+
cwd: destDir,
|
|
66
|
+
});
|
|
67
|
+
} else if (archive.endsWith(".gz")) {
|
|
68
|
+
let destFile = path.join(destDir, destFileName || path.parse(archive).name);
|
|
69
|
+
fs.writeFileSync(destFile, unzipSync(buffer));
|
|
70
|
+
chmodSync(destFile, 0o700);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
deleteSync([tmpDir], { force: true });
|
|
56
74
|
};
|
|
57
75
|
|
|
58
|
-
export let getLatestReleaseTag = async (repo
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
76
|
+
export let getLatestReleaseTag = async (repo: string): Promise<string> => {
|
|
77
|
+
let releases = await getReleases(repo);
|
|
78
|
+
let release = releases.find(
|
|
79
|
+
(release: any) => !release.prerelease && !release.draft,
|
|
80
|
+
);
|
|
81
|
+
if (!release?.tag_name) {
|
|
82
|
+
console.error(`Failed to fetch latest release tag for ${repo}`);
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
return release.tag_name.replace(/^v/, "");
|
|
66
86
|
};
|
|
67
87
|
|
|
68
|
-
export let getReleases = async (repo
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
};
|
|
88
|
+
export let getReleases = async (repo: string) => {
|
|
89
|
+
let octokit = new Octokit();
|
|
90
|
+
let res = await octokit.request(`GET /repos/${repo}/releases`, {
|
|
91
|
+
per_page: 10,
|
|
92
|
+
headers: {
|
|
93
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
if (res.status !== 200) {
|
|
97
|
+
console.log("Releases fetch error");
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
return res.data.map((release: any) => {
|
|
101
|
+
return {
|
|
102
|
+
...release,
|
|
103
|
+
tag_name: release.tag_name.replace(/^v/, ""),
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
};
|
|
@@ -1,46 +1,49 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import path from
|
|
3
|
-
import fs from
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import fs from "fs-extra";
|
|
4
4
|
|
|
5
|
-
import {globalCacheDir} from
|
|
6
|
-
import * as toolchainUtils from
|
|
5
|
+
import { globalCacheDir } from "../../mops.js";
|
|
6
|
+
import * as toolchainUtils from "./toolchain-utils.js";
|
|
7
7
|
|
|
8
|
-
let cacheDir = path.join(globalCacheDir,
|
|
8
|
+
let cacheDir = path.join(globalCacheDir, "wasmtime");
|
|
9
9
|
|
|
10
|
-
export let repo =
|
|
10
|
+
export let repo = "bytecodealliance/wasmtime";
|
|
11
11
|
|
|
12
12
|
export let getLatestReleaseTag = async () => {
|
|
13
|
-
|
|
13
|
+
return toolchainUtils.getLatestReleaseTag(repo);
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
export let getReleases = async () => {
|
|
17
|
-
|
|
17
|
+
return toolchainUtils.getReleases(repo);
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
export let isCached = (version
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
export let isCached = (version: string) => {
|
|
21
|
+
let dir = path.join(cacheDir, version);
|
|
22
|
+
return fs.existsSync(dir) && fs.existsSync(path.join(dir, "wasmtime"));
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
export let download = async (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
25
|
+
export let download = async (
|
|
26
|
+
version: string,
|
|
27
|
+
{ silent = false, verbose = false } = {},
|
|
28
|
+
) => {
|
|
29
|
+
if (!version) {
|
|
30
|
+
console.error("version is not defined");
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
if (isCached(version)) {
|
|
34
|
+
if (verbose) {
|
|
35
|
+
console.log(`wasmtime ${version} is already installed`);
|
|
36
|
+
}
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
let platfrom = process.platform == "darwin" ? "macos" : "linux";
|
|
41
|
+
let arch = process.arch.startsWith("arm") ? "aarch64" : "x86_64";
|
|
42
|
+
let url = `https://github.com/bytecodealliance/wasmtime/releases/download/v${version}/wasmtime-v${version}-${arch}-${platfrom}.tar.xz`;
|
|
43
|
+
|
|
44
|
+
if (verbose && !silent) {
|
|
45
|
+
console.log(`Downloading ${url}`);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
await toolchainUtils.downloadAndExtract(url, path.join(cacheDir, version));
|
|
49
|
+
};
|
package/commands/update.ts
CHANGED
|
@@ -1,77 +1,95 @@
|
|
|
1
|
-
import chalk from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import {
|
|
3
|
+
checkConfigFile,
|
|
4
|
+
getGithubCommit,
|
|
5
|
+
parseGithubURL,
|
|
6
|
+
readConfig,
|
|
7
|
+
} from "../mops.js";
|
|
8
|
+
import { add } from "./add.js";
|
|
9
|
+
import { getAvailableUpdates } from "./available-updates.js";
|
|
10
|
+
import { checkIntegrity } from "../integrity.js";
|
|
11
|
+
import { getDepName, getDepPinnedVersion } from "../helpers/get-dep-name.js";
|
|
7
12
|
|
|
8
13
|
type UpdateOptions = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
14
|
+
verbose?: boolean;
|
|
15
|
+
dev?: boolean;
|
|
16
|
+
lock?: "update" | "ignore";
|
|
12
17
|
};
|
|
13
18
|
|
|
14
|
-
export async function update(pkg
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
export async function update(pkg?: string, { lock }: UpdateOptions = {}) {
|
|
20
|
+
if (!checkConfigFile()) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
let config = readConfig();
|
|
19
24
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
if (
|
|
26
|
+
pkg &&
|
|
27
|
+
!config.dependencies?.[pkg] &&
|
|
28
|
+
!config["dev-dependencies"]?.[pkg]
|
|
29
|
+
) {
|
|
30
|
+
console.log(chalk.red(`Package "${pkg}" is not installed!`));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
24
33
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
// update github packages
|
|
35
|
+
let deps = Object.values(config.dependencies || {});
|
|
36
|
+
let devDeps = Object.values(config["dev-dependencies"] || {});
|
|
37
|
+
let githubDeps = [...deps, ...devDeps].filter((dep) => dep.repo);
|
|
38
|
+
if (pkg) {
|
|
39
|
+
githubDeps = githubDeps.filter((dep) => dep.name === pkg);
|
|
40
|
+
}
|
|
32
41
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
for (let dep of githubDeps) {
|
|
43
|
+
let { org, gitName, branch, commitHash } = parseGithubURL(dep.repo || "");
|
|
44
|
+
let dev = !!config["dev-dependencies"]?.[dep.name];
|
|
45
|
+
let commit = await getGithubCommit(`${org}/${gitName}`, branch);
|
|
46
|
+
if (commit.sha !== commitHash) {
|
|
47
|
+
await add(
|
|
48
|
+
`https://github.com/${org}/${gitName}#${branch}@${commit.sha}`,
|
|
49
|
+
{ dev },
|
|
50
|
+
dep.name,
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
41
54
|
|
|
42
|
-
|
|
43
|
-
|
|
55
|
+
// update mops packages
|
|
56
|
+
let available = await getAvailableUpdates(config, pkg);
|
|
44
57
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
let devDeps = Object.keys(config['dev-dependencies'] || {});
|
|
56
|
-
let allDeps = [...Object.keys(config.dependencies || {}), ...devDeps];
|
|
58
|
+
if (available.length === 0) {
|
|
59
|
+
if (pkg) {
|
|
60
|
+
console.log(chalk.green(`Package "${pkg}" is up to date!`));
|
|
61
|
+
} else {
|
|
62
|
+
console.log(chalk.green("All dependencies are up to date!"));
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
for (let dep of available) {
|
|
66
|
+
let devDeps = Object.keys(config["dev-dependencies"] || {});
|
|
67
|
+
let allDeps = [...Object.keys(config.dependencies || {}), ...devDeps];
|
|
57
68
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
69
|
+
let dev = false;
|
|
70
|
+
for (let d of devDeps) {
|
|
71
|
+
let pinnedVersion = getDepPinnedVersion(d);
|
|
72
|
+
if (
|
|
73
|
+
getDepName(d) === dep[0] &&
|
|
74
|
+
(!pinnedVersion || dep[1].startsWith(pinnedVersion))
|
|
75
|
+
) {
|
|
76
|
+
dev = true;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
66
80
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
81
|
+
let asName =
|
|
82
|
+
allDeps.find((d) => {
|
|
83
|
+
let pinnedVersion = getDepPinnedVersion(d);
|
|
84
|
+
return (
|
|
85
|
+
getDepName(d) === dep[0] &&
|
|
86
|
+
(!pinnedVersion || dep[1].startsWith(pinnedVersion))
|
|
87
|
+
);
|
|
88
|
+
}) || dep[0];
|
|
71
89
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
90
|
+
await add(`${dep[0]}@${dep[2]}`, { dev }, asName);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
75
93
|
|
|
76
|
-
|
|
77
|
-
}
|
|
94
|
+
await checkIntegrity(lock);
|
|
95
|
+
}
|