@git.zone/tsrust 1.4.1 → 1.6.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/.smartconfig.json +10 -1
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/mod_cargo/classes.cargorunner.d.ts +6 -1
- package/dist_ts/mod_cargo/classes.cargorunner.js +16 -7
- package/dist_ts/mod_cargo/classes.targetcache.d.ts +37 -0
- package/dist_ts/mod_cargo/classes.targetcache.js +260 -0
- package/dist_ts/mod_cargo/index.d.ts +1 -0
- package/dist_ts/mod_cargo/index.js +2 -1
- package/dist_ts/mod_cli/classes.tsrustcli.d.ts +3 -0
- package/dist_ts/mod_cli/classes.tsrustcli.js +75 -7
- package/package.json +2 -2
- package/readme.md +63 -8
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/mod_cargo/classes.cargorunner.ts +17 -7
- package/ts/mod_cargo/classes.targetcache.ts +304 -0
- package/ts/mod_cargo/index.ts +1 -0
- package/ts/mod_cli/classes.tsrustcli.ts +91 -6
package/.smartconfig.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"@git.zone/cli": {
|
|
3
|
+
"schemaVersion": 2,
|
|
3
4
|
"projectType": "npm",
|
|
4
5
|
"module": {
|
|
5
6
|
"githost": "code.foss.global",
|
|
@@ -20,12 +21,20 @@
|
|
|
20
21
|
},
|
|
21
22
|
"release": {
|
|
22
23
|
"targets": {
|
|
24
|
+
"git": {
|
|
25
|
+
"enabled": true,
|
|
26
|
+
"remote": "origin",
|
|
27
|
+
"pushBranch": true,
|
|
28
|
+
"pushTags": true
|
|
29
|
+
},
|
|
23
30
|
"npm": {
|
|
31
|
+
"enabled": true,
|
|
24
32
|
"registries": [
|
|
25
33
|
"https://verdaccio.lossless.digital",
|
|
26
34
|
"https://registry.npmjs.org"
|
|
27
35
|
],
|
|
28
|
-
"accessLevel": "public"
|
|
36
|
+
"accessLevel": "public",
|
|
37
|
+
"alreadyPublished": "success"
|
|
29
38
|
}
|
|
30
39
|
}
|
|
31
40
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/tsrust',
|
|
6
|
-
version: '1.
|
|
6
|
+
version: '1.6.0',
|
|
7
7
|
description: 'A tool for compiling Rust projects, detecting Cargo workspaces, building with cargo, and placing binaries in a conventional dist_rust directory.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxrQkFBa0I7SUFDeEIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLGtKQUFrSjtDQUNoSyxDQUFBIn0=
|
|
@@ -15,10 +15,15 @@ export declare class CargoRunner {
|
|
|
15
15
|
clean?: boolean;
|
|
16
16
|
target?: string;
|
|
17
17
|
crtStatic?: boolean;
|
|
18
|
+
rustflags?: string[];
|
|
19
|
+
targetDir?: string;
|
|
18
20
|
}): Promise<ICargoRunResult>;
|
|
21
|
+
private shellQuote;
|
|
19
22
|
/**
|
|
20
23
|
* Ensures a rustup target is installed. If not present, installs it via `rustup target add`.
|
|
21
24
|
*/
|
|
22
25
|
ensureTarget(triple: string): Promise<void>;
|
|
23
|
-
clean(
|
|
26
|
+
clean(options?: {
|
|
27
|
+
targetDir?: string;
|
|
28
|
+
}): Promise<ICargoRunResult>;
|
|
24
29
|
}
|
|
@@ -21,7 +21,7 @@ export class CargoRunner {
|
|
|
21
21
|
async build(options = {}) {
|
|
22
22
|
if (options.clean) {
|
|
23
23
|
console.log('Cleaning previous build...');
|
|
24
|
-
await this.clean();
|
|
24
|
+
await this.clean({ targetDir: options.targetDir });
|
|
25
25
|
}
|
|
26
26
|
// crt-static may only be injected together with an explicit --target:
|
|
27
27
|
// without one, cargo applies RUSTFLAGS to host artifacts too, and rustc
|
|
@@ -34,9 +34,14 @@ export class CargoRunner {
|
|
|
34
34
|
}
|
|
35
35
|
const profile = options.debug ? '' : ' --release';
|
|
36
36
|
const targetFlag = options.target ? ` --target ${options.target}` : '';
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
const rustflags = [...(options.rustflags || [])];
|
|
38
|
+
if (options.crtStatic) {
|
|
39
|
+
rustflags.unshift('-C', 'target-feature=+crt-static');
|
|
40
|
+
}
|
|
41
|
+
const rustflagsPrefix = rustflags.length ? `RUSTFLAGS=${this.shellQuote(rustflags.join(' '))} ` : '';
|
|
42
|
+
const targetDirPrefix = options.targetDir ? `CARGO_TARGET_DIR=${this.shellQuote(options.targetDir)} ` : '';
|
|
43
|
+
const command = `${this.envPrefix}cd ${this.rustDir} && ${targetDirPrefix}${rustflagsPrefix}cargo build${profile}${targetFlag}`;
|
|
44
|
+
console.log(`Running: ${targetDirPrefix}${rustflagsPrefix}cargo build${profile}${targetFlag}`);
|
|
40
45
|
const result = await this.shell.exec(command);
|
|
41
46
|
return {
|
|
42
47
|
success: result.exitCode === 0,
|
|
@@ -44,6 +49,9 @@ export class CargoRunner {
|
|
|
44
49
|
stdout: result.stdout,
|
|
45
50
|
};
|
|
46
51
|
}
|
|
52
|
+
shellQuote(value) {
|
|
53
|
+
return '"' + value.replace(/(["\\$`])/g, '\\$1') + '"';
|
|
54
|
+
}
|
|
47
55
|
/**
|
|
48
56
|
* Ensures a rustup target is installed. If not present, installs it via `rustup target add`.
|
|
49
57
|
*/
|
|
@@ -59,8 +67,9 @@ export class CargoRunner {
|
|
|
59
67
|
throw new Error(`Failed to install rustup target ${triple}`);
|
|
60
68
|
}
|
|
61
69
|
}
|
|
62
|
-
async clean() {
|
|
63
|
-
const
|
|
70
|
+
async clean(options = {}) {
|
|
71
|
+
const targetDirPrefix = options.targetDir ? `CARGO_TARGET_DIR=${this.shellQuote(options.targetDir)} ` : '';
|
|
72
|
+
const command = `${this.envPrefix}cd ${this.rustDir} && ${targetDirPrefix}cargo clean`;
|
|
64
73
|
const result = await this.shell.exec(command);
|
|
65
74
|
return {
|
|
66
75
|
success: result.exitCode === 0,
|
|
@@ -69,4 +78,4 @@ export class CargoRunner {
|
|
|
69
78
|
};
|
|
70
79
|
}
|
|
71
80
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jYXJnb3J1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL21vZF9jYXJnby9jbGFzc2VzLmNhcmdvcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBUXpDLE1BQU0sT0FBTyxXQUFXO0lBQ2QsS0FBSyxDQUFnQztJQUNyQyxPQUFPLENBQVM7SUFDaEIsU0FBUyxDQUFTO0lBRTFCLFlBQVksT0FBZSxFQUFFLFlBQW9CLEVBQUU7UUFDakQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQzdDLFFBQVEsRUFBRSxNQUFNO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsbUJBQW1CO1FBQzlCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sTUFBTSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlO1FBQzFCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFnSSxFQUFFO1FBQ25KLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUMxQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUVELHNFQUFzRTtRQUN0RSx3RUFBd0U7UUFDeEUsMERBQTBEO1FBQzFELElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQ2xELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLDRCQUE0QixDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JHLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0csTUFBTSxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxNQUFNLElBQUksQ0FBQyxPQUFPLE9BQU8sZUFBZSxHQUFHLGVBQWUsY0FBYyxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFFaEksT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLGVBQWUsR0FBRyxlQUFlLGNBQWMsT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDL0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QyxPQUFPO1lBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEtBQUssQ0FBQztZQUM5QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1NBQ3RCLENBQUM7SUFDSixDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQWE7UUFDOUIsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBYztRQUN0QyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsZ0NBQWdDLENBQUMsQ0FBQztRQUNsRyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUUsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxPQUFPO1FBQ1QsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbkQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLHFCQUFxQixNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3hGLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFrQyxFQUFFO1FBQ3JELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0csTUFBTSxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxNQUFNLElBQUksQ0FBQyxPQUFPLE9BQU8sZUFBZSxhQUFhLENBQUM7UUFDdkYsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QyxPQUFPO1lBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEtBQUssQ0FBQztZQUM5QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1NBQ3RCLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare const toolCacheMarkerFile = ".gitzone-tool-cache.json";
|
|
2
|
+
export declare const tsrustCacheOwner = "@git.zone/tsrust";
|
|
3
|
+
export declare const targetCacheKind = "rust-target-cache";
|
|
4
|
+
export interface IToolCacheMarker {
|
|
5
|
+
owner: string;
|
|
6
|
+
kind: string;
|
|
7
|
+
safeToPrune: boolean;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
schemaVersion: 1;
|
|
10
|
+
}
|
|
11
|
+
export interface ITsrustPruneCandidate {
|
|
12
|
+
path: string;
|
|
13
|
+
workspace: string;
|
|
14
|
+
bytes: number;
|
|
15
|
+
marked: boolean;
|
|
16
|
+
shouldPrune: boolean;
|
|
17
|
+
reason: string;
|
|
18
|
+
truncated?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface ITsrustPruneOptions {
|
|
21
|
+
workspace: string;
|
|
22
|
+
targetDir?: string;
|
|
23
|
+
days?: number;
|
|
24
|
+
maxSizeBytes?: number;
|
|
25
|
+
}
|
|
26
|
+
export declare function createTargetCacheMarker(): IToolCacheMarker;
|
|
27
|
+
export declare function isValidTargetCacheMarker(markerArg: unknown): markerArg is IToolCacheMarker;
|
|
28
|
+
export declare function getDefaultManagedTargetDir(workspaceArg: string): string;
|
|
29
|
+
export declare function isSafeManagedTargetDir(workspaceArg: string, targetDirArg: string): boolean;
|
|
30
|
+
export declare function resolveManagedTargetDir(workspaceArg: string, configTargetDirArg?: string): string;
|
|
31
|
+
export declare function getCargoArtifactDir(targetDirArg: string, profileArg: string, targetTripleArg?: string): string;
|
|
32
|
+
export declare function parseSizeToBytes(valueArg: string | undefined): number | undefined;
|
|
33
|
+
export declare function writeTargetCacheMarker(targetDirArg: string): Promise<void>;
|
|
34
|
+
export declare function readTargetCacheMarker(targetDirArg: string): Promise<IToolCacheMarker | undefined>;
|
|
35
|
+
export declare function getDirectorySize(pathArg: string): Promise<number>;
|
|
36
|
+
export declare function createTsrustPrunePlan(optionsArg: ITsrustPruneOptions): Promise<ITsrustPruneCandidate[]>;
|
|
37
|
+
export declare function applyTsrustPrunePlan(planArg: ITsrustPruneCandidate[]): Promise<void>;
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
export const toolCacheMarkerFile = '.gitzone-tool-cache.json';
|
|
4
|
+
export const tsrustCacheOwner = '@git.zone/tsrust';
|
|
5
|
+
export const targetCacheKind = 'rust-target-cache';
|
|
6
|
+
export function createTargetCacheMarker() {
|
|
7
|
+
return {
|
|
8
|
+
owner: tsrustCacheOwner,
|
|
9
|
+
kind: targetCacheKind,
|
|
10
|
+
safeToPrune: true,
|
|
11
|
+
createdAt: new Date().toISOString(),
|
|
12
|
+
schemaVersion: 1,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function isValidTargetCacheMarker(markerArg) {
|
|
16
|
+
const marker = markerArg;
|
|
17
|
+
return marker.owner === tsrustCacheOwner
|
|
18
|
+
&& marker.kind === targetCacheKind
|
|
19
|
+
&& marker.safeToPrune === true
|
|
20
|
+
&& marker.schemaVersion === 1;
|
|
21
|
+
}
|
|
22
|
+
export function getDefaultManagedTargetDir(workspaceArg) {
|
|
23
|
+
return path.resolve(workspaceArg, '.nogit', 'tsrust-target');
|
|
24
|
+
}
|
|
25
|
+
export function isSafeManagedTargetDir(workspaceArg, targetDirArg) {
|
|
26
|
+
const workspace = path.resolve(workspaceArg);
|
|
27
|
+
const targetDir = path.resolve(targetDirArg);
|
|
28
|
+
const relative = path.relative(workspace, targetDir);
|
|
29
|
+
if (!relative || relative.startsWith('..') || path.isAbsolute(relative)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return relative === path.join('.nogit', 'tsrust-target')
|
|
33
|
+
|| relative.startsWith(`${path.join('.nogit', 'tsrust-')}`)
|
|
34
|
+
|| relative.startsWith(`${path.join('.nogit', 'tsrust')}${path.sep}`);
|
|
35
|
+
}
|
|
36
|
+
export function resolveManagedTargetDir(workspaceArg, configTargetDirArg) {
|
|
37
|
+
const configured = process.env.TSRUST_TARGET_DIR || configTargetDirArg;
|
|
38
|
+
const targetDir = configured
|
|
39
|
+
? path.isAbsolute(configured) ? configured : path.resolve(workspaceArg, configured)
|
|
40
|
+
: getDefaultManagedTargetDir(workspaceArg);
|
|
41
|
+
if (!isSafeManagedTargetDir(workspaceArg, targetDir)) {
|
|
42
|
+
throw new Error(`Refusing unsafe tsrust target dir outside workspace .nogit/: ${targetDir}`);
|
|
43
|
+
}
|
|
44
|
+
return targetDir;
|
|
45
|
+
}
|
|
46
|
+
export function getCargoArtifactDir(targetDirArg, profileArg, targetTripleArg) {
|
|
47
|
+
return targetTripleArg
|
|
48
|
+
? path.join(targetDirArg, targetTripleArg, profileArg)
|
|
49
|
+
: path.join(targetDirArg, profileArg);
|
|
50
|
+
}
|
|
51
|
+
export function parseSizeToBytes(valueArg) {
|
|
52
|
+
if (!valueArg) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
const match = valueArg.trim().match(/^(\d+(?:\.\d+)?)(b|kb|kib|mb|mib|gb|gib)?$/i);
|
|
56
|
+
if (!match) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
const value = Number(match[1]);
|
|
60
|
+
const unit = (match[2] || 'b').toLowerCase();
|
|
61
|
+
const multiplier = unit === 'gb' || unit === 'gib'
|
|
62
|
+
? 1024 ** 3
|
|
63
|
+
: unit === 'mb' || unit === 'mib'
|
|
64
|
+
? 1024 ** 2
|
|
65
|
+
: unit === 'kb' || unit === 'kib'
|
|
66
|
+
? 1024
|
|
67
|
+
: 1;
|
|
68
|
+
return Math.round(value * multiplier);
|
|
69
|
+
}
|
|
70
|
+
export async function writeTargetCacheMarker(targetDirArg) {
|
|
71
|
+
await fs.mkdir(targetDirArg, { recursive: true });
|
|
72
|
+
const existingMarker = await readTargetCacheMarker(targetDirArg);
|
|
73
|
+
if (existingMarker) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const entries = await fs.readdir(targetDirArg);
|
|
77
|
+
if (entries.length > 0) {
|
|
78
|
+
throw new Error(`Refusing to mark pre-existing non-empty tsrust target cache: ${targetDirArg}`);
|
|
79
|
+
}
|
|
80
|
+
await fs.writeFile(path.join(targetDirArg, toolCacheMarkerFile), `${JSON.stringify(createTargetCacheMarker(), null, 2)}\n`);
|
|
81
|
+
}
|
|
82
|
+
export async function readTargetCacheMarker(targetDirArg) {
|
|
83
|
+
try {
|
|
84
|
+
const markerRaw = await fs.readFile(path.join(targetDirArg, toolCacheMarkerFile), 'utf8');
|
|
85
|
+
const marker = JSON.parse(markerRaw);
|
|
86
|
+
return isValidTargetCacheMarker(marker) ? marker : undefined;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async function pathExists(pathArg) {
|
|
93
|
+
try {
|
|
94
|
+
await fs.stat(pathArg);
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export async function getDirectorySize(pathArg) {
|
|
102
|
+
let total = 0;
|
|
103
|
+
let entries;
|
|
104
|
+
try {
|
|
105
|
+
entries = await fs.readdir(pathArg, { withFileTypes: true });
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return 0;
|
|
109
|
+
}
|
|
110
|
+
for (const entry of entries) {
|
|
111
|
+
const entryPath = path.join(pathArg, entry.name);
|
|
112
|
+
if (entry.isDirectory()) {
|
|
113
|
+
total += await getDirectorySize(entryPath);
|
|
114
|
+
}
|
|
115
|
+
else if (entry.isFile()) {
|
|
116
|
+
try {
|
|
117
|
+
total += (await fs.stat(entryPath)).size;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Ignore files that disappear while planning a prune.
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return total;
|
|
125
|
+
}
|
|
126
|
+
async function getDirectoryUsage(pathArg, maxEntriesArg = 100_000) {
|
|
127
|
+
let bytes = 0;
|
|
128
|
+
let newestMtimeMs = 0;
|
|
129
|
+
let visitedEntries = 0;
|
|
130
|
+
let truncated = false;
|
|
131
|
+
const visit = async (entryPathArg) => {
|
|
132
|
+
if (visitedEntries >= maxEntriesArg) {
|
|
133
|
+
truncated = true;
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
visitedEntries++;
|
|
137
|
+
let stat;
|
|
138
|
+
try {
|
|
139
|
+
stat = await fs.stat(entryPathArg);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
newestMtimeMs = Math.max(newestMtimeMs, stat.mtimeMs);
|
|
145
|
+
if (stat.isFile()) {
|
|
146
|
+
bytes += stat.size;
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
if (!stat.isDirectory()) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
let entries;
|
|
153
|
+
try {
|
|
154
|
+
entries = await fs.readdir(entryPathArg, { withFileTypes: true });
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
for (const entry of entries) {
|
|
160
|
+
if (visitedEntries >= maxEntriesArg) {
|
|
161
|
+
truncated = true;
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
await visit(path.join(entryPathArg, entry.name));
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
await visit(pathArg);
|
|
168
|
+
return { bytes, newestMtimeMs, truncated };
|
|
169
|
+
}
|
|
170
|
+
async function getNewestMtimeMs(pathArg) {
|
|
171
|
+
let newest = 0;
|
|
172
|
+
try {
|
|
173
|
+
const stat = await fs.stat(pathArg);
|
|
174
|
+
newest = stat.mtimeMs;
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return 0;
|
|
178
|
+
}
|
|
179
|
+
let entries;
|
|
180
|
+
try {
|
|
181
|
+
entries = await fs.readdir(pathArg, { withFileTypes: true });
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
return newest;
|
|
185
|
+
}
|
|
186
|
+
for (const entry of entries) {
|
|
187
|
+
const entryPath = path.join(pathArg, entry.name);
|
|
188
|
+
if (entry.isDirectory()) {
|
|
189
|
+
newest = Math.max(newest, await getNewestMtimeMs(entryPath));
|
|
190
|
+
}
|
|
191
|
+
else if (entry.isFile()) {
|
|
192
|
+
try {
|
|
193
|
+
newest = Math.max(newest, (await fs.stat(entryPath)).mtimeMs);
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// Ignore files that disappear while planning a prune.
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return newest;
|
|
201
|
+
}
|
|
202
|
+
export async function createTsrustPrunePlan(optionsArg) {
|
|
203
|
+
const workspace = path.resolve(optionsArg.workspace);
|
|
204
|
+
const managedTargetDir = optionsArg.targetDir
|
|
205
|
+
? resolveManagedTargetDir(workspace, optionsArg.targetDir)
|
|
206
|
+
: resolveManagedTargetDir(workspace);
|
|
207
|
+
const candidates = [
|
|
208
|
+
managedTargetDir,
|
|
209
|
+
path.join(workspace, 'rust', 'target'),
|
|
210
|
+
path.join(workspace, 'ts_rust', 'target'),
|
|
211
|
+
];
|
|
212
|
+
const uniqueCandidates = [...new Set(candidates.map((candidate) => path.resolve(candidate)))];
|
|
213
|
+
const pruneCandidates = [];
|
|
214
|
+
const maxAgeMs = typeof optionsArg.days === 'number' ? optionsArg.days * 24 * 60 * 60 * 1000 : undefined;
|
|
215
|
+
for (const candidate of uniqueCandidates) {
|
|
216
|
+
if (!(await pathExists(candidate))) {
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
const marker = await readTargetCacheMarker(candidate);
|
|
220
|
+
const usage = await getDirectoryUsage(candidate);
|
|
221
|
+
const isManagedTarget = isSafeManagedTargetDir(workspace, candidate);
|
|
222
|
+
const ageMatches = typeof maxAgeMs === 'number' ? Date.now() - usage.newestMtimeMs >= maxAgeMs : false;
|
|
223
|
+
const bytes = usage.bytes;
|
|
224
|
+
const sizeMatches = typeof optionsArg.maxSizeBytes === 'number' ? bytes >= optionsArg.maxSizeBytes : false;
|
|
225
|
+
const shouldPrune = !!marker && isManagedTarget && (ageMatches || sizeMatches);
|
|
226
|
+
const reason = marker
|
|
227
|
+
? !isManagedTarget
|
|
228
|
+
? 'marked Rust target outside managed tsrust target allowlist; report-only'
|
|
229
|
+
: shouldPrune
|
|
230
|
+
? [ageMatches ? `older than ${optionsArg.days} day(s)` : '', sizeMatches ? `at least ${optionsArg.maxSizeBytes} bytes` : ''].filter(Boolean).join(', ')
|
|
231
|
+
: 'marked tsrust target cache; below prune thresholds'
|
|
232
|
+
: 'unmarked conventional Rust target; report-only';
|
|
233
|
+
pruneCandidates.push({
|
|
234
|
+
path: candidate,
|
|
235
|
+
workspace,
|
|
236
|
+
bytes,
|
|
237
|
+
marked: !!marker,
|
|
238
|
+
shouldPrune,
|
|
239
|
+
reason,
|
|
240
|
+
truncated: usage.truncated,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
return pruneCandidates;
|
|
244
|
+
}
|
|
245
|
+
export async function applyTsrustPrunePlan(planArg) {
|
|
246
|
+
for (const candidate of planArg) {
|
|
247
|
+
if (!candidate.shouldPrune) {
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
if (!isSafeManagedTargetDir(candidate.workspace, candidate.path)) {
|
|
251
|
+
throw new Error(`Refusing unsafe Rust target cache path: ${candidate.path}`);
|
|
252
|
+
}
|
|
253
|
+
const marker = await readTargetCacheMarker(candidate.path);
|
|
254
|
+
if (!marker) {
|
|
255
|
+
throw new Error(`Refusing to remove unmarked Rust target cache: ${candidate.path}`);
|
|
256
|
+
}
|
|
257
|
+
await fs.rm(candidate.path, { recursive: true, force: true });
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50YXJnZXRjYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL21vZF9jYXJnby9jbGFzc2VzLnRhcmdldGNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFFbEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsMEJBQTBCLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLG1CQUFtQixDQUFDO0FBMkJuRCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU87UUFDTCxLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLElBQUksRUFBRSxlQUFlO1FBQ3JCLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtRQUNuQyxhQUFhLEVBQUUsQ0FBQztLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxTQUFrQjtJQUN6RCxNQUFNLE1BQU0sR0FBRyxTQUFzQyxDQUFDO0lBQ3RELE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxnQkFBZ0I7V0FDbkMsTUFBTSxDQUFDLElBQUksS0FBSyxlQUFlO1dBQy9CLE1BQU0sQ0FBQyxXQUFXLEtBQUssSUFBSTtXQUMzQixNQUFNLENBQUMsYUFBYSxLQUFLLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFlBQW9CO0lBQzdELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsWUFBb0IsRUFBRSxZQUFvQjtJ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
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { CargoConfig } from './classes.cargoconfig.js';
|
|
2
2
|
export { CargoRunner } from './classes.cargorunner.js';
|
|
3
|
-
|
|
3
|
+
export * from './classes.targetcache.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfY2FyZ28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxjQUFjLDBCQUEwQixDQUFDIn0=
|
|
@@ -11,7 +11,10 @@ export declare class TsRustCli {
|
|
|
11
11
|
*/
|
|
12
12
|
private resolveToolchain;
|
|
13
13
|
private registerStandardCommand;
|
|
14
|
+
private shouldPruneAfterBuild;
|
|
15
|
+
private buildRustflags;
|
|
14
16
|
private registerCleanCommand;
|
|
17
|
+
private registerPruneCommand;
|
|
15
18
|
private detectRustDir;
|
|
16
19
|
run(): void;
|
|
17
20
|
}
|