mirror of
https://github.com/langchain-ai/langgraphjs.git
synced 2026-07-23 17:45:23 -04:00
feat(cli): add sysinfo command to obtain actual version (#1413)
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
---
|
||||
"@langchain/langgraph-cli": patch
|
||||
"@langchain/langgraph-api": patch
|
||||
"@langchain/langgraph-ui": patch
|
||||
---
|
||||
|
||||
feat(cli): add sysinfo command to obtain actual version
|
||||
@@ -43,6 +43,7 @@
|
||||
"extract-zip": "^2.0.1",
|
||||
"langsmith": "^0.3.33",
|
||||
"open": "^10.1.0",
|
||||
"package-manager-detector": "^1.3.0",
|
||||
"stacktrace-parser": "^0.1.10",
|
||||
"tar": "^7.4.3",
|
||||
"winston": "^3.17.0",
|
||||
|
||||
@@ -7,6 +7,7 @@ import "./dev.mjs";
|
||||
import "./docker.mjs";
|
||||
import "./build.mjs";
|
||||
import "./up.mjs";
|
||||
import "./sysinfo.mjs";
|
||||
|
||||
builder.exitOverride((error) => gracefulExit(error.exitCode));
|
||||
asyncExitHook(() => flushAnalytics(), { wait: 2000 });
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
import { builder } from "./utils/builder.mjs";
|
||||
import { detect } from "package-manager-detector";
|
||||
import { $ } from "execa";
|
||||
|
||||
builder
|
||||
.command("sysinfo")
|
||||
.description("Print system information")
|
||||
.action(async () => {
|
||||
const manager = await detect();
|
||||
if (!manager) throw new Error("No package manager detected");
|
||||
|
||||
console.log("Node version:", process.version);
|
||||
console.log("Operating system:", process.platform, process.arch);
|
||||
console.log("Package manager:", manager.name);
|
||||
console.log("Package manager version:", manager.version);
|
||||
|
||||
console.log("-".repeat(20));
|
||||
|
||||
const output = await (async () => {
|
||||
switch (manager.name) {
|
||||
case "npm":
|
||||
return await $`npm ls --depth=4`;
|
||||
|
||||
case "yarn":
|
||||
if (manager.version === "berry") {
|
||||
return await $`yarn info`;
|
||||
}
|
||||
|
||||
return await $`yarn list --depth=4`;
|
||||
|
||||
case "pnpm":
|
||||
return await $`pnpm ls --depth=4`;
|
||||
|
||||
case "bun":
|
||||
return await $`bun pm ls`;
|
||||
|
||||
default:
|
||||
return await $`npm ls`;
|
||||
}
|
||||
})();
|
||||
const gatherMatch = (str: string, regex: RegExp) => {
|
||||
return [...new Set(str.matchAll(regex).map((match) => match[0]))];
|
||||
};
|
||||
|
||||
const packages = gatherMatch(
|
||||
output.stdout,
|
||||
/(@langchain\/[^\s@]+|langsmith|langchain)/g
|
||||
);
|
||||
|
||||
async function getPackageInfo(packageName: string) {
|
||||
switch (manager?.name) {
|
||||
case "npm":
|
||||
return (await $`npm explain ${packageName}`).stdout;
|
||||
|
||||
case "yarn":
|
||||
return (await $`yarn why ${packageName}`).stdout;
|
||||
|
||||
case "pnpm":
|
||||
return (await $`pnpm why ${packageName}`).stdout;
|
||||
|
||||
case "bun":
|
||||
return (await $`bun why ${packageName}`).stdout;
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function escapeRegExp(text: string) {
|
||||
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
||||
}
|
||||
|
||||
for (const pkg of packages) {
|
||||
const info = await getPackageInfo(pkg);
|
||||
if (!info) continue;
|
||||
|
||||
const targetRegex = new RegExp(escapeRegExp(pkg) + "@[^\\s]*", "g");
|
||||
console.log(
|
||||
pkg,
|
||||
"->",
|
||||
gatherMatch(info, targetRegex)
|
||||
.map((i) => i.slice(pkg.length))
|
||||
.join(", ")
|
||||
);
|
||||
}
|
||||
});
|
||||
@@ -1955,6 +1955,7 @@ __metadata:
|
||||
extract-zip: "npm:^2.0.1"
|
||||
langsmith: "npm:^0.3.33"
|
||||
open: "npm:^10.1.0"
|
||||
package-manager-detector: "npm:^1.3.0"
|
||||
prettier: "npm:^2.8.3"
|
||||
stacktrace-parser: "npm:^0.1.10"
|
||||
tar: "npm:^7.4.3"
|
||||
@@ -11078,6 +11079,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"package-manager-detector@npm:^1.3.0":
|
||||
version: 1.3.0
|
||||
resolution: "package-manager-detector@npm:1.3.0"
|
||||
checksum: 10/b21155d53a8ab96d5be3bfae43cc1d397bf363782b922d1f6967d220d2a9f08234ebb76035318bf92822ce761d10451959f01019faebc08fdb4d4a8bc3103da6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pako@npm:~1.0.5":
|
||||
version: 1.0.11
|
||||
resolution: "pako@npm:1.0.11"
|
||||
|
||||
Reference in New Issue
Block a user