@braingrid/cli 0.1.0 → 0.1.2
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/CHANGELOG.md +36 -0
- package/README.md +26 -24
- package/dist/cli.js +37 -17
- package/dist/cli.js.map +1 -1
- package/dist/handlers/agent.handlers.d.ts +12 -0
- package/dist/handlers/agent.handlers.d.ts.map +1 -0
- package/dist/handlers/agent.handlers.js +130 -0
- package/dist/handlers/agent.handlers.js.map +1 -0
- package/dist/handlers/index.d.ts +1 -0
- package/dist/handlers/index.d.ts.map +1 -1
- package/dist/handlers/index.js +1 -0
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/init.handlers.d.ts +0 -1
- package/dist/handlers/init.handlers.d.ts.map +1 -1
- package/dist/handlers/init.handlers.js +481 -43
- package/dist/handlers/init.handlers.js.map +1 -1
- package/dist/handlers/project.handlers.d.ts +2 -3
- package/dist/handlers/project.handlers.d.ts.map +1 -1
- package/dist/handlers/project.handlers.js +80 -71
- package/dist/handlers/project.handlers.js.map +1 -1
- package/dist/handlers/requirement.handlers.d.ts.map +1 -1
- package/dist/handlers/requirement.handlers.js +21 -20
- package/dist/handlers/requirement.handlers.js.map +1 -1
- package/dist/handlers/status.handlers.d.ts.map +1 -1
- package/dist/handlers/status.handlers.js +11 -8
- package/dist/handlers/status.handlers.js.map +1 -1
- package/dist/handlers/task.handlers.d.ts.map +1 -1
- package/dist/handlers/task.handlers.js +45 -26
- package/dist/handlers/task.handlers.js.map +1 -1
- package/dist/rpc/server.d.ts +2 -0
- package/dist/rpc/server.d.ts.map +1 -1
- package/dist/rpc/server.js +28 -11
- package/dist/rpc/server.js.map +1 -1
- package/dist/services/agent-service.d.ts +29 -0
- package/dist/services/agent-service.d.ts.map +1 -0
- package/dist/services/agent-service.js +273 -0
- package/dist/services/agent-service.js.map +1 -0
- package/dist/services/credential-store.d.ts.map +1 -1
- package/dist/services/credential-store.js +1 -0
- package/dist/services/credential-store.js.map +1 -1
- package/dist/services/internal/github-service.d.ts +67 -0
- package/dist/services/internal/github-service.d.ts.map +1 -0
- package/dist/services/internal/github-service.js +81 -0
- package/dist/services/internal/github-service.js.map +1 -0
- package/dist/services/internal/repository-service.d.ts +79 -0
- package/dist/services/internal/repository-service.d.ts.map +1 -0
- package/dist/services/internal/repository-service.js +88 -0
- package/dist/services/internal/repository-service.js.map +1 -0
- package/dist/types/github.d.ts +105 -0
- package/dist/types/github.d.ts.map +1 -0
- package/dist/types/github.js +6 -0
- package/dist/types/github.js.map +1 -0
- package/dist/types/project.d.ts +1 -0
- package/dist/types/project.d.ts.map +1 -1
- package/dist/utils/cli-tools.d.ts.map +1 -1
- package/dist/utils/cli-tools.js +9 -1
- package/dist/utils/cli-tools.js.map +1 -1
- package/dist/utils/config.d.ts +1 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +18 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/gh-installer.d.ts +31 -0
- package/dist/utils/gh-installer.d.ts.map +1 -0
- package/dist/utils/gh-installer.js +296 -0
- package/dist/utils/gh-installer.js.map +1 -0
- package/dist/utils/git-installer.d.ts +31 -0
- package/dist/utils/git-installer.d.ts.map +1 -0
- package/dist/utils/git-installer.js +290 -0
- package/dist/utils/git-installer.js.map +1 -0
- package/dist/utils/git.d.ts +5 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +13 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/github-repo.d.ts +43 -0
- package/dist/utils/github-repo.d.ts.map +1 -0
- package/dist/utils/github-repo.js +113 -0
- package/dist/utils/github-repo.js.map +1 -0
- package/dist/utils/id-normalization.d.ts +26 -0
- package/dist/utils/id-normalization.d.ts.map +1 -0
- package/dist/utils/id-normalization.js +45 -0
- package/dist/utils/id-normalization.js.map +1 -0
- package/dist/utils/local-store.d.ts +7 -7
- package/dist/utils/local-store.d.ts.map +1 -1
- package/dist/utils/local-store.js +29 -17
- package/dist/utils/local-store.js.map +1 -1
- package/dist/utils/package-manager-installer.d.ts +36 -0
- package/dist/utils/package-manager-installer.d.ts.map +1 -0
- package/dist/utils/package-manager-installer.js +106 -0
- package/dist/utils/package-manager-installer.js.map +1 -0
- package/dist/utils/projects.d.ts +23 -0
- package/dist/utils/projects.d.ts.map +1 -0
- package/dist/utils/projects.js +36 -0
- package/dist/utils/projects.js.map +1 -0
- package/dist/utils/repository-access.d.ts +89 -0
- package/dist/utils/repository-access.d.ts.map +1 -0
- package/dist/utils/repository-access.js +132 -0
- package/dist/utils/repository-access.js.map +1 -0
- package/dist/utils/requirements.d.ts +15 -0
- package/dist/utils/requirements.d.ts.map +1 -1
- package/dist/utils/requirements.js +32 -7
- package/dist/utils/requirements.js.map +1 -1
- package/dist/utils/spinner.d.ts +47 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +101 -0
- package/dist/utils/spinner.js.map +1 -0
- package/dist/utils/tasks.d.ts +12 -0
- package/dist/utils/tasks.d.ts.map +1 -1
- package/dist/utils/tasks.js +31 -6
- package/dist/utils/tasks.js.map +1 -1
- package/dist/utils/workspace-manager.d.ts +65 -0
- package/dist/utils/workspace-manager.d.ts.map +1 -0
- package/dist/utils/workspace-manager.js +98 -0
- package/dist/utils/workspace-manager.js.map +1 -0
- package/package.json +4 -1
- package/dist/services/context-manager.d.ts +0 -170
- package/dist/services/context-manager.d.ts.map +0 -1
- package/dist/services/context-manager.js +0 -261
- package/dist/services/context-manager.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-installer.js","sourceRoot":"","sources":["../../src/utils/git-installer.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/git.d.ts
CHANGED
|
@@ -43,6 +43,11 @@ export declare function parseGitHubRepo(url: string): GitHubRepo | null;
|
|
|
43
43
|
* Get the current branch name
|
|
44
44
|
*/
|
|
45
45
|
export declare function getCurrentBranch(): Promise<string | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Get the git repository root directory
|
|
48
|
+
* Returns the absolute path to the repository root, or null if not in a git repository
|
|
49
|
+
*/
|
|
50
|
+
export declare function getGitRoot(): Promise<string | null>;
|
|
46
51
|
/**
|
|
47
52
|
* Get git user configuration (name and email)
|
|
48
53
|
*/
|
package/dist/utils/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO3D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAsB9D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO/D;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAmBnD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgCxE"}
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO3D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAsB9D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO/D;AAED;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOzD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAmBnD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgCxE"}
|
package/dist/utils/git.js
CHANGED
|
@@ -73,6 +73,19 @@ export async function getCurrentBranch() {
|
|
|
73
73
|
return null;
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Get the git repository root directory
|
|
78
|
+
* Returns the absolute path to the repository root, or null if not in a git repository
|
|
79
|
+
*/
|
|
80
|
+
export async function getGitRoot() {
|
|
81
|
+
try {
|
|
82
|
+
const { stdout } = await execAsync('git rev-parse --show-toplevel');
|
|
83
|
+
return stdout.trim() || null;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
76
89
|
/**
|
|
77
90
|
* Get git user configuration (name and email)
|
|
78
91
|
*/
|
package/dist/utils/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Repository Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides functions to automate GitHub repository creation and setup using GitHub CLI.
|
|
5
|
+
* Falls back to manual instructions when automation is not available.
|
|
6
|
+
*/
|
|
7
|
+
export interface RepoInfo {
|
|
8
|
+
owner: string;
|
|
9
|
+
name: string;
|
|
10
|
+
url: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Initialize a git repository in the current directory
|
|
14
|
+
*/
|
|
15
|
+
export declare function initGitRepo(): Promise<boolean>;
|
|
16
|
+
/**
|
|
17
|
+
* Check if GitHub CLI is authenticated
|
|
18
|
+
*/
|
|
19
|
+
export declare function isGhAuthenticated(): Promise<boolean>;
|
|
20
|
+
/**
|
|
21
|
+
* Get the current directory name (for suggesting repository name)
|
|
22
|
+
*/
|
|
23
|
+
export declare function getCurrentDirectoryName(): string;
|
|
24
|
+
/**
|
|
25
|
+
* Create a GitHub repository using GitHub CLI
|
|
26
|
+
*
|
|
27
|
+
* @param name - Repository name
|
|
28
|
+
* @param isPrivate - Whether the repository should be private
|
|
29
|
+
* @returns Repository information or null if failed
|
|
30
|
+
*/
|
|
31
|
+
export declare function createGitHubRepoWithGh(name: string, isPrivate: boolean): Promise<RepoInfo | null>;
|
|
32
|
+
/**
|
|
33
|
+
* Get repository information from git remote
|
|
34
|
+
*
|
|
35
|
+
* @returns Repository info or null if not found
|
|
36
|
+
*/
|
|
37
|
+
export declare function getRepoInfoFromGit(): Promise<RepoInfo | null>;
|
|
38
|
+
/**
|
|
39
|
+
* Check if we can use GitHub CLI automation
|
|
40
|
+
* (both GitHub CLI installed and authenticated)
|
|
41
|
+
*/
|
|
42
|
+
export declare function canUseGhAutomation(): Promise<boolean>;
|
|
43
|
+
//# sourceMappingURL=github-repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-repo.d.ts","sourceRoot":"","sources":["../../src/utils/github-repo.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAOpD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO1D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC3C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,OAAO,GAChB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAyB1B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA4BnE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAS3D"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Repository Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides functions to automate GitHub repository creation and setup using GitHub CLI.
|
|
5
|
+
* Falls back to manual instructions when automation is not available.
|
|
6
|
+
*/
|
|
7
|
+
import { exec } from 'child_process';
|
|
8
|
+
import { promisify } from 'util';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
const execAsync = promisify(exec);
|
|
11
|
+
/**
|
|
12
|
+
* Initialize a git repository in the current directory
|
|
13
|
+
*/
|
|
14
|
+
export async function initGitRepo() {
|
|
15
|
+
try {
|
|
16
|
+
await execAsync('git init');
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if GitHub CLI is authenticated
|
|
25
|
+
*/
|
|
26
|
+
export async function isGhAuthenticated() {
|
|
27
|
+
try {
|
|
28
|
+
await execAsync('gh auth status');
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get the current directory name (for suggesting repository name)
|
|
37
|
+
*/
|
|
38
|
+
export function getCurrentDirectoryName() {
|
|
39
|
+
return path.basename(process.cwd());
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a GitHub repository using GitHub CLI
|
|
43
|
+
*
|
|
44
|
+
* @param name - Repository name
|
|
45
|
+
* @param isPrivate - Whether the repository should be private
|
|
46
|
+
* @returns Repository information or null if failed
|
|
47
|
+
*/
|
|
48
|
+
export async function createGitHubRepoWithGh(name, isPrivate) {
|
|
49
|
+
try {
|
|
50
|
+
const visibility = isPrivate ? '--private' : '--public';
|
|
51
|
+
// Create repository with gh CLI
|
|
52
|
+
// --source=. creates repo from current directory and adds remote
|
|
53
|
+
const { stdout } = await execAsync(`gh repo create ${name} ${visibility} --source=. --remote=origin`, { timeout: 60000 });
|
|
54
|
+
// Parse the repository URL from output
|
|
55
|
+
const urlMatch = stdout.match(/https:\/\/github\.com\/([^/]+)\/([^/\s]+)/);
|
|
56
|
+
if (!urlMatch) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
owner: urlMatch[1],
|
|
61
|
+
name: urlMatch[2],
|
|
62
|
+
url: urlMatch[0],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get repository information from git remote
|
|
71
|
+
*
|
|
72
|
+
* @returns Repository info or null if not found
|
|
73
|
+
*/
|
|
74
|
+
export async function getRepoInfoFromGit() {
|
|
75
|
+
try {
|
|
76
|
+
const { stdout } = await execAsync('git config --get remote.origin.url');
|
|
77
|
+
const url = stdout.trim();
|
|
78
|
+
// Parse GitHub URL
|
|
79
|
+
const httpsMatch = url.match(/https?:\/\/github\.com\/([^/]+)\/([^/]+?)(\.git)?$/);
|
|
80
|
+
if (httpsMatch) {
|
|
81
|
+
return {
|
|
82
|
+
owner: httpsMatch[1],
|
|
83
|
+
name: httpsMatch[2],
|
|
84
|
+
url: `https://github.com/${httpsMatch[1]}/${httpsMatch[2]}`,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const sshMatch = url.match(/git@github\.com:([^/]+)\/([^/]+?)(\.git)?$/);
|
|
88
|
+
if (sshMatch) {
|
|
89
|
+
return {
|
|
90
|
+
owner: sshMatch[1],
|
|
91
|
+
name: sshMatch[2],
|
|
92
|
+
url: `https://github.com/${sshMatch[1]}/${sshMatch[2]}`,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check if we can use GitHub CLI automation
|
|
103
|
+
* (both GitHub CLI installed and authenticated)
|
|
104
|
+
*/
|
|
105
|
+
export async function canUseGhAutomation() {
|
|
106
|
+
const { isGhInstalled } = await import('./gh-installer.js');
|
|
107
|
+
const ghInstalled = await isGhInstalled();
|
|
108
|
+
if (!ghInstalled) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
return isGhAuthenticated();
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=github-repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-repo.js","sourceRoot":"","sources":["../../src/utils/github-repo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic ID normalization utility for resource identifiers
|
|
3
|
+
*
|
|
4
|
+
* This module provides a unified approach to normalizing resource IDs
|
|
5
|
+
* (Projects, Requirements, Tasks) from various user input formats.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Normalize a resource ID from various formats to API-compatible format:
|
|
9
|
+
* - "PREFIX-123" -> "PREFIX-123" (already normalized)
|
|
10
|
+
* - "prefix-123" -> "PREFIX-123" (uppercase prefix)
|
|
11
|
+
* - "PREFIX 123" -> "PREFIX-123" (replace space with dash, uppercase)
|
|
12
|
+
* - "prefix 123" -> "PREFIX-123" (replace space with dash, uppercase)
|
|
13
|
+
* - "123" -> "PREFIX-123" (add prefix)
|
|
14
|
+
* - "uuid-string" -> "uuid-string" (UUID, return as-is)
|
|
15
|
+
*
|
|
16
|
+
* @param prefix The resource prefix (e.g., 'PROJ', 'REQ', 'TASK')
|
|
17
|
+
* @param input The user-provided ID string
|
|
18
|
+
* @returns The normalized ID suitable for API calls
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* normalizeId('PROJ', 'proj-123') // Returns 'PROJ-123'
|
|
22
|
+
* normalizeId('REQ', 'REQ 456') // Returns 'REQ-456'
|
|
23
|
+
* normalizeId('TASK', '789') // Returns 'TASK-789'
|
|
24
|
+
*/
|
|
25
|
+
export declare function normalizeId(prefix: string, input: string): string;
|
|
26
|
+
//# sourceMappingURL=id-normalization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-normalization.d.ts","sourceRoot":"","sources":["../../src/utils/id-normalization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAuBjE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic ID normalization utility for resource identifiers
|
|
3
|
+
*
|
|
4
|
+
* This module provides a unified approach to normalizing resource IDs
|
|
5
|
+
* (Projects, Requirements, Tasks) from various user input formats.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Normalize a resource ID from various formats to API-compatible format:
|
|
9
|
+
* - "PREFIX-123" -> "PREFIX-123" (already normalized)
|
|
10
|
+
* - "prefix-123" -> "PREFIX-123" (uppercase prefix)
|
|
11
|
+
* - "PREFIX 123" -> "PREFIX-123" (replace space with dash, uppercase)
|
|
12
|
+
* - "prefix 123" -> "PREFIX-123" (replace space with dash, uppercase)
|
|
13
|
+
* - "123" -> "PREFIX-123" (add prefix)
|
|
14
|
+
* - "uuid-string" -> "uuid-string" (UUID, return as-is)
|
|
15
|
+
*
|
|
16
|
+
* @param prefix The resource prefix (e.g., 'PROJ', 'REQ', 'TASK')
|
|
17
|
+
* @param input The user-provided ID string
|
|
18
|
+
* @returns The normalized ID suitable for API calls
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* normalizeId('PROJ', 'proj-123') // Returns 'PROJ-123'
|
|
22
|
+
* normalizeId('REQ', 'REQ 456') // Returns 'REQ-456'
|
|
23
|
+
* normalizeId('TASK', '789') // Returns 'TASK-789'
|
|
24
|
+
*/
|
|
25
|
+
export function normalizeId(prefix, input) {
|
|
26
|
+
const trimmed = input.trim();
|
|
27
|
+
const upperPrefix = prefix.toUpperCase();
|
|
28
|
+
// Handle "PREFIX-123" or "prefix-123" format (already has dash)
|
|
29
|
+
const dashMatch = trimmed.match(new RegExp(`^${prefix}-(\\d+)$`, 'i'));
|
|
30
|
+
if (dashMatch) {
|
|
31
|
+
return `${upperPrefix}-${dashMatch[1]}`;
|
|
32
|
+
}
|
|
33
|
+
// Handle "PREFIX 123" or "prefix 123" format (space instead of dash)
|
|
34
|
+
const spaceMatch = trimmed.match(new RegExp(`^${prefix}\\s+(\\d+)$`, 'i'));
|
|
35
|
+
if (spaceMatch) {
|
|
36
|
+
return `${upperPrefix}-${spaceMatch[1]}`;
|
|
37
|
+
}
|
|
38
|
+
// Handle plain number format "123"
|
|
39
|
+
if (/^\d+$/.test(trimmed)) {
|
|
40
|
+
return `${upperPrefix}-${trimmed}`;
|
|
41
|
+
}
|
|
42
|
+
// Assume it's a UUID - return as-is
|
|
43
|
+
return trimmed;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=id-normalization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-normalization.js","sourceRoot":"","sources":["../../src/utils/id-normalization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAAa;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEzC,gEAAgE;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,SAAS,EAAE,CAAC;QACf,OAAO,GAAG,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;IAED,qEAAqE;IACrE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,GAAG,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,mCAAmC;IACnC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,oCAAoC;IACpC,OAAO,OAAO,CAAC;AAChB,CAAC"}
|
|
@@ -6,31 +6,31 @@ import { LocalProjectConfig } from '../types/local-project.js';
|
|
|
6
6
|
/**
|
|
7
7
|
* Get the path to the .braingrid directory
|
|
8
8
|
*/
|
|
9
|
-
export declare function getBraingridDir(cwd?: string): string
|
|
9
|
+
export declare function getBraingridDir(cwd?: string): Promise<string>;
|
|
10
10
|
/**
|
|
11
11
|
* Get the path to the project.json file
|
|
12
12
|
*/
|
|
13
|
-
export declare function getProjectConfigPath(cwd?: string): string
|
|
13
|
+
export declare function getProjectConfigPath(cwd?: string): Promise<string>;
|
|
14
14
|
/**
|
|
15
15
|
* Check if .braingrid/project.json exists
|
|
16
16
|
*/
|
|
17
|
-
export declare function projectConfigExists(cwd?: string): boolean
|
|
17
|
+
export declare function projectConfigExists(cwd?: string): Promise<boolean>;
|
|
18
18
|
/**
|
|
19
19
|
* Load project configuration from .braingrid/project.json
|
|
20
20
|
* @throws Error if file doesn't exist or is invalid
|
|
21
21
|
*/
|
|
22
|
-
export declare function loadProjectConfig(cwd?: string): LocalProjectConfig
|
|
22
|
+
export declare function loadProjectConfig(cwd?: string): Promise<LocalProjectConfig>;
|
|
23
23
|
/**
|
|
24
24
|
* Save project configuration to .braingrid/project.json
|
|
25
25
|
*/
|
|
26
|
-
export declare function saveProjectConfig(config: LocalProjectConfig, cwd?: string): void
|
|
26
|
+
export declare function saveProjectConfig(config: LocalProjectConfig, cwd?: string): Promise<void>;
|
|
27
27
|
/**
|
|
28
28
|
* Delete .braingrid/project.json
|
|
29
29
|
*/
|
|
30
|
-
export declare function deleteProjectConfig(cwd?: string): void
|
|
30
|
+
export declare function deleteProjectConfig(cwd?: string): Promise<void>;
|
|
31
31
|
/**
|
|
32
32
|
* Get the local project ID from .braingrid/project.json
|
|
33
33
|
* Returns the short_id (e.g., PROJ-123) if project.json exists, null otherwise
|
|
34
34
|
*/
|
|
35
|
-
export declare function getLocalProjectId(cwd?: string): string | null
|
|
35
|
+
export declare function getLocalProjectId(cwd?: string): Promise<string | null>;
|
|
36
36
|
//# sourceMappingURL=local-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../src/utils/local-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAA4B,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../src/utils/local-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAA4B,MAAM,2BAA2B,CAAC;AAezF;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGxE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxE;AAYD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAYjF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO/F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO5E"}
|
|
@@ -5,31 +5,43 @@
|
|
|
5
5
|
import fs from 'node:fs';
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import { LocalProjectConfigSchema } from '../types/local-project.js';
|
|
8
|
+
import { getGitRoot } from './git.js';
|
|
8
9
|
const BRAINGRID_DIR = '.braingrid';
|
|
9
10
|
const PROJECT_CONFIG_FILE = 'project.json';
|
|
11
|
+
/**
|
|
12
|
+
* Get the default directory for .braingrid folder
|
|
13
|
+
* Prefers git repository root, falls back to current working directory
|
|
14
|
+
*/
|
|
15
|
+
async function getDefaultCwd() {
|
|
16
|
+
const gitRoot = await getGitRoot();
|
|
17
|
+
return gitRoot || process.cwd();
|
|
18
|
+
}
|
|
10
19
|
/**
|
|
11
20
|
* Get the path to the .braingrid directory
|
|
12
21
|
*/
|
|
13
|
-
export function getBraingridDir(cwd
|
|
14
|
-
|
|
22
|
+
export async function getBraingridDir(cwd) {
|
|
23
|
+
const dir = cwd ?? (await getDefaultCwd());
|
|
24
|
+
return path.join(dir, BRAINGRID_DIR);
|
|
15
25
|
}
|
|
16
26
|
/**
|
|
17
27
|
* Get the path to the project.json file
|
|
18
28
|
*/
|
|
19
|
-
export function getProjectConfigPath(cwd
|
|
20
|
-
|
|
29
|
+
export async function getProjectConfigPath(cwd) {
|
|
30
|
+
const braingridDir = await getBraingridDir(cwd);
|
|
31
|
+
return path.join(braingridDir, PROJECT_CONFIG_FILE);
|
|
21
32
|
}
|
|
22
33
|
/**
|
|
23
34
|
* Check if .braingrid/project.json exists
|
|
24
35
|
*/
|
|
25
|
-
export function projectConfigExists(cwd
|
|
26
|
-
|
|
36
|
+
export async function projectConfigExists(cwd) {
|
|
37
|
+
const configPath = await getProjectConfigPath(cwd);
|
|
38
|
+
return fs.existsSync(configPath);
|
|
27
39
|
}
|
|
28
40
|
/**
|
|
29
41
|
* Ensure .braingrid directory exists
|
|
30
42
|
*/
|
|
31
|
-
function ensureBraingridDir(cwd
|
|
32
|
-
const dir = getBraingridDir(cwd);
|
|
43
|
+
async function ensureBraingridDir(cwd) {
|
|
44
|
+
const dir = await getBraingridDir(cwd);
|
|
33
45
|
if (!fs.existsSync(dir)) {
|
|
34
46
|
fs.mkdirSync(dir, { recursive: true });
|
|
35
47
|
}
|
|
@@ -38,8 +50,8 @@ function ensureBraingridDir(cwd = process.cwd()) {
|
|
|
38
50
|
* Load project configuration from .braingrid/project.json
|
|
39
51
|
* @throws Error if file doesn't exist or is invalid
|
|
40
52
|
*/
|
|
41
|
-
export function loadProjectConfig(cwd
|
|
42
|
-
const configPath = getProjectConfigPath(cwd);
|
|
53
|
+
export async function loadProjectConfig(cwd) {
|
|
54
|
+
const configPath = await getProjectConfigPath(cwd);
|
|
43
55
|
if (!fs.existsSync(configPath)) {
|
|
44
56
|
throw new Error(`Project not initialized. Run 'braingrid init' to initialize this repository.`);
|
|
45
57
|
}
|
|
@@ -51,17 +63,17 @@ export function loadProjectConfig(cwd = process.cwd()) {
|
|
|
51
63
|
/**
|
|
52
64
|
* Save project configuration to .braingrid/project.json
|
|
53
65
|
*/
|
|
54
|
-
export function saveProjectConfig(config, cwd
|
|
55
|
-
ensureBraingridDir(cwd);
|
|
56
|
-
const configPath = getProjectConfigPath(cwd);
|
|
66
|
+
export async function saveProjectConfig(config, cwd) {
|
|
67
|
+
await ensureBraingridDir(cwd);
|
|
68
|
+
const configPath = await getProjectConfigPath(cwd);
|
|
57
69
|
const content = JSON.stringify(config, null, 2);
|
|
58
70
|
fs.writeFileSync(configPath, content, 'utf8');
|
|
59
71
|
}
|
|
60
72
|
/**
|
|
61
73
|
* Delete .braingrid/project.json
|
|
62
74
|
*/
|
|
63
|
-
export function deleteProjectConfig(cwd
|
|
64
|
-
const configPath = getProjectConfigPath(cwd);
|
|
75
|
+
export async function deleteProjectConfig(cwd) {
|
|
76
|
+
const configPath = await getProjectConfigPath(cwd);
|
|
65
77
|
if (fs.existsSync(configPath)) {
|
|
66
78
|
fs.unlinkSync(configPath);
|
|
67
79
|
}
|
|
@@ -70,9 +82,9 @@ export function deleteProjectConfig(cwd = process.cwd()) {
|
|
|
70
82
|
* Get the local project ID from .braingrid/project.json
|
|
71
83
|
* Returns the short_id (e.g., PROJ-123) if project.json exists, null otherwise
|
|
72
84
|
*/
|
|
73
|
-
export function getLocalProjectId(cwd
|
|
85
|
+
export async function getLocalProjectId(cwd) {
|
|
74
86
|
try {
|
|
75
|
-
const config = loadProjectConfig(cwd);
|
|
87
|
+
const config = await loadProjectConfig(cwd);
|
|
76
88
|
return config.project_short_id;
|
|
77
89
|
}
|
|
78
90
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../src/utils/local-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAsB,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../src/utils/local-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package Manager Detection Utilities
|
|
3
|
+
*
|
|
4
|
+
* Detects package managers on different platforms:
|
|
5
|
+
* - Homebrew on macOS
|
|
6
|
+
* - winget on Windows (typically pre-installed on Windows 10+)
|
|
7
|
+
* - apt/dnf/pacman on Linux
|
|
8
|
+
*/
|
|
9
|
+
export interface PackageManagerInfo {
|
|
10
|
+
name: string;
|
|
11
|
+
command: string;
|
|
12
|
+
available: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Check if Homebrew is installed (macOS)
|
|
16
|
+
*/
|
|
17
|
+
export declare function isHomebrewInstalled(): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* Check if winget is available (Windows)
|
|
20
|
+
* winget is pre-installed on Windows 10 (version 1809+) and Windows 11
|
|
21
|
+
*/
|
|
22
|
+
export declare function isWingetAvailable(): Promise<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Detect available package manager on Linux
|
|
25
|
+
* Returns the first available package manager found
|
|
26
|
+
*/
|
|
27
|
+
export declare function detectLinuxPackageManager(): Promise<PackageManagerInfo | null>;
|
|
28
|
+
/**
|
|
29
|
+
* Get the appropriate package manager for the current platform
|
|
30
|
+
*/
|
|
31
|
+
export declare function detectPackageManager(): Promise<{
|
|
32
|
+
platform: string;
|
|
33
|
+
packageManager: string | null;
|
|
34
|
+
available: boolean;
|
|
35
|
+
}>;
|
|
36
|
+
//# sourceMappingURL=package-manager-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager-installer.d.ts","sourceRoot":"","sources":["../../src/utils/package-manager-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAW5D;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAW1D;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAsBpF;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;CACnB,CAAC,CAsCD"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package Manager Detection Utilities
|
|
3
|
+
*
|
|
4
|
+
* Detects package managers on different platforms:
|
|
5
|
+
* - Homebrew on macOS
|
|
6
|
+
* - winget on Windows (typically pre-installed on Windows 10+)
|
|
7
|
+
* - apt/dnf/pacman on Linux
|
|
8
|
+
*/
|
|
9
|
+
import { exec } from 'child_process';
|
|
10
|
+
import { promisify } from 'util';
|
|
11
|
+
const execAsync = promisify(exec);
|
|
12
|
+
/**
|
|
13
|
+
* Check if Homebrew is installed (macOS)
|
|
14
|
+
*/
|
|
15
|
+
export async function isHomebrewInstalled() {
|
|
16
|
+
if (process.platform !== 'darwin') {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
await execAsync('which brew', { timeout: 2000 });
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Check if winget is available (Windows)
|
|
29
|
+
* winget is pre-installed on Windows 10 (version 1809+) and Windows 11
|
|
30
|
+
*/
|
|
31
|
+
export async function isWingetAvailable() {
|
|
32
|
+
if (process.platform !== 'win32') {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
await execAsync('winget --version', { timeout: 2000 });
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Detect available package manager on Linux
|
|
45
|
+
* Returns the first available package manager found
|
|
46
|
+
*/
|
|
47
|
+
export async function detectLinuxPackageManager() {
|
|
48
|
+
if (process.platform !== 'linux') {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const packageManagers = [
|
|
52
|
+
{ name: 'apt', command: 'apt-get', available: false },
|
|
53
|
+
{ name: 'dnf', command: 'dnf', available: false },
|
|
54
|
+
{ name: 'yum', command: 'yum', available: false },
|
|
55
|
+
{ name: 'pacman', command: 'pacman', available: false },
|
|
56
|
+
];
|
|
57
|
+
for (const pm of packageManagers) {
|
|
58
|
+
try {
|
|
59
|
+
await execAsync(`which ${pm.command}`, { timeout: 2000 });
|
|
60
|
+
return { ...pm, available: true };
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Package manager not found, continue checking
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get the appropriate package manager for the current platform
|
|
70
|
+
*/
|
|
71
|
+
export async function detectPackageManager() {
|
|
72
|
+
const platform = process.platform;
|
|
73
|
+
switch (platform) {
|
|
74
|
+
case 'darwin': {
|
|
75
|
+
const hasHomebrew = await isHomebrewInstalled();
|
|
76
|
+
return {
|
|
77
|
+
platform: 'macOS',
|
|
78
|
+
packageManager: 'brew',
|
|
79
|
+
available: hasHomebrew,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
case 'win32': {
|
|
83
|
+
const hasWinget = await isWingetAvailable();
|
|
84
|
+
return {
|
|
85
|
+
platform: 'Windows',
|
|
86
|
+
packageManager: 'winget',
|
|
87
|
+
available: hasWinget,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
case 'linux': {
|
|
91
|
+
const linuxPM = await detectLinuxPackageManager();
|
|
92
|
+
return {
|
|
93
|
+
platform: 'Linux',
|
|
94
|
+
packageManager: linuxPM?.name || null,
|
|
95
|
+
available: linuxPM !== null,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
default:
|
|
99
|
+
return {
|
|
100
|
+
platform: platform,
|
|
101
|
+
packageManager: null,
|
|
102
|
+
available: false,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=package-manager-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager-installer.js","sourceRoot":"","sources":["../../src/utils/package-manager-installer.ts"],"names":[],"mappings":"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"}
|