@hagicode/hagiscript 0.2.7-dev.125.1.7b2cf36 → 0.2.7-dev.126.1.162cc94
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.
|
@@ -72,9 +72,12 @@ export async function assertTargetIsEmptyOrMissing(targetDirectory) {
|
|
|
72
72
|
throw error;
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
async function extractZip(archivePath, destination,
|
|
75
|
+
async function extractZip(archivePath, destination, options) {
|
|
76
76
|
try {
|
|
77
|
-
await extractZipArchive(archivePath, destination
|
|
77
|
+
await extractZipArchive(archivePath, destination, {
|
|
78
|
+
platform: process.platform,
|
|
79
|
+
runCommand: options.runCommand
|
|
80
|
+
});
|
|
78
81
|
}
|
|
79
82
|
catch (error) {
|
|
80
83
|
const zipError = error instanceof Error ? error : new Error(String(error));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-extract.js","sourceRoot":"","sources":["../../src/runtime/node-extract.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"node-extract.js","sourceRoot":"","sources":["../../src/runtime/node-extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { type CommandRunner } from "./command-launch.js";
|
|
2
|
+
export interface ZipExtractionOptions {
|
|
3
|
+
platform?: NodeJS.Platform;
|
|
4
|
+
runCommand?: CommandRunner;
|
|
5
|
+
}
|
|
6
|
+
export declare function extractZipArchive(archivePath: string, destination: string, options?: ZipExtractionOptions): Promise<void>;
|
|
@@ -1,8 +1,90 @@
|
|
|
1
1
|
import extractZip from "extract-zip";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import { CommandExecutionError, runCommand } from "./command-launch.js";
|
|
4
|
+
const windowsTarCommands = ["tar.exe", "tar"];
|
|
5
|
+
const windowsPowerShellCommands = ["pwsh", "powershell.exe", "powershell"];
|
|
6
|
+
export async function extractZipArchive(archivePath, destination, options = {}) {
|
|
7
|
+
const platform = options.platform ?? process.platform;
|
|
8
|
+
const runner = options.runCommand ?? runCommand;
|
|
9
|
+
const resolvedDestination = resolve(destination);
|
|
10
|
+
const nativeFailures = [];
|
|
11
|
+
if (platform === "win32") {
|
|
12
|
+
const nativeResult = await tryExtractZipArchiveWithNativeTools(archivePath, resolvedDestination, runner);
|
|
13
|
+
if (nativeResult.success) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
nativeFailures.push(...nativeResult.failures);
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
await extractZip(archivePath, {
|
|
20
|
+
dir: resolvedDestination
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
const archiveError = error instanceof Error ? error : new Error(String(error));
|
|
25
|
+
const nativeSummary = nativeFailures.length > 0
|
|
26
|
+
? ` Native attempts: ${nativeFailures.join(" | ")}.`
|
|
27
|
+
: "";
|
|
28
|
+
throw new Error(`Failed to extract zip archive ${archivePath}: ${archiveError.message}.${nativeSummary}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async function tryExtractZipArchiveWithNativeTools(archivePath, destination, runner) {
|
|
32
|
+
const failures = [];
|
|
33
|
+
for (const command of windowsTarCommands) {
|
|
34
|
+
const result = await tryRunZipExtractionCommand(runner, command, [
|
|
35
|
+
"-xf",
|
|
36
|
+
archivePath,
|
|
37
|
+
"-C",
|
|
38
|
+
destination
|
|
39
|
+
]);
|
|
40
|
+
if (result.success) {
|
|
41
|
+
return { success: true, failures };
|
|
42
|
+
}
|
|
43
|
+
failures.push(result.failure);
|
|
44
|
+
}
|
|
45
|
+
for (const command of windowsPowerShellCommands) {
|
|
46
|
+
const result = await tryRunZipExtractionCommand(runner, command, [
|
|
47
|
+
"-NoLogo",
|
|
48
|
+
"-NoProfile",
|
|
49
|
+
"-NonInteractive",
|
|
50
|
+
"-Command",
|
|
51
|
+
buildExpandArchiveCommand(archivePath, destination)
|
|
52
|
+
]);
|
|
53
|
+
if (result.success) {
|
|
54
|
+
return { success: true, failures };
|
|
55
|
+
}
|
|
56
|
+
failures.push(result.failure);
|
|
57
|
+
}
|
|
58
|
+
return { success: false, failures };
|
|
59
|
+
}
|
|
60
|
+
async function tryRunZipExtractionCommand(runner, command, args) {
|
|
61
|
+
try {
|
|
62
|
+
await runner(command, args);
|
|
63
|
+
return { success: true };
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
return {
|
|
67
|
+
success: false,
|
|
68
|
+
failure: formatCommandFailure(command, error)
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function buildExpandArchiveCommand(archivePath, destination) {
|
|
73
|
+
const escapedArchivePath = escapePowerShellSingleQuotedString(archivePath);
|
|
74
|
+
const escapedDestination = escapePowerShellSingleQuotedString(destination);
|
|
75
|
+
return `Expand-Archive -LiteralPath '${escapedArchivePath}' -DestinationPath '${escapedDestination}' -Force`;
|
|
76
|
+
}
|
|
77
|
+
function escapePowerShellSingleQuotedString(value) {
|
|
78
|
+
return value.replaceAll("'", "''");
|
|
79
|
+
}
|
|
80
|
+
function formatCommandFailure(command, error) {
|
|
81
|
+
if (error instanceof CommandExecutionError) {
|
|
82
|
+
const details = error.context.stderr.trim() || error.context.stdout.trim() || error.message;
|
|
83
|
+
return `${command}: ${details}`;
|
|
84
|
+
}
|
|
85
|
+
if (error instanceof Error) {
|
|
86
|
+
return `${command}: ${error.message}`;
|
|
87
|
+
}
|
|
88
|
+
return `${command}: ${String(error)}`;
|
|
7
89
|
}
|
|
8
90
|
//# sourceMappingURL=zip-extract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip-extract.js","sourceRoot":"","sources":["../../src/runtime/zip-extract.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"zip-extract.js","sourceRoot":"","sources":["../../src/runtime/zip-extract.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hagicode/hagiscript",
|
|
3
|
-
"version": "0.2.7-dev.
|
|
3
|
+
"version": "0.2.7-dev.126.1.162cc94",
|
|
4
4
|
"description": "Scoped npm package foundation for Hagiscript language tooling.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/HagiCode-org/hagiscript#readme",
|
|
@@ -1,8 +1,134 @@
|
|
|
1
1
|
import extractZip from "extract-zip"
|
|
2
|
-
import
|
|
2
|
+
import { resolve } from "node:path"
|
|
3
|
+
import { spawn } from "node:child_process"
|
|
4
|
+
|
|
5
|
+
const windowsTarCommands = ["tar.exe", "tar"]
|
|
6
|
+
const windowsPowerShellCommands = ["pwsh", "powershell.exe", "powershell"]
|
|
3
7
|
|
|
4
8
|
export async function extractZipArchive(archivePath, destination) {
|
|
5
|
-
|
|
6
|
-
|
|
9
|
+
const resolvedDestination = resolve(destination)
|
|
10
|
+
const nativeFailures = []
|
|
11
|
+
|
|
12
|
+
if (process.platform === "win32") {
|
|
13
|
+
const nativeResult = await tryExtractZipArchiveWithNativeTools(
|
|
14
|
+
archivePath,
|
|
15
|
+
resolvedDestination
|
|
16
|
+
)
|
|
17
|
+
if (nativeResult.success) {
|
|
18
|
+
return
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
nativeFailures.push(...nativeResult.failures)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
await extractZip(archivePath, {
|
|
26
|
+
dir: resolvedDestination
|
|
27
|
+
})
|
|
28
|
+
} catch (error) {
|
|
29
|
+
const archiveError = error instanceof Error ? error : new Error(String(error))
|
|
30
|
+
const nativeSummary =
|
|
31
|
+
nativeFailures.length > 0
|
|
32
|
+
? ` Native attempts: ${nativeFailures.join(" | ")}.`
|
|
33
|
+
: ""
|
|
34
|
+
throw new Error(
|
|
35
|
+
`Failed to extract zip archive ${archivePath}: ${archiveError.message}.${nativeSummary}`
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async function tryExtractZipArchiveWithNativeTools(archivePath, destination) {
|
|
41
|
+
const failures = []
|
|
42
|
+
|
|
43
|
+
for (const command of windowsTarCommands) {
|
|
44
|
+
const result = await tryRunZipExtractionCommand(command, [
|
|
45
|
+
"-xf",
|
|
46
|
+
archivePath,
|
|
47
|
+
"-C",
|
|
48
|
+
destination
|
|
49
|
+
])
|
|
50
|
+
if (result.success) {
|
|
51
|
+
return { success: true, failures }
|
|
52
|
+
}
|
|
53
|
+
failures.push(result.failure)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
for (const command of windowsPowerShellCommands) {
|
|
57
|
+
const result = await tryRunZipExtractionCommand(command, [
|
|
58
|
+
"-NoLogo",
|
|
59
|
+
"-NoProfile",
|
|
60
|
+
"-NonInteractive",
|
|
61
|
+
"-Command",
|
|
62
|
+
buildExpandArchiveCommand(archivePath, destination)
|
|
63
|
+
])
|
|
64
|
+
if (result.success) {
|
|
65
|
+
return { success: true, failures }
|
|
66
|
+
}
|
|
67
|
+
failures.push(result.failure)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return { success: false, failures }
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
async function tryRunZipExtractionCommand(command, args) {
|
|
74
|
+
try {
|
|
75
|
+
await runCommand(command, args)
|
|
76
|
+
return { success: true }
|
|
77
|
+
} catch (error) {
|
|
78
|
+
return {
|
|
79
|
+
success: false,
|
|
80
|
+
failure: formatCommandFailure(command, error)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function buildExpandArchiveCommand(archivePath, destination) {
|
|
86
|
+
const escapedArchivePath = escapePowerShellSingleQuotedString(archivePath)
|
|
87
|
+
const escapedDestination = escapePowerShellSingleQuotedString(destination)
|
|
88
|
+
return `Expand-Archive -LiteralPath '${escapedArchivePath}' -DestinationPath '${escapedDestination}' -Force`
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function escapePowerShellSingleQuotedString(value) {
|
|
92
|
+
return String(value).replaceAll("'", "''")
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function formatCommandFailure(command, error) {
|
|
96
|
+
if (error instanceof Error) {
|
|
97
|
+
return `${command}: ${error.message}`
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return `${command}: ${String(error)}`
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function runCommand(command, args) {
|
|
104
|
+
return new Promise((resolveCommand, rejectCommand) => {
|
|
105
|
+
const child = spawn(command, args, {
|
|
106
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
107
|
+
windowsHide: true
|
|
108
|
+
})
|
|
109
|
+
let stdout = ""
|
|
110
|
+
let stderr = ""
|
|
111
|
+
|
|
112
|
+
child.stdout.on("data", (chunk) => {
|
|
113
|
+
stdout += chunk.toString()
|
|
114
|
+
})
|
|
115
|
+
child.stderr.on("data", (chunk) => {
|
|
116
|
+
stderr += chunk.toString()
|
|
117
|
+
})
|
|
118
|
+
child.on("error", rejectCommand)
|
|
119
|
+
child.on("exit", (code, signal) => {
|
|
120
|
+
if (code === 0) {
|
|
121
|
+
resolveCommand({ stdout, stderr, code, signal })
|
|
122
|
+
return
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
rejectCommand(
|
|
126
|
+
new Error(
|
|
127
|
+
`${command} exited with code ${code ?? "unknown"}${
|
|
128
|
+
signal ? ` (signal=${signal})` : ""
|
|
129
|
+
}: ${(stderr || stdout).trim() || "unknown error"}`
|
|
130
|
+
)
|
|
131
|
+
)
|
|
132
|
+
})
|
|
7
133
|
})
|
|
8
134
|
}
|