@ahqstore/cli 0.3.4 → 0.4.1

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/Cargo.toml CHANGED
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  edition = "2021"
3
3
  name = "ahqstore_cli_rs"
4
- version = "0.3.4"
4
+ version = "0.4.1"
5
5
  description = "AHQ Store CLI"
6
6
  repository = "https://github.com/ahqstore/cli"
7
7
  homepage = "https://github.com/ahqstore/cli"
@@ -17,32 +17,40 @@ path = "src/lib.rs"
17
17
  name = "ahqstore"
18
18
  path = "src/main.rs"
19
19
 
20
+ [package.metadata.binstall]
21
+ pkg-url = "{ repo }/releases/download/{ version }/{ name }-{ target }.zip"
22
+ pkg-fmt = "zip"
23
+
20
24
  [dependencies]
21
25
  # Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
22
- napi = { version = "2.12.2", default-features = false, features = ["napi4"], optional = true }
23
- napi-derive = { version = "2.12.2", optional = true }
24
- inquire = { version = "0.7.5", features = ["editor"] }
25
- chalk_rs = "1.0.1"
26
- lazy_static = "1.4.0"
27
- serde = { version = "1.0.203", features = ["derive"] }
28
- serde_json = "1.0.117"
29
- ahqstore-types = "2.0.0"
26
+ napi = { version = "2", default-features = false, features = [
27
+ "napi4",
28
+ ], optional = true }
29
+ napi-derive = { version = "2", optional = true }
30
+ inquire = { version = "0", features = ["editor"] }
31
+ chalk_rs = "1"
32
+ lazy_static = "1"
33
+ serde = { version = "1", features = ["derive"] }
34
+ serde_json = "1"
35
+ ahqstore-types = "2.3.0"
30
36
  reqwest = { version = "0.12", features = ["json", "blocking"] }
31
- sha2 = "0.10.8"
32
- base64 = "0.22.1"
33
- image = { version = "0.25", default-features = false, features = ["rayon", "png"]}
34
- rand = "0.8.5"
37
+ sha2 = "0.10"
38
+ base64 = "0.22"
39
+ image = { version = "0.25", default-features = false, features = [
40
+ "rayon",
41
+ "png",
42
+ ] }
43
+ rand = "0.8"
35
44
 
36
45
  [target.'cfg(unix)'.dependencies]
37
46
  openssl-sys = { version = "0.9.102", features = ["vendored"] }
38
47
 
39
-
40
48
  [build-dependencies]
41
- napi-build = {version = "2.0.1", optional = true}
49
+ napi-build = { version = "2", optional = true }
42
50
 
43
51
  [profile.release]
44
52
  lto = true
45
53
  strip = "symbols"
46
54
 
47
55
  [features]
48
- node = ["dep:napi", "dep:napi-build", "dep:napi-derive"]
56
+ node = ["dep:napi", "dep:napi-build", "dep:napi-derive"]
package/bundle ADDED
@@ -0,0 +1,4 @@
1
+ mkdir dist
2
+ cp ./target/release/ahqstore ./dist/ahqstore
3
+ cp ./target/release/ahqstore ./dist/ahqstore_cli_rs
4
+ zip -r ahqstore_cli_rs-$TARGET ./dist
package/bundle.ps1 ADDED
@@ -0,0 +1,4 @@
1
+ mkdir dist
2
+ cp ./target/release/ahqstore.exe ./dist/ahqstore.exe
3
+ cp ./target/release/ahqstore.exe ./dist/ahqstore_cli_rs.exe
4
+ compress-archive ./dist/* ./ahqstore_cli_rs-$env:TARGET
package/index.js CHANGED
@@ -5,255 +5,178 @@
5
5
  /* prettier-ignore */
6
6
 
7
7
  /* auto-generated by NAPI-RS */
8
+ /* and modified by @ahqsoftwares */
8
9
 
9
10
  const { existsSync, readFileSync } = require('fs')
10
- const { join } = require('path')
11
+ const { join } = require("path");
11
12
 
12
- const { platform, arch } = process
13
+ const { platform, arch } = process;
13
14
 
14
- let nativeBinding = null
15
- let localFileExisted = false
16
- let loadError = null
15
+ let nativeBinding = null;
16
+ let localFileExisted = false;
17
+ let loadError = null;
17
18
 
