@onescience/onecode 1.14.50-202607010646 → 1.14.50-202607011517
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/package.json +1 -1
- package/postinstall.mjs +21 -7
package/package.json
CHANGED
package/postinstall.mjs
CHANGED
|
@@ -89,33 +89,47 @@ function downloadFile(url, dest) {
|
|
|
89
89
|
})
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
function moveDir(src, dest) {
|
|
93
|
+
fs.rmSync(dest, { recursive: true, force: true })
|
|
94
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true })
|
|
95
|
+
try {
|
|
96
|
+
fs.renameSync(src, dest)
|
|
97
|
+
} catch (err) {
|
|
98
|
+
if (err?.code !== "EXDEV") throw err
|
|
99
|
+
fs.cpSync(src, dest, { recursive: true })
|
|
100
|
+
fs.rmSync(src, { recursive: true, force: true })
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
92
104
|
async function downloadAndExtractPlatformPackage() {
|
|
93
105
|
const packageName = platformPackageName()
|
|
94
106
|
const version = ownVersion()
|
|
95
107
|
const url = platformTgzUrl(version)
|
|
96
108
|
const nodeModulesDir = path.join(__dirname, "node_modules")
|
|
97
109
|
const targetDir = path.join(nodeModulesDir, packageName)
|
|
98
|
-
|
|
99
|
-
|
|
110
|
+
// Use a work dir beside the package so extract/rename stays on the same filesystem
|
|
111
|
+
// (/tmp is often a separate mount and rename → EXDEV for global npm installs).
|
|
112
|
+
const workDir = path.join(__dirname, ".postinstall-work")
|
|
113
|
+
const tmpTgz = path.join(workDir, `${packageName}-${version}.tgz`)
|
|
114
|
+
const tmpExtract = path.join(workDir, "extract")
|
|
100
115
|
|
|
101
116
|
console.log(`Downloading ${packageName} from ${url}`)
|
|
117
|
+
fs.rmSync(workDir, { recursive: true, force: true })
|
|
118
|
+
fs.mkdirSync(workDir, { recursive: true })
|
|
102
119
|
await downloadFile(url, tmpTgz)
|
|
103
120
|
console.log(`Downloaded ${path.basename(tmpTgz)} (${(fs.statSync(tmpTgz).size / 1024 / 1024).toFixed(1)} MB)`)
|
|
104
121
|
|
|
105
|
-
fs.rmSync(tmpExtract, { recursive: true, force: true })
|
|
106
122
|
fs.mkdirSync(tmpExtract, { recursive: true })
|
|
107
123
|
execSync(`tar -xzf "${tmpTgz}"`, { cwd: tmpExtract, stdio: "pipe" })
|
|
108
|
-
fs.unlinkSync(tmpTgz)
|
|
109
124
|
|
|
110
125
|
const extractedRoot = path.join(tmpExtract, "package")
|
|
111
126
|
if (!fs.existsSync(extractedRoot)) {
|
|
112
127
|
throw new Error(`Expected package/ inside tgz downloaded from ${url}`)
|
|
113
128
|
}
|
|
114
129
|
|
|
115
|
-
fs.rmSync(targetDir, { recursive: true, force: true })
|
|
116
130
|
fs.mkdirSync(nodeModulesDir, { recursive: true })
|
|
117
|
-
|
|
118
|
-
fs.rmSync(
|
|
131
|
+
moveDir(extractedRoot, targetDir)
|
|
132
|
+
fs.rmSync(workDir, { recursive: true, force: true })
|
|
119
133
|
|
|
120
134
|
const binaryName = detectPlatformAndArch().platform === "windows" ? `${product}.exe` : product
|
|
121
135
|
const binaryPath = path.join(targetDir, "bin", binaryName)
|