@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 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.4"
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.4/shenvy_darwin_amd64.tar.gz"
13
- sha256 "47b6028e15045aa86b88bd2c7748734d09c015680d1d70b84d8c7347e575abfc"
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.4/shenvy_darwin_arm64.tar.gz"
21
- sha256 "d271c0378619d9d19c9eba1aea8dcf53f463d65df3df2c27fd3986c72c7e10ec"
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.4/shenvy_linux_amd64.tar.gz"
32
- sha256 "521dda0c72f2e415f6fa98148779f66b8ccb7366942cb9ba940d2a9491a513b6"
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.4/shenvy_linux_arm64.tar.gz"
39
- sha256 "c3f64fb621a79a1bbe7f41127863677187b268904931f4516247661cc278760e"
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}/${PROJECT_NAME}_${archiveName}`;
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
- download(url, tempArchive)
65
- .then(() => {
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
- console.error('Extraction failed:', e.message);
77
- process.exit(1);
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
- console.error(`Error: Extracted binary ${finalBinName} not found`);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shenvy/cli",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "Securely manage environment variables with E2EE (Go implementation wrapper)",
5
5
  "main": "bin/install.js",
6
6
  "bin": {
package/scoop/shenvy.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
- "version": "0.1.4",
2
+ "version": "0.1.5",
3
3
  "architecture": {
4
4
  "64bit": {
5
- "url": "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.4/shenvy_windows_amd64.zip",
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": "708f718abc4360f4b5bfd92b88baa88160d11b140674e1fc8877068492e6bdb7"
9
+ "hash": "19376e027a5ac7ea67f7ebfbd77b6835c91d03586b39cf868dde1da8e6fd6683"
10
10
  },
11
11
  "arm64": {
12
- "url": "https://github.com/Shenvy/shenvy-cli-dist/releases/download/v0.1.4/shenvy_windows_arm64.zip",
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": "4075103c40e7fc8876dcf579e71675b1cc2cca076b63dc0a29dd4ff40be6fd81"
16
+ "hash": "b9e78019c4fd541db1f13b41e30250d144ca82496295059324d2093d4a1a3215"
17
17
  }
18
18
  },
19
19
  "homepage": "https://shenvy.dev",