18
19
  function isMusl() {
19
20
  // For Node 10
20
- if (!process.report || typeof process.report.getReport !== 'function') {
21
+ if (!process.report || typeof process.report.getReport !== "function") {
21
22
  try {
22
- const lddPath = require('child_process').execSync('which ldd').toString().trim()
23
- return readFileSync(lddPath, 'utf8').includes('musl')
23
+ const lddPath = require("child_process")
24
+ .execSync("which ldd")
25
+ .toString()
26
+ .trim();
27
+ return readFileSync(lddPath, "utf8").includes("musl");
24
28
  } catch (e) {
25
- return true
29
+ return true;
26
30
  }
27
31
  } else {
28
- const { glibcVersionRuntime } = process.report.getReport().header
29
- return !glibcVersionRuntime
32
+ const { glibcVersionRuntime } = process.report.getReport().header;
33
+ return !glibcVersionRuntime;
30
34
  }
31
35
  }
32
36
 
33
37
  switch (platform) {
34
- case 'android':
38
+ case "win32":
35
39
  switch (arch) {
36
- case 'arm64':
37
- localFileExisted = existsSync(join(__dirname, 'cli.android-arm64.node'))
38
- try {
39
- if (localFileExisted) {
40
- nativeBinding = require('./cli.android-arm64.node')
41
- } else {
42
- nativeBinding = require('@ahqstore/cli-android-arm64')
43
- }
44
- } catch (e) {
45
- loadError = e
46
- }
47
- break
48
- case 'arm':
49
- localFileExisted = existsSync(join(__dirname, 'cli.android-arm-eabi.node'))
50
- try {
51
- if (localFileExisted) {
52
- nativeBinding = require('./cli.android-arm-eabi.node')
53
- } else {
54
- nativeBinding = require('@ahqstore/cli-android-arm-eabi')
55
- }
56
- } catch (e) {
57
- loadError = e
58
- }
59
- break
60
- default:
61
- throw new Error(`Unsupported architecture on Android ${arch}`)
62
- }
63
- break
64
- case 'win32':
65
- switch (arch) {
66
- case 'x64':
40
+ case "x64":
67
41
  localFileExisted = existsSync(
68
- join(__dirname, 'cli.win32-x64-msvc.node')
69
- )
42
+ join(__dirname, "cli.win32-x64-msvc.node")
43
+ );
70
44
  try {
71
45
  if (localFileExisted) {
72
- nativeBinding = require('./cli.win32-x64-msvc.node')
46
+ nativeBinding = require("./cli.win32-x64-msvc.node");
73
47
  } else {
74
- nativeBinding = require('@ahqstore/cli-win32-x64-msvc')
48
+ nativeBinding = require("@ahqstore/cli-win32-x64-msvc");
75
49
  }
76
50
  } catch (e) {
77
- loadError = e
51
+ loadError = e;
78
52
  }
79
- break
80
- case 'ia32':
53
+ break;
54
+ case "ia32":
81
55
  localFileExisted = existsSync(
82
- join(__dirname, 'cli.win32-ia32-msvc.node')
83
- )
56
+ join(__dirname, "cli.win32-ia32-msvc.node")
57
+ );
84
58
  try {
85
59
  if (localFileExisted) {
86
- nativeBinding = require('./cli.win32-ia32-msvc.node')
60
+ nativeBinding = require("./cli.win32-ia32-msvc.node");
87
61
  } else {
88
- nativeBinding = require('@ahqstore/cli-win32-ia32-msvc')
62
+ nativeBinding = require("@ahqstore/cli-win32-ia32-msvc");
89
63
  }
90
64
  } catch (e) {
91
- loadError = e
65
+ loadError = e;
92
66
  }
93
- break
94
- case 'arm64':
67
+ break;
68
+ case "arm64":
95
69
  localFileExisted = existsSync(
96
- join(__dirname, 'cli.win32-arm64-msvc.node')
97
- )
70
+ join(__dirname, "cli.win32-arm64-msvc.node")
71
+ );
98
72
  try {
99
73
  if (localFileExisted) {
100
- nativeBinding = require('./cli.win32-arm64-msvc.node')
74
+ nativeBinding = require("./cli.win32-arm64-msvc.node");
101
75
  } else {
102
- nativeBinding = require('@ahqstore/cli-win32-arm64-msvc')
76
+ nativeBinding = require("@ahqstore/cli-win32-arm64-msvc");
103
77
  }
104
78
  } catch (e) {
105
- loadError = e
79
+ loadError = e;
106
80
  }
107
- break
81
+ break;
108
82
  default:
109
- throw new Error(`Unsupported architecture on Windows: ${arch}`)
83
+ throw new Error(`Unsupported architecture on Windows: ${arch}`);
110
84
  }
