Skip to content

Commit fd3b3a8

Browse files
authored
feat: nativescript-envinfo package (#5600)
* feat: nativescript-envinfo package * fix: handle edge cases better
1 parent 4e5c193 commit fd3b3a8

File tree

5 files changed

+139
-0
lines changed

5 files changed

+139
-0
lines changed
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
dist/
2+
node_modules/
+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#!/usr/bin/env node
2+
3+
import { run } from "envinfo";
4+
import { readFileSync } from "fs";
5+
import { resolve } from "path";
6+
7+
interface IPackageJSON {
8+
dependencies?: any;
9+
devDependencies?: any;
10+
}
11+
12+
function readPackageJSON(): IPackageJSON {
13+
try {
14+
return JSON.parse(
15+
readFileSync(resolve(process.cwd(), "package.json")).toString()
16+
);
17+
} catch (err) {
18+
return {};
19+
}
20+
}
21+
22+
async function main() {
23+
const res = JSON.parse(
24+
await run(
25+
{
26+
System: ["OS", "CPU", "Shell"],
27+
Binaries: ["Node", "npm"],
28+
Managers: ["CocoaPods"],
29+
IDEs: ["Xcode"],
30+
SDKs: ["iOS SDK", "Android SDK"],
31+
Languages: ["Java", "Ruby", "Python", "Python3"],
32+
npmGlobalPackages: ["nativescript"],
33+
},
34+
{ json: true, showNotFound: true }
35+
)
36+
);
37+
38+
const packageJSON = readPackageJSON();
39+
const dependencies = packageJSON?.dependencies ?? {};
40+
const devDependencies = packageJSON?.devDependencies ?? {};
41+
42+
const get = (key: string, defaultValue: any = "Not Found") => {
43+
try {
44+
return key.split(".").reduce((res, key) => res[key], res) ?? defaultValue;
45+
} catch (err) {
46+
return defaultValue;
47+
}
48+
};
49+
50+
const asList = (key: string) => {
51+
const list = get(key);
52+
53+
if (Array.isArray(list)) {
54+
return "\n" + list.map((image: string) => ` - ${image}`).join("\n");
55+
}
56+
57+
return list ?? "Not Found";
58+
};
59+
60+
console.log(
61+
[
62+
`<!-- COPY START -->`,
63+
"```yaml",
64+
`OS: ${get("System.OS")}`,
65+
`CPU: ${get("System.CPU")}`,
66+
`Shell: ${get("System.Shell.path")}`,
67+
`node: ${get("Binaries.Node.version")}`,
68+
`npm: ${get("Binaries.npm.version")}`,
69+
`nativescript: ${get("npmGlobalPackages.nativescript")}`,
70+
// `git: ${sysInfo.gitVer}`,
71+
``,
72+
`# android`,
73+
`java: ${get("Languages.Java.version")}`,
74+
`ndk: ${get("SDKs.Android SDK.Android NDK")}`,
75+
`apis: ${
76+
get("SDKs.Android SDK.API Levels")?.join?.(", ") ?? "Not Found"
77+
}`,
78+
`build_tools: ${
79+
get("SDKs.Android SDK.Build Tools")?.join?.(", ") ?? "Not Found"
80+
}`,
81+
`system_images: ` + asList("SDKs.Android SDK.System Images"),
82+
``,
83+
`# ios`,
84+
`xcode: ${get("IDEs.Xcode.version")}`,
85+
`cocoapods: ${get("Managers.CocoaPods.version")}`,
86+
`python: ${get("Languages.Python.version")}`,
87+
`python3: ${get("Languages.Python3.version")}`,
88+
`ruby: ${get("Languages.Ruby.version")}`,
89+
`platforms: ` + asList("SDKs.iOS SDK.Platforms"),
90+
"```",
91+
``,
92+
`### Dependencies`,
93+
``,
94+
"```json",
95+
'"dependencies": ' + JSON.stringify(dependencies, null, 2) + ",",
96+
'"devDependencies": ' + JSON.stringify(devDependencies, null, 2),
97+
"```",
98+
`<!-- COPY END -->`,
99+
].join("\n")
100+
);
101+
}
102+
103+
main();
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"name": "nativescript-envinfo",
3+
"version": "1.0.9",
4+
"main": "dist/index.js",
5+
"bin": "dist/index.js",
6+
"files": [],
7+
"license": "MIT",
8+
"scripts": {
9+
"prepack": "tsc"
10+
},
11+
"dependencies": {
12+
"@types/envinfo": "^7.8.1",
13+
"envinfo": "^7.8.1"
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"extends": "../../tsconfig.json",
3+
"compilerOptions": {
4+
"outDir": "dist"
5+
}
6+
}
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2+
# yarn lockfile v1
3+
4+
5+
"@types/envinfo@^7.8.1":
6+
version "7.8.1"
7+
resolved "https://registry.yarnpkg.com/@types/envinfo/-/envinfo-7.8.1.tgz#1915df82c16d637e92146645c70db9360eb099c6"
8+
integrity sha512-pTyshpmGxqB9lRwG75v2YR0oqKYpCrklOYlZWQ88z/JB0fimT8EVmYekuIwpU3IxPZDHSXCqXKzkCrtAcKY25g==
9+
10+
envinfo@^7.8.1:
11+
version "7.8.1"
12+
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
13+
integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==

0 commit comments

Comments
 (0)