@devaloop/devalang 0.0.1-alpha.16-hotfix.1 → 0.0.1-alpha.17
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/.cargo/config.toml +2 -0
- package/.devalang +6 -10
- package/.github/workflows/ci.yml +19 -8
- package/Cargo.toml +18 -2
- package/README.md +80 -33
- package/docs/CHANGELOG.md +56 -0
- package/docs/ROADMAP.md +6 -3
- package/examples/index.deva +52 -35
- package/out-tsc/bin/index.d.ts +2 -0
- package/out-tsc/core/functions/index.d.ts +37 -0
- package/out-tsc/core/functions/index.js +76 -0
- package/out-tsc/core/index.d.ts +6 -0
- package/out-tsc/core/index.js +22 -0
- package/out-tsc/core/types/index.d.ts +4 -0
- package/out-tsc/core/types/index.js +20 -0
- package/out-tsc/core/types/plugin.d.ts +18 -0
- package/out-tsc/core/types/plugin.js +2 -0
- package/out-tsc/core/types/result.d.ts +27 -0
- package/out-tsc/core/types/result.js +2 -0
- package/out-tsc/core/types/statement.d.ts +106 -0
- package/out-tsc/core/types/statement.js +2 -0
- package/out-tsc/core/types/value.d.ts +43 -0
- package/out-tsc/core/types/value.js +2 -0
- package/out-tsc/index.d.ts +7 -0
- package/out-tsc/index.js +41 -2
- package/out-tsc/pkg/devalang_core.d.ts +7 -0
- package/out-tsc/pkg/devalang_core_bg.wasm.d.ts +33 -0
- package/out-tsc/scripts/copy-wasm-dts.d.ts +1 -0
- package/out-tsc/scripts/copy-wasm-dts.js +73 -0
- package/out-tsc/scripts/postinstall.d.ts +1 -0
- package/out-tsc/scripts/postinstall.js +33 -23
- package/out-tsc/scripts/version/bump.d.ts +1 -0
- package/out-tsc/scripts/version/fetch.d.ts +1 -0
- package/out-tsc/scripts/version/index.d.ts +1 -0
- package/out-tsc/scripts/version/sync.d.ts +1 -0
- package/package.json +16 -4
- package/project-version.json +3 -3
- package/rust/cli/bank/api.rs +122 -0
- package/rust/cli/bank/commands.rs +275 -0
- package/rust/cli/bank/mod.rs +29 -0
- package/rust/cli/build/commands.rs +97 -0
- package/rust/cli/build/mod.rs +2 -0
- package/rust/cli/build/process.rs +146 -0
- package/rust/cli/{check.rs → check/mod.rs} +18 -31
- package/rust/cli/discover/commands.rs +253 -0
- package/rust/cli/discover/config.rs +111 -0
- package/rust/cli/discover/fs.rs +19 -0
- package/rust/cli/discover/install.rs +103 -0
- package/rust/cli/discover/metadata.rs +48 -0
- package/rust/cli/discover/mod.rs +5 -0
- package/rust/cli/{init.rs → init/commands.rs} +88 -87
- package/rust/cli/init/mod.rs +1 -0
- package/rust/{installer → cli/install}/addon.rs +5 -9
- package/rust/cli/install/bank.rs +53 -0
- package/rust/cli/{install.rs → install/commands.rs} +9 -9
- package/rust/{installer → cli/install}/mod.rs +2 -3
- package/rust/cli/install/plugin.rs +61 -0
- package/rust/cli/{login.rs → login/commands.rs} +8 -11
- package/rust/cli/login/mod.rs +1 -0
- package/rust/cli/mod.rs +2 -3
- package/rust/cli/{driver.rs → parser.rs} +19 -2
- package/rust/cli/play/commands.rs +324 -0
- package/rust/cli/play/io.rs +17 -0
- package/rust/cli/play/mod.rs +5 -0
- package/rust/cli/play/process.rs +150 -0
- package/rust/cli/play/realtime.rs +91 -0
- package/rust/cli/play/utils.rs +23 -0
- package/rust/cli/telemetry/commands.rs +22 -0
- package/rust/cli/telemetry/event_creator.rs +80 -0
- package/rust/cli/telemetry/mod.rs +3 -0
- package/rust/cli/telemetry/send.rs +51 -0
- package/rust/cli/{template.rs → template/commands.rs} +1 -1
- package/rust/cli/template/mod.rs +1 -0
- package/rust/cli/{update.rs → update/commands.rs} +6 -6
- package/rust/cli/update/mod.rs +1 -0
- package/rust/config/driver.rs +57 -72
- package/rust/config/mod.rs +1 -2
- package/rust/config/ops.rs +26 -0
- package/rust/config/settings.rs +60 -50
- package/rust/core/audio/engine/helpers.rs +146 -0
- package/rust/core/audio/engine/mod.rs +7 -0
- package/rust/core/audio/engine/sample.rs +298 -0
- package/rust/core/audio/engine/synth.rs +310 -0
- package/rust/core/audio/evaluator.rs +15 -12
- package/rust/core/audio/interpreter/arrow_call.rs +99 -24
- package/rust/core/audio/interpreter/call.rs +81 -60
- package/rust/core/audio/interpreter/condition.rs +3 -2
- package/rust/core/audio/interpreter/driver.rs +206 -151
- package/rust/core/audio/interpreter/let_.rs +1 -1
- package/rust/core/audio/interpreter/load.rs +2 -1
- package/rust/core/audio/interpreter/loop_.rs +7 -6
- package/rust/core/audio/interpreter/sleep.rs +2 -1
- package/rust/core/audio/interpreter/spawn.rs +45 -57
- package/rust/core/audio/interpreter/tempo.rs +31 -10
- package/rust/core/audio/interpreter/trigger.rs +2 -2
- package/rust/core/audio/loader/trigger.rs +4 -7
- package/rust/core/audio/player.rs +6 -0
- package/rust/core/audio/renderer.rs +5 -7
- package/rust/core/audio/special/env.rs +3 -1
- package/rust/core/audio/special/math.rs +4 -4
- package/rust/core/audio/special/modulator.rs +2 -2
- package/rust/core/builder/mod.rs +9 -3
- package/rust/core/debugger/lexer.rs +1 -1
- package/rust/core/debugger/mod.rs +6 -0
- package/rust/core/debugger/module.rs +4 -4
- package/rust/core/debugger/preprocessor.rs +1 -1
- package/rust/core/debugger/store.rs +2 -2
- package/rust/core/error/mod.rs +189 -0
- package/rust/core/lexer/handler/arrow.rs +1 -1
- package/rust/core/lexer/handler/at.rs +1 -1
- package/rust/core/lexer/handler/brace.rs +2 -2
- package/rust/core/lexer/handler/colon.rs +1 -1
- package/rust/core/lexer/handler/comment.rs +1 -1
- package/rust/core/lexer/handler/dot.rs +1 -1
- package/rust/core/lexer/handler/driver.rs +1 -1
- package/rust/core/lexer/handler/identifier.rs +1 -1
- package/rust/core/lexer/handler/mod.rs +1 -2
- package/rust/core/lexer/handler/number.rs +1 -1
- package/rust/core/lexer/handler/operator.rs +1 -1
- package/rust/core/lexer/handler/parenthesis.rs +2 -2
- package/rust/core/lexer/handler/slash.rs +1 -1
- package/rust/core/lexer/handler/string.rs +1 -1
- package/rust/core/lexer/mod.rs +22 -12
- package/rust/core/lexer/token.rs +90 -97
- package/rust/core/mod.rs +0 -1
- package/rust/core/parser/driver.rs +66 -13
- package/rust/core/parser/handler/arrow_call.rs +28 -8
- package/rust/core/parser/handler/at.rs +55 -21
- package/rust/core/parser/handler/bank.rs +14 -4
- package/rust/core/parser/handler/condition.rs +6 -3
- package/rust/core/parser/handler/dot.rs +2 -1
- package/rust/core/parser/handler/identifier/automate.rs +13 -16
- package/rust/core/parser/handler/identifier/call.rs +4 -4
- package/rust/core/parser/handler/identifier/emit.rs +9 -5
- package/rust/core/parser/handler/identifier/function.rs +20 -7
- package/rust/core/parser/handler/identifier/group.rs +11 -7
- package/rust/core/parser/handler/identifier/let_.rs +24 -9
- package/rust/core/parser/handler/identifier/mod.rs +6 -5
- package/rust/core/parser/handler/identifier/on.rs +16 -7
- package/rust/core/parser/handler/identifier/print.rs +6 -9
- package/rust/core/parser/handler/identifier/sleep.rs +12 -5
- package/rust/core/parser/handler/identifier/spawn.rs +4 -4
- package/rust/core/parser/handler/identifier/synth.rs +79 -9
- package/rust/core/parser/handler/loop_.rs +39 -14
- package/rust/core/parser/handler/tempo.rs +9 -5
- package/rust/core/parser/mod.rs +0 -1
- package/rust/core/parser/statement.rs +6 -137
- package/rust/core/plugin/loader.rs +41 -27
- package/rust/core/plugin/runner.rs +68 -17
- package/rust/core/preprocessor/loader.rs +155 -33
- package/rust/core/preprocessor/processor.rs +2 -2
- package/rust/core/preprocessor/resolver/bank.rs +6 -8
- package/rust/core/preprocessor/resolver/call.rs +20 -24
- package/rust/core/preprocessor/resolver/condition.rs +6 -8
- package/rust/core/preprocessor/resolver/driver.rs +14 -16
- package/rust/core/preprocessor/resolver/function.rs +6 -6
- package/rust/core/preprocessor/resolver/group.rs +6 -8
- package/rust/core/preprocessor/resolver/loop_.rs +8 -10
- package/rust/core/preprocessor/resolver/spawn.rs +19 -23
- package/rust/core/preprocessor/resolver/synth.rs +6 -8
- package/rust/core/preprocessor/resolver/tempo.rs +6 -8
- package/rust/core/preprocessor/resolver/trigger.rs +22 -19
- package/rust/core/preprocessor/resolver/value.rs +99 -4
- package/rust/core/store/export.rs +28 -28
- package/rust/core/store/function.rs +6 -0
- package/rust/core/store/global.rs +7 -1
- package/rust/core/store/import.rs +28 -28
- package/rust/core/store/variable.rs +1 -1
- package/rust/core/utils/mod.rs +0 -1
- package/rust/lib.rs +102 -9
- package/rust/main.rs +156 -45
- package/rust/types/Cargo.toml +8 -0
- package/rust/types/src/addons.rs +55 -0
- package/rust/types/src/ast.rs +198 -0
- package/rust/types/src/config.rs +74 -0
- package/rust/types/src/lib.rs +12 -0
- package/rust/types/src/telemetry.rs +85 -0
- package/rust/utils/Cargo.toml +23 -0
- package/rust/utils/{error.rs → src/error.rs} +186 -200
- package/rust/utils/src/file.rs +94 -0
- package/rust/utils/src/first_usage.rs +97 -0
- package/rust/utils/{mod.rs → src/lib.rs} +1 -1
- package/rust/utils/{logger.rs → src/logger.rs} +17 -12
- package/rust/utils/src/path.rs +88 -0
- package/rust/utils/src/signature.rs +41 -0
- package/rust/utils/{spinner.rs → src/spinner.rs} +3 -5
- package/rust/utils/src/version.rs +27 -0
- package/rust/utils/{watcher.rs → src/watcher.rs} +13 -1
- package/rust/web/api.rs +5 -0
- package/rust/web/cdn.rs +34 -0
- package/templates/minimal/README.md +98 -54
- package/templates/welcome/README.md +98 -54
- package/templates/welcome/src/index.deva +56 -8
- package/templates/welcome/src/variables.deva +2 -4
- package/tests/rust/TODO.md +0 -0
- package/tests/typescript/index.spec.ts +136 -0
- package/tests/typescript/playhead.spec.ts +36 -0
- package/tests/typescript/render_e2e.spec.ts +77 -0
- package/tsconfig.json +1 -1
- package/typescript/core/functions/index.ts +83 -0
- package/typescript/core/index.ts +6 -0
- package/typescript/core/types/index.ts +4 -0
- package/typescript/core/types/plugin.ts +19 -0
- package/typescript/core/types/result.ts +29 -0
- package/typescript/core/types/statement.ts +47 -0
- package/typescript/core/types/value.ts +29 -0
- package/typescript/index.ts +7 -2
- package/typescript/pkg/devalang_core.d.ts +4 -0
- package/typescript/scripts/copy-wasm-dts.ts +41 -0
- package/typescript/scripts/postinstall.ts +45 -32
- package/rust/cli/bank.rs +0 -462
- package/rust/cli/build.rs +0 -252
- package/rust/cli/generator.rs +0 -1
- package/rust/cli/play.rs +0 -1123
- package/rust/cli/telemetry.rs +0 -19
- package/rust/common/api.rs +0 -5
- package/rust/common/cdn.rs +0 -5
- package/rust/config/loader.rs +0 -165
- package/rust/config/stats.rs +0 -257
- package/rust/core/audio/engine.rs +0 -696
- package/rust/core/shared/bank.rs +0 -21
- package/rust/core/shared/duration.rs +0 -9
- package/rust/core/shared/mod.rs +0 -3
- package/rust/core/shared/value.rs +0 -35
- package/rust/core/utils/validation.rs +0 -35
- package/rust/installer/bank.rs +0 -62
- package/rust/installer/plugin.rs +0 -54
- package/rust/installer/utils.rs +0 -56
- package/rust/utils/file.rs +0 -38
- package/rust/utils/first_usage.rs +0 -76
- package/rust/utils/signature.rs +0 -19
- package/rust/utils/telemetry.rs +0 -292
- package/rust/utils/version.rs +0 -15
- /package/rust/{common → web}/mod.rs +0 -0
- /package/rust/{common → web}/sso.rs +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a plugin export.
|
|
3
|
+
*/
|
|
4
|
+
export interface PluginExport {
|
|
5
|
+
name: string;
|
|
6
|
+
kind: string;
|
|
7
|
+
default?: any;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Represents a plugin.
|
|
12
|
+
*/
|
|
13
|
+
export interface PluginInfo {
|
|
14
|
+
author: string;
|
|
15
|
+
name: string;
|
|
16
|
+
version?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
exports: PluginExport[];
|
|
19
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents an error that occurred during parsing.
|
|
3
|
+
*/
|
|
4
|
+
export interface ErrorResult {
|
|
5
|
+
message: string;
|
|
6
|
+
line: number;
|
|
7
|
+
column: number;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Represents the result of parsing user code.
|
|
12
|
+
*/
|
|
13
|
+
export interface ParseResult {
|
|
14
|
+
ok: boolean;
|
|
15
|
+
ast: string;
|
|
16
|
+
errors: ErrorResult[];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Represents the result of debugging user code.
|
|
21
|
+
*/
|
|
22
|
+
export interface DebugResult {
|
|
23
|
+
samples_len: number;
|
|
24
|
+
any_nonzero: boolean;
|
|
25
|
+
ast: string;
|
|
26
|
+
note_count: number;
|
|
27
|
+
global_vars: string[];
|
|
28
|
+
statements_count: number;
|
|
29
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Value, Duration } from "./value";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Represents a statement kind in the code.
|
|
5
|
+
*/
|
|
6
|
+
export type StatementKind =
|
|
7
|
+
| { kind: "Tempo" }
|
|
8
|
+
| { kind: "Bank"; alias?: string }
|
|
9
|
+
| { kind: "Print" }
|
|
10
|
+
| { kind: "Load"; source: string; alias: string }
|
|
11
|
+
| { kind: "Use"; name: string; alias?: string }
|
|
12
|
+
| { kind: "Let"; name: string }
|
|
13
|
+
| { kind: "Automate"; target: string }
|
|
14
|
+
| { kind: "ArrowCall"; target: string; method: string; args: Value[] }
|
|
15
|
+
| { kind: "Function"; name: string; parameters: string[]; body: Statement[] }
|
|
16
|
+
| { kind: "Synth" }
|
|
17
|
+
| { kind: "Trigger"; entity: string; duration: Duration; effects?: Value }
|
|
18
|
+
| { kind: "Sleep" }
|
|
19
|
+
| { kind: "Call"; name: string; args: Value[] }
|
|
20
|
+
| { kind: "Spawn"; name: string; args: Value[] }
|
|
21
|
+
| { kind: "Loop" }
|
|
22
|
+
| { kind: "Group" }
|
|
23
|
+
| { kind: "Include"; path: string }
|
|
24
|
+
| { kind: "Export"; names: string[]; source: string }
|
|
25
|
+
| { kind: "Import"; names: string[]; source: string }
|
|
26
|
+
| { kind: "If" }
|
|
27
|
+
| { kind: "Else" }
|
|
28
|
+
| { kind: "ElseIf" }
|
|
29
|
+
| { kind: "Comment" }
|
|
30
|
+
| { kind: "Indent" }
|
|
31
|
+
| { kind: "Dedent" }
|
|
32
|
+
| { kind: "NewLine" }
|
|
33
|
+
| { kind: "On"; event: string; args?: Value[]; body: Statement[] }
|
|
34
|
+
| { kind: "Emit"; event: string; payload?: Value }
|
|
35
|
+
| { kind: "Unknown" }
|
|
36
|
+
| { kind: "Error"; message: string };
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Represents a statement in the code.
|
|
40
|
+
*/
|
|
41
|
+
export interface Statement {
|
|
42
|
+
kind: StatementKind;
|
|
43
|
+
value: Value;
|
|
44
|
+
indent: number;
|
|
45
|
+
line: number;
|
|
46
|
+
column: number;
|
|
47
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Statement } from "./statement";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Represents a duration in the code.
|
|
5
|
+
*/
|
|
6
|
+
export type Duration =
|
|
7
|
+
| { Number: number }
|
|
8
|
+
| { Identifier: string }
|
|
9
|
+
| { Beat: string }
|
|
10
|
+
| { Auto: null };
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Represents a value in the code.
|
|
14
|
+
*/
|
|
15
|
+
export type Value =
|
|
16
|
+
| { Boolean: boolean }
|
|
17
|
+
| { Number: number }
|
|
18
|
+
| { Duration: Duration }
|
|
19
|
+
| { Identifier: string }
|
|
20
|
+
| { String: string }
|
|
21
|
+
| { Array: Value[] }
|
|
22
|
+
| { Map: Record<string, Value> }
|
|
23
|
+
| { Block: Statement[] }
|
|
24
|
+
| { Sample: string }
|
|
25
|
+
| { Beat: string }
|
|
26
|
+
| { Statement: Statement }
|
|
27
|
+
| { StatementKind: any }
|
|
28
|
+
| { Unknown: null }
|
|
29
|
+
| null;
|
package/typescript/index.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* TypeScript
|
|
3
|
-
|
|
2
|
+
* Public TypeScript definitions for Devalang.
|
|
3
|
+
* ————————————————————————————————————————
|
|
4
|
+
* Used to provide TypeScript types for the Devalang WASM package.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export * as pkg from "./pkg/devalang_core";
|
|
8
|
+
export * as core from "./core/index";
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
|
|
4
|
+
// Copies .d.ts files from pkg/ (wasm-pack output) into out-tsc/pkg/
|
|
5
|
+
const ROOT = path.resolve(__dirname, '..', '..');
|
|
6
|
+
const PKG_DIR = path.join(ROOT, 'pkg');
|
|
7
|
+
const OUT_DIR = path.join(ROOT, 'out-tsc', 'pkg');
|
|
8
|
+
|
|
9
|
+
function ensureDir(p: string): void {
|
|
10
|
+
if (!fs.existsSync(p)) fs.mkdirSync(p, { recursive: true });
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function copyDir(src: string, dest: string): void {
|
|
14
|
+
ensureDir(dest);
|
|
15
|
+
const items = fs.readdirSync(src, { withFileTypes: true });
|
|
16
|
+
for (const item of items) {
|
|
17
|
+
const srcPath = path.join(src, item.name);
|
|
18
|
+
const destPath = path.join(dest, item.name);
|
|
19
|
+
if (item.isDirectory()) {
|
|
20
|
+
copyDir(srcPath, destPath);
|
|
21
|
+
} else if (item.isFile() && item.name.endsWith('.d.ts')) {
|
|
22
|
+
fs.copyFileSync(srcPath, destPath);
|
|
23
|
+
console.log('copied', srcPath, '->', destPath);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function main(): number {
|
|
29
|
+
if (!fs.existsSync(PKG_DIR)) {
|
|
30
|
+
console.error('pkg directory not found at', PKG_DIR);
|
|
31
|
+
return 1;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
ensureDir(OUT_DIR);
|
|
35
|
+
copyDir(PKG_DIR, OUT_DIR);
|
|
36
|
+
console.log('done');
|
|
37
|
+
return 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const exitCode = main();
|
|
41
|
+
if (exitCode !== 0) process.exit(exitCode);
|
|
@@ -4,17 +4,15 @@ import { https } from "follow-redirects";
|
|
|
4
4
|
import fs from "fs";
|
|
5
5
|
import path from "path";
|
|
6
6
|
|
|
7
|
-
const projectVersionPath = path.join(
|
|
8
|
-
__dirname,
|
|
9
|
-
"../../project-version.json"
|
|
10
|
-
);
|
|
7
|
+
const projectVersionPath = path.join(__dirname, "../../project-version.json");
|
|
11
8
|
|
|
12
9
|
const version = fs.readFileSync(projectVersionPath, "utf-8").trim();
|
|
13
10
|
const versionString = JSON.parse(version).version;
|
|
14
11
|
|
|
15
12
|
const platform = process.platform;
|
|
16
13
|
|
|
17
|
-
let binaryName: string;
|
|
14
|
+
let binaryName: string = "";
|
|
15
|
+
|
|
18
16
|
switch (platform) {
|
|
19
17
|
case "win32":
|
|
20
18
|
binaryName = "devalang-x86_64-pc-windows-msvc.exe";
|
|
@@ -25,32 +23,47 @@ switch (platform) {
|
|
|
25
23
|
case "linux":
|
|
26
24
|
binaryName = "devalang-x86_64-unknown-linux-gnu";
|
|
27
25
|
break;
|
|
28
|
-
default:
|
|
29
|
-
console.error(`❌ Unsupported platform: ${platform}`);
|
|
30
|
-
process.exit(1);
|
|
31
26
|
}
|
|
32
27
|
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
28
|
+
if (binaryName !== "") {
|
|
29
|
+
const destDir = join(__dirname, "..", "..", "out-tsc", "bin");
|
|
30
|
+
const dest = join(destDir, binaryName);
|
|
31
|
+
|
|
32
|
+
const url = `https://github.com/devaloop-labs/devalang/releases/download/v${versionString}/${binaryName}`;
|
|
33
|
+
|
|
34
|
+
mkdirSync(destDir, { recursive: true });
|
|
35
|
+
|
|
36
|
+
console.log(`⬇️ Downloading ${binaryName} from ${url}`);
|
|
37
|
+
|
|
38
|
+
https
|
|
39
|
+
.get(url, (res: any) => {
|
|
40
|
+
if (res.statusCode === 404) {
|
|
41
|
+
console.warn(
|
|
42
|
+
`⚠️ Asset not found (HTTP 404). Skipping binary download.`
|
|
43
|
+
);
|
|
44
|
+
res.resume();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (res.statusCode !== 200) {
|
|
49
|
+
console.error(
|
|
50
|
+
`❌ Failed (HTTP ${res.statusCode}). Skipping binary download.`
|
|
51
|
+
);
|
|
52
|
+
res.resume();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const file = createWriteStream(dest, { mode: 0o755 });
|
|
57
|
+
res.pipe(file);
|
|
58
|
+
file.on("finish", () => {
|
|
59
|
+
file.close();
|
|
60
|
+
console.log(`✅ Downloaded ${binaryName} to ${dest}`);
|
|
61
|
+
});
|
|
62
|
+
})
|
|
63
|
+
.on("error", (err) => {
|
|
64
|
+
// Network or other errors should not fail CI; log and continue
|
|
65
|
+
console.error(`❌ Error: ${err.message}. Skipping binary download.`);
|
|
66
|
+
});
|
|
67
|
+
} else {
|
|
68
|
+
console.error(`❌ Unsupported platform: ${platform}`);
|
|
69
|
+
}
|