111
- break
112
- case 'darwin':
113
- localFileExisted = existsSync(join(__dirname, 'cli.darwin-universal.node'))
85
+ break;
86
+ case "darwin":
87
+ localFileExisted = existsSync(join(__dirname, "cli.darwin-universal.node"));
114
88
  try {
115
89
  if (localFileExisted) {
116
- nativeBinding = require('./cli.darwin-universal.node')
90
+ nativeBinding = require("./cli.darwin-universal.node");
117
91
  } else {
118
- nativeBinding = require('@ahqstore/cli-darwin-universal')
92
+ nativeBinding = require("@ahqstore/cli-darwin-universal");
119
93
  }
120
- break
94
+ break;
121
95
  } catch {}
122
96
  switch (arch) {
123
- case 'x64':
124
- localFileExisted = existsSync(join(__dirname, 'cli.darwin-x64.node'))
97
+ case "x64":
98
+ localFileExisted = existsSync(join(__dirname, "cli.darwin-x64.node"));
125
99
  try {
126
100
  if (localFileExisted) {
127
- nativeBinding = require('./cli.darwin-x64.node')
101
+ nativeBinding = require("./cli.darwin-x64.node");
128
102
  } else {
129
- nativeBinding = require('@ahqstore/cli-darwin-x64')
103
+ nativeBinding = require("@ahqstore/cli-darwin-x64");
130
104
  }
131
105
  } catch (e) {
132
- loadError = e
106
+ loadError = e;
133
107
  }
134
- break
135
- case 'arm64':
136
- localFileExisted = existsSync(
137
- join(__dirname, 'cli.darwin-arm64.node')
138
- )
108
+ break;
109
+ case "arm64":
110
+ localFileExisted = existsSync(join(__dirname, "cli.darwin-arm64.node"));
139
111
  try {
140
112
  if (localFileExisted) {
141
- nativeBinding = require('./cli.darwin-arm64.node')
113
+ nativeBinding = require("./cli.darwin-arm64.node");
142
114
  } else {
143
- nativeBinding = require('@ahqstore/cli-darwin-arm64')
115
+ nativeBinding = require("@ahqstore/cli-darwin-arm64");
144
116
  }
145
117
  } catch (e) {
146
- loadError = e
118
+ loadError = e;
147
119
  }
148
- break
120
+ break;
149
121
  default:
150
- throw new Error(`Unsupported architecture on macOS: ${arch}`)
122
+ throw new Error(`Unsupported architecture on macOS: ${arch}`);
151
123
  }
152
- break
153
- case 'freebsd':
154
- throw new Error("Unsupported OS: FreeBSD");
155
- case 'linux':
124
+ break;
125
+ case "linux":
156
126
  switch (arch) {
157
- case 'x64':
158
- if (isMusl()) {
159
- throw new Error("MUSL Bindings are not supported!");
160
- } else {
161
- localFileExisted = existsSync(
162
- join(__dirname, 'cli.linux-x64-gnu.node')
163
- )
164
- try {
165
- if (localFileExisted) {
166
- nativeBinding = require('./cli.linux-x64-gnu.node')
167
- } else {
168
- nativeBinding = require('@ahqstore/cli-linux-x64-gnu')
169
- }
170
- } catch (e) {
171
- loadError = e
172
- }
173
- }
174
- break
175
- case 'arm64':
127
+ case "x64":
176
128
  if (isMusl()) {
177
129
  throw new Error("MUSL Bindings are not supported!");
178
130
  } else {
179
131
  localFileExisted = existsSync(
180
- join(__dirname, 'cli.linux-arm64-gnu.node')
181
- )
132
+ join(__dirname, "cli.linux-x64-gnu.node")
133
+ );
182
134
  try {
183
135
  if (localFileExisted) {
184
- nativeBinding = require('./cli.linux-arm64-gnu.node')
136
+ nativeBinding = require("./cli.linux-x64-gnu.node");
185
137
  } else {
186
- nativeBinding = require('@ahqstore/cli-linux-arm64-gnu')
138
+ nativeBinding = require("@ahqstore/cli-linux-x64-gnu");
187
139
  }
188
140
  } catch (e) {
189
- loadError = e
141
+ loadError = e;
190
142
  }
191
143
  }
