@shenvy/cli 0.1.5 → 0.1.7
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/Formula/shenvy.rb +9 -9
- package/bin/install.js +31 -18
- package/package.json +1 -1
- package/scoop/shenvy.json +5 -5
package/Formula/shenvy.rb
CHANGED
|
@@ -5,20 +5,20 @@
|
|
|
5
5
|
class Shenvy < Formula
|
|
6
6
|
desc "Securely manage environment variables with E2EE."
|
|
7
7
|
homepage "https://shenvy.dev"
|
|
8
|
-
version "0.1.
|
|
8
|
+
version "0.1.5"
|
|
9
9
|
|
|
10
10
|
on_macos do
|
|
11
11
|
if Hardware::CPU.intel?
|
|
12
|
-
url "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.
|
|
13
|
-
sha256 "
|
|
12
|
+
url "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.5/shenvy_darwin_amd64.tar.gz"
|
|
13
|
+
sha256 "973fe552f0882cced7344a9625d4bd6e512b6294c2d2f23836a060928f8d1a09"
|
|
14
14
|
|
|
15
15
|
define_method(:install) do
|
|
16
16
|
bin.install "shenvy"
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
if Hardware::CPU.arm?
|
|
20
|
-
url "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.
|
|
21
|
-
sha256 "
|
|
20
|
+
url "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.5/shenvy_darwin_arm64.tar.gz"
|
|
21
|
+
sha256 "de37d80eb886b419d34f9bd27d232483e2f321c300b5c0c8c18a8f6f29396a13"
|
|
22
22
|
|
|
23
23
|
define_method(:install) do
|
|
24
24
|
bin.install "shenvy"
|
|
@@ -28,15 +28,15 @@ class Shenvy < Formula
|
|
|
28
28
|
|
|
29
29
|
on_linux do
|
|
30
30
|
if Hardware::CPU.intel? && Hardware::CPU.is_64_bit?
|
|
31
|
-
url "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.
|
|
32
|
-
sha256 "
|
|
31
|
+
url "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.5/shenvy_linux_amd64.tar.gz"
|
|
32
|
+
sha256 "7a10a12bb695283835de2a3530a27e813d52855566d916464fe82ad247fa89e0"
|
|
33
33
|
define_method(:install) do
|
|
34
34
|
bin.install "shenvy"
|
|
35
35
|
end
|
|
36
36
|
end
|
|
37
37
|
if Hardware::CPU.arm? && Hardware::CPU.is_64_bit?
|
|
38
|
-
url "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.
|
|
39
|
-
sha256 "
|
|
38
|
+
url "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.5/shenvy_linux_arm64.tar.gz"
|
|
39
|
+
sha256 "207acb57c7abef500095320c61848aa87985ebd3f972f08d3e493e0118b45979"
|
|
40
40
|
define_method(:install) do
|
|
41
41
|
bin.install "shenvy"
|
|
42
42
|
end
|
package/bin/install.js
CHANGED
|
@@ -8,7 +8,6 @@ const { execSync } = require('child_process');
|
|
|
8
8
|
|
|
9
9
|
const PROJECT_NAME = 'shenvy';
|
|
10
10
|
const REPO = 'Shenvy/shenvy-cli-dist';
|
|
11
|
-
// Dynamically use the version from package.json
|
|
12
11
|
const VERSION = require('../package.json').version;
|
|
13
12
|
|
|
14
13
|
const platform = os.platform();
|
|
@@ -30,7 +29,7 @@ if (!archiveName) {
|
|
|
30
29
|
process.exit(1);
|
|
31
30
|
}
|
|
32
31
|
|
|
33
|
-
const url = `https://github.com/${REPO}/releases/download/v${VERSION}
|
|
32
|
+
const url = `https://github.com/${REPO}/releases/download/v${VERSION}/shenvy_${archiveName}`;
|
|
34
33
|
const binDir = path.join(__dirname);
|
|
35
34
|
const tempArchive = path.join(binDir, archiveName);
|
|
36
35
|
const finalBinName = platform === 'win32' ? 'shenvy.exe' : 'shenvy';
|
|
@@ -51,8 +50,7 @@ function download(url, dest) {
|
|
|
51
50
|
}
|
|
52
51
|
response.pipe(file);
|
|
53
52
|
file.on('finish', () => {
|
|
54
|
-
file.close();
|
|
55
|
-
resolve();
|
|
53
|
+
file.close(() => resolve());
|
|
56
54
|
});
|
|
57
55
|
}).on('error', (err) => {
|
|
58
56
|
fs.unlink(dest, () => {});
|
|
@@ -61,21 +59,35 @@ function download(url, dest) {
|
|
|
61
59
|
});
|
|
62
60
|
}
|
|
63
61
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
console.log('Extracting archive...');
|
|
67
|
-
|
|
62
|
+
async function extractWithRetry(retries = 5) {
|
|
63
|
+
for (let i = 0; i < retries; i++) {
|
|
68
64
|
try {
|
|
65
|
+
console.log(`Extracting archive (attempt ${i + 1}/${retries})...`);
|
|
69
66
|
if (platform === 'win32') {
|
|
70
|
-
const psCommand = `powershell.exe -NoProfile -Command "Expand-Archive -Path '${tempArchive}' -DestinationPath '${binDir}' -Force"`;
|
|
71
|
-
execSync(psCommand);
|
|
67
|
+
const psCommand = `powershell.exe -NoProfile -Command "Expand-Archive -Path '${tempArchive.replace(/'/g, "''")}' -DestinationPath '${binDir.replace(/'/g, "''")}' -Force"`;
|
|
68
|
+
execSync(psCommand, { stdio: 'inherit' });
|
|
72
69
|
} else {
|
|
73
|
-
execSync(`tar -xzf "${tempArchive}" -C "${binDir}"
|
|
70
|
+
execSync(`tar -xzf "${tempArchive}" -C "${binDir}"`, { stdio: 'inherit' });
|
|
74
71
|
}
|
|
72
|
+
return; // Success!
|
|
75
73
|
} catch (e) {
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
if (i === retries - 1) throw e;
|
|
75
|
+
console.log(`Archive locked, retrying in 1s...`);
|
|
76
|
+
await new Promise(r => setTimeout(r, 1000));
|
|
78
77
|
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async function install() {
|
|
82
|
+
try {
|
|
83
|
+
if (fs.existsSync(tempArchive)) fs.unlinkSync(tempArchive);
|
|
84
|
+
|
|
85
|
+
await download(url, tempArchive);
|
|
86
|
+
|
|
87
|
+
// Initial delay to let OS release handles
|
|
88
|
+
await new Promise(r => setTimeout(r, 1000));
|
|
89
|
+
|
|
90
|
+
await extractWithRetry();
|
|
79
91
|
|
|
80
92
|
const extractedBinPath = path.join(binDir, finalBinName);
|
|
81
93
|
if (fs.existsSync(extractedBinPath)) {
|
|
@@ -84,16 +96,17 @@ download(url, tempArchive)
|
|
|
84
96
|
fs.renameSync(extractedBinPath, finalBinPath);
|
|
85
97
|
}
|
|
86
98
|
} else {
|
|
87
|
-
|
|
88
|
-
process.exit(1);
|
|
99
|
+
throw new Error(`Extracted binary ${finalBinName} not found`);
|
|
89
100
|
}
|
|
90
101
|
|
|
91
102
|
if (fs.existsSync(tempArchive)) fs.unlinkSync(tempArchive);
|
|
92
103
|
if (platform !== 'win32' && fs.existsSync(finalBinPath)) fs.chmodSync(finalBinPath, 0o755);
|
|
93
104
|
|
|
94
105
|
console.log(`${PROJECT_NAME} v${VERSION} installed successfully.`);
|
|
95
|
-
})
|
|
96
|
-
.catch((err) => {
|
|
106
|
+
} catch (err) {
|
|
97
107
|
console.error(`Error installing ${PROJECT_NAME}:`, err.message);
|
|
98
108
|
process.exit(1);
|
|
99
|
-
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
install();
|
package/package.json
CHANGED
package/scoop/shenvy.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.1.
|
|
2
|
+
"version": "0.1.5",
|
|
3
3
|
"architecture": {
|
|
4
4
|
"64bit": {
|
|
5
|
-
"url": "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.
|
|
5
|
+
"url": "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.5/shenvy_windows_amd64.zip",
|
|
6
6
|
"bin": [
|
|
7
7
|
"shenvy.exe"
|
|
8
8
|
],
|
|
9
|
-
"hash": "
|
|
9
|
+
"hash": "19376e027a5ac7ea67f7ebfbd77b6835c91d03586b39cf868dde1da8e6fd6683"
|
|
10
10
|
},
|
|
11
11
|
"arm64": {
|
|
12
|
-
"url": "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.
|
|
12
|
+
"url": "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.5/shenvy_windows_arm64.zip",
|
|
13
13
|
"bin": [
|
|
14
14
|
"shenvy.exe"
|
|
15
15
|
],
|
|
16
|
-
"hash": "
|
|
16
|
+
"hash": "b9e78019c4fd541db1f13b41e30250d144ca82496295059324d2093d4a1a3215"
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
19
|
"homepage": "https://shenvy.dev",
|