192
- break
193
- case 'arm':
144
+ break;
145
+ case "arm64":
194
146
  if (isMusl()) {
195
147
  throw new Error("MUSL Bindings are not supported!");
196
148
  } else {
197
149
  localFileExisted = existsSync(
198
- join(__dirname, 'cli.linux-arm-gnueabihf.node')
199
- )
150
+ join(__dirname, "cli.linux-arm64-gnu.node")
151
+ );
200
152
  try {
201
153
  if (localFileExisted) {
202
- nativeBinding = require('./cli.linux-arm-gnueabihf.node')
154
+ nativeBinding = require("./cli.linux-arm64-gnu.node");
203
155
  } else {
204
- nativeBinding = require('@ahqstore/cli-linux-arm-gnueabihf')
156
+ nativeBinding = require("@ahqstore/cli-linux-arm64-gnu");
205
157
  }
206
158
  } catch (e) {
207
- loadError = e
159
+ loadError = e;
208
160
  }
209
161
  }
210
- break
211
- case 'riscv64':
212
- if (isMusl()) {
213
- throw new Error("MUSL Bindings are not supported!");
214
- } else {
215
- localFileExisted = existsSync(
216
- join(__dirname, 'cli.linux-riscv64-gnu.node')
217
- )
218
- try {
219
- if (localFileExisted) {
220
- nativeBinding = require('./cli.linux-riscv64-gnu.node')
221
- } else {
222
- nativeBinding = require('@ahqstore/cli-linux-riscv64-gnu')
223
- }
224
- } catch (e) {
225
- loadError = e
226
- }
227
- }
228
- break
229
- case 's390x':
230
- localFileExisted = existsSync(
231
- join(__dirname, 'cli.linux-s390x-gnu.node')
232
- )
233
- try {
234
- if (localFileExisted) {
235
- nativeBinding = require('./cli.linux-s390x-gnu.node')
236
- } else {
237
- nativeBinding = require('@ahqstore/cli-linux-s390x-gnu')
238
- }
239
- } catch (e) {
240
- loadError = e
241
- }
242
- break
162
+ break;
243
163
  default:
244
- throw new Error(`Unsupported architecture on Linux: ${arch}`)
164
+ throw new Error(`Unsupported architecture on Linux: ${arch}`);
245
165
  }
246
- break
166
+ break;
247
167
  default:
248
- throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
168
+ throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`);
249
169
  }
250
170
 
251
171
  if (!nativeBinding) {
252
172
  if (loadError) {
253
- throw loadError
173
+ throw loadError;
254
174
  }
255
- throw new Error(`Failed to load native binding`)
175
+ throw new Error(`Failed to load native binding`);
256
176
  }
257
177
 
258
- const { node_entrypoint } = nativeBinding
178
+ const { nodeEntrypoint } = nativeBinding;
179
+
180
+ const args = process.argv.slice(2) || [];
259
181
 
182
+ nodeEntrypoint(args, process.env["GH_ACTION"] != null);
package/latest.md ADDED
@@ -0,0 +1,3 @@
1
+ # AHQ Store CLI v0.4.1
2
+
3
+ - Test adding cargo b(inary)install support
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ahqstore/cli",
3
- "version": "0.3.4",
3
+ "version": "0.4.1",
4
4
  "napi": {
5
5
  "name": "cli",
6
6
  "triples": {
@@ -16,8 +16,7 @@
16
16
  },
17
17
  "license": "MIT",
18
18
  "devDependencies": {
19
- "@napi-rs/cli": "^2.18.3",
20
- "ava": "^6.0.1"
19
+ "@napi-rs/cli": "^2.18.3"
21
20
  },
22
21
  "ava": {
23
22
  "timeout": "3m"
@@ -36,19 +35,18 @@
36
35
  "build": "napi build --platform --release --features node",
37
36
  "build:debug": "napi build --platform --features node",
38
37
  "prepublishOnly": "napi prepublish -t npm",
39
- "test": "ava",
40
38
  "universal": "napi universal",
41
39
  "version": "napi version"
42
40
  },
43
41
  "optionalDependencies": {
44
- "@ahqstore/cli-win32-x64-msvc": "0.3.4",
45
- "@ahqstore/cli-darwin-x64": "0.3.4",
46
- "@ahqstore/cli-linux-x64-gnu": "0.3.4",
47
- "@ahqstore/cli-darwin-arm64": "0.3.4",
48
- "@ahqstore/cli-linux-arm64-gnu": "0.3.4",
49
- "@ahqstore/cli-win32-arm64-msvc": "0.3.4",
50
- "@ahqstore/cli-win32-ia32-msvc": "0.3.4",
51
- "@ahqstore/cli-darwin-universal": "0.3.4",
52
- "@ahqstore/cli-linux-riscv64-gnu": "0.3.4"
42
+ "@ahqstore/cli-win32-x64-msvc": "0.4.1",
43
+ "@ahqstore/cli-darwin-x64": "0.4.1",
44
+ "@ahqstore/cli-linux-x64-gnu": "0.4.1",
45
+ "@ahqstore/cli-darwin-arm64": "0.4.1",
46
+ "@ahqstore/cli-linux-arm64-gnu": "0.4.1",
47
+ "@ahqstore/cli-win32-arm64-msvc": "0.4.1",
48
+ "@ahqstore/cli-win32-ia32-msvc": "0.4.1",
49
+ "@ahqstore/cli-darwin-universal": "0.4.1",
50
+ "@ahqstore/cli-linux-riscv64-gnu": "0.4.1"
53
51
  }
54
52
  }
@@ -0,0 +1,95 @@
1
+ macro_rules! f {
2
+ ($($x:tt)*) => {
3
+ format!($($x)*)
4
+ };
5
+ }
6
+
7
+ macro_rules! s {
8
+ ($($x:tt)*) => {
9
+ stringify!($($x)*)
10
+ };
11
+ }
12
+
13
+ #[macro_export]
14
+ macro_rules! windowsPlatform {
15
+ ($num: ident, $win: ident, $config: ident, $gh_r: ident, $final_config: ident, $platform: ident, $options: ident, $finder: ident) => {
16
+ $num += 1;
17
+ if let Some(platform) = $config.platform.$platform {
18
+ if !matches!(&platform, &InstallerFormat::LinuxAppImage | &InstallerFormat::AndroidApkZip) {
19
+ ERR.println(&"Invalid File Format, expected a valid windows format");
20
+ }
21
+
22
+ let Some(options) = $config.platform.$options else {
23
+ ERR.println(&f!("{} Options not found!", s!($win)));
24
+ process::exit(1);
25
+ };
26
+ let Some(finder) = $config.finder.$finder else {
27
+ ERR.println(&f!("{} Finder config not found!", s!($win)));
28
+ process::exit(1);
29
+ };
30
+
31
+ let assets = crate::app::build::find_assets(&$gh_r, &finder);
32
+
33
+ if assets.len() > 1 {
34
+ ERR.println(&f!("Multiple assets found while parsing {}", s!($win)));
35
+ process::exit(1);
36
+ }
37
+ if assets.len() == 0 {
38
+ ERR.println(&f!("No assets found while parsing {}", s!($win)));
39
+ process::exit(1);
40
+ }
41
+
42
+ $final_config.downloadUrls.insert(
43
+ $num,
44
+ DownloadUrl {
45
+ installerType: platform,
46
+ url: assets[0].browser_download_url.clone(),
47
+ },
48
+ );
49
+
50
+ $final_config.install.$win = Some(InstallerOptionsWindows {
51
+ assetId: $num,
52
+ exec: options.zip_file_exec.map_or(None, |a| Some(a.to_string())),
53
+ installerArgs: options
54
+ .exe_installer_args
55
+ .map_or(None, |a| Some(a.iter().map(|x| x.to_string()).collect())),
56
+ });
57
+ }
58
+ };
59
+ }
60
+
61
+ #[macro_export]
62
+ macro_rules! linuxPlatform {
63
+ ($num: ident, $linux: ident, $config: ident, $gh_r: ident, $final_config: ident, $platform: ident, $finder: ident) => {
64
+ $num += 1;
65
+ if let Some(platform) = $config.platform.$platform {
66
+ if !matches!(&platform, &InstallerFormat::LinuxAppImage) {
67
+ ERR.println(&"Invalid File Format, expected LinuxAppImage");
68
+ }
69
+
70
+ let Some(finder) = $config.finder.$finder else {
71
+ ERR.println(&f!("{} Finder Config not found!", s!($linux)));
72
+ process::exit(1);
73
+ };
74
+
75
+ let assets = find_assets(&$gh_r, &finder);
76
+
77
+ if assets.len() > 1 {
78
+ ERR.println(&f!("Multiple assets found while parsing {}", s!($linux)));
79
+ process::exit(1);
80
+ }
81
+
82
+ $final_config.downloadUrls.insert(
83
+ $num,
84
+ DownloadUrl {
85
+ installerType: platform,
86
+ url: assets[0].browser_download_url.clone(),
87
+ },
88
+ );
89
+
90
+ $final_config.install.$linux = Some(InstallerOptionsLinux {
91
+ assetId: $num
92
+ });
93
+ }
94
+ };
95
+ }