@braingrid/cli 0.1.1 → 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.
Files changed (43) hide show
  1. package/README.md +13 -15
  2. package/dist/cli.js +1 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/handlers/init.handlers.d.ts +0 -1
  5. package/dist/handlers/init.handlers.d.ts.map +1 -1
  6. package/dist/handlers/init.handlers.js +477 -39
  7. package/dist/handlers/init.handlers.js.map +1 -1
  8. package/dist/handlers/status.handlers.js +6 -6
  9. package/dist/handlers/status.handlers.js.map +1 -1
  10. package/dist/types/project.d.ts +1 -0
  11. package/dist/types/project.d.ts.map +1 -1
  12. package/dist/utils/cli-tools.d.ts.map +1 -1
  13. package/dist/utils/cli-tools.js +9 -0
  14. package/dist/utils/cli-tools.js.map +1 -1
  15. package/dist/utils/config.d.ts +1 -0
  16. package/dist/utils/config.d.ts.map +1 -1
  17. package/dist/utils/config.js +18 -0
  18. package/dist/utils/config.js.map +1 -1
  19. package/dist/utils/gh-installer.d.ts +31 -0
  20. package/dist/utils/gh-installer.d.ts.map +1 -0
  21. package/dist/utils/gh-installer.js +296 -0
  22. package/dist/utils/gh-installer.js.map +1 -0
  23. package/dist/utils/git-installer.d.ts +31 -0
  24. package/dist/utils/git-installer.d.ts.map +1 -0
  25. package/dist/utils/git-installer.js +290 -0
  26. package/dist/utils/git-installer.js.map +1 -0
  27. package/dist/utils/github-repo.d.ts +43 -0
  28. package/dist/utils/github-repo.d.ts.map +1 -0
  29. package/dist/utils/github-repo.js +113 -0
  30. package/dist/utils/github-repo.js.map +1 -0
  31. package/dist/utils/package-manager-installer.d.ts +36 -0
  32. package/dist/utils/package-manager-installer.d.ts.map +1 -0
  33. package/dist/utils/package-manager-installer.js +106 -0
  34. package/dist/utils/package-manager-installer.js.map +1 -0
  35. package/dist/utils/repository-access.d.ts +89 -0
  36. package/dist/utils/repository-access.d.ts.map +1 -0
  37. package/dist/utils/repository-access.js +132 -0
  38. package/dist/utils/repository-access.js.map +1 -0
  39. package/dist/utils/spinner.d.ts +47 -0
  40. package/dist/utils/spinner.d.ts.map +1 -0
  41. package/dist/utils/spinner.js +101 -0
  42. package/dist/utils/spinner.js.map +1 -0
  43. package/package.json +1 -1
@@ -0,0 +1,290 @@
1
+ /**
2
+ * Git Installer Utility
3
+ *
4
+ * Automatically installs Git on the user's system using platform-specific package managers:
5
+ * - macOS: Homebrew (if installed) or Xcode Command Line Tools
6
+ * - Windows: winget
7
+ * - Linux: apt/dnf/pacman (auto-detected)
8
+ */
9
+ import { exec } from 'child_process';
10
+ import { promisify } from 'util';
11
+ import chalk from 'chalk';
12
+ import { isCliInstalled, getCliVersion } from './cli-tools.js';
13
+ import { isHomebrewInstalled, isWingetAvailable, detectLinuxPackageManager, } from './package-manager-installer.js';
14
+ const execAsync = promisify(exec);
15
+ /**
16
+ * Check if Git is installed
17
+ */
18
+ export async function isGitInstalled() {
19
+ return isCliInstalled('git');
20
+ }
21
+ /**
22
+ * Get Git version if installed
23
+ */
24
+ export async function getGitVersion() {
25
+ return getCliVersion('git', '--version', output => {
26
+ const match = output.match(/git version ([\d.]+)/);
27
+ return match ? match[1] : null;
28
+ });
29
+ }
30
+ /**
31
+ * Install Git on macOS via Homebrew (when Homebrew is already installed)
32
+ */
33
+ async function installViaHomebrew() {
34
+ console.log(chalk.blue('📦 Installing Git via Homebrew...'));
35
+ try {
36
+ await execAsync('brew install git', {
37
+ timeout: 300000, // 5 minutes
38
+ });
39
+ // Verify installation
40
+ const version = await getGitVersion();
41
+ if (!version) {
42
+ return {
43
+ success: false,
44
+ message: chalk.red('❌ Git installation completed but git command not found'),
45
+ };
46
+ }
47
+ return {
48
+ success: true,
49
+ message: chalk.green(`✅ Git installed successfully (version ${version})!`),
50
+ version,
51
+ };
52
+ }
53
+ catch (error) {
54
+ const errorMsg = error instanceof Error ? error.message : String(error);
55
+ return {
56
+ success: false,
57
+ message: chalk.red('❌ Failed to install Git via Homebrew\n\n') +
58
+ chalk.dim('Error: ') +
59
+ errorMsg +
60
+ '\n\n' +
61
+ chalk.dim('Please install Git manually from: ') +
62
+ chalk.cyan('https://git-scm.com/download/mac'),
63
+ };
64
+ }
65
+ }
66
+ /**
67
+ * Install Git on macOS via Xcode Command Line Tools
68
+ */
69
+ async function installViaXcodeSelect() {
70
+ console.log(chalk.blue('📦 Installing Git via Xcode Command Line Tools...'));
71
+ console.log(chalk.dim('A system dialog will appear - click "Install" to continue.\n'));
72
+ try {
73
+ await execAsync('xcode-select --install', {
74
+ timeout: 600000, // 10 minutes (user interaction required)
75
+ });
76
+ // Verify installation
77
+ const version = await getGitVersion();
78
+ if (!version) {
79
+ return {
80
+ success: false,
81
+ message: chalk.red('❌ Git installation completed but git command not found'),
82
+ };
83
+ }
84
+ return {
85
+ success: true,
86
+ message: chalk.green(`✅ Git installed successfully (version ${version})!`),
87
+ version,
88
+ };
89
+ }
90
+ catch (error) {
91
+ const errorMsg = error instanceof Error ? error.message : String(error);
92
+ return {
93
+ success: false,
94
+ message: chalk.red('❌ Failed to install Git via Xcode Command Line Tools\n\n') +
95
+ chalk.dim('Error: ') +
96
+ errorMsg +
97
+ '\n\n' +
98
+ chalk.dim('Please install Git manually from: ') +
99
+ chalk.cyan('https://git-scm.com/download/mac'),
100
+ };
101
+ }
102
+ }
103
+ /**
104
+ * Install Git on macOS using best available method
105
+ * Strategy: Use Homebrew if installed, otherwise use xcode-select
106
+ */
107
+ async function installGitMacOS() {
108
+ // Check if Homebrew is already installed
109
+ const hasHomebrew = await isHomebrewInstalled();
110
+ if (hasHomebrew) {
111
+ // User already has Homebrew - use it (fast and familiar)
112
+ return installViaHomebrew();
113
+ }
114
+ // No Homebrew - use Xcode Command Line Tools (no need to install Homebrew)
115
+ return installViaXcodeSelect();
116
+ }
117
+ /**
118
+ * Install Git on Windows using winget
119
+ */
120
+ async function installGitWindows() {
121
+ // Check if winget is available
122
+ const hasWinget = await isWingetAvailable();
123
+ if (!hasWinget) {
124
+ return {
125
+ success: false,
126
+ message: chalk.red('❌ winget is not available on this system\n\n') +
127
+ chalk.dim('winget is included in Windows 10 (version 1809+) and Windows 11.\n') +
128
+ chalk.dim('Please install Git manually from: ') +
129
+ chalk.cyan('https://git-scm.com/download/win'),
130
+ };
131
+ }
132
+ console.log(chalk.blue('📦 Installing Git via winget...'));
133
+ try {
134
+ await execAsync('winget install --id Git.Git -e --source winget --silent', {
135
+ timeout: 300000, // 5 minutes
136
+ });
137
+ // Verify installation
138
+ const version = await getGitVersion();
139
+ if (!version) {
140
+ return {
141
+ success: false,
142
+ message: chalk.red('❌ Git installation completed but git command not found'),
143
+ };
144
+ }
145
+ return {
146
+ success: true,
147
+ message: chalk.green(`✅ Git installed successfully (version ${version})!`),
148
+ version,
149
+ };
150
+ }
151
+ catch (error) {
152
+ const errorMsg = error instanceof Error ? error.message : String(error);
153
+ return {
154
+ success: false,
155
+ message: chalk.red('❌ Failed to install Git via winget\n\n') +
156
+ chalk.dim('Error: ') +
157
+ errorMsg +
158
+ '\n\n' +
159
+ chalk.dim('Please install Git manually from: ') +
160
+ chalk.cyan('https://git-scm.com/download/win'),
161
+ };
162
+ }
163
+ }
164
+ /**
165
+ * Install Git on Linux using detected package manager
166
+ */
167
+ async function installGitLinux() {
168
+ const packageManager = await detectLinuxPackageManager();
169
+ if (!packageManager) {
170
+ return {
171
+ success: false,
172
+ message: chalk.red('❌ Could not detect a supported package manager\n\n') +
173
+ chalk.dim('Supported package managers: apt, dnf, yum, pacman\n') +
174
+ chalk.dim('Please install Git manually from: ') +
175
+ chalk.cyan('https://git-scm.com/download/linux'),
176
+ };
177
+ }
178
+ console.log(chalk.blue(`📦 Installing Git via ${packageManager.name}...`));
179
+ console.log(chalk.dim('This may prompt for your sudo password.\n'));
180
+ try {
181
+ let installCommand;
182
+ switch (packageManager.name) {
183
+ case 'apt':
184
+ installCommand = 'sudo apt-get update && sudo apt-get install -y git';
185
+ break;
186
+ case 'dnf':
187
+ installCommand = 'sudo dnf install -y git';
188
+ break;
189
+ case 'yum':
190
+ installCommand = 'sudo yum install -y git';
191
+ break;
192
+ case 'pacman':
193
+ installCommand = 'sudo pacman -S --noconfirm git';
194
+ break;
195
+ default:
196
+ return {
197
+ success: false,
198
+ message: chalk.red(`❌ Unsupported package manager: ${packageManager.name}`),
199
+ };
200
+ }
201
+ await execAsync(installCommand, {
202
+ timeout: 300000, // 5 minutes
203
+ });
204
+ // Verify installation
205
+ const version = await getGitVersion();
206
+ if (!version) {
207
+ return {
208
+ success: false,
209
+ message: chalk.red('❌ Git installation completed but git command not found'),
210
+ };
211
+ }
212
+ return {
213
+ success: true,
214
+ message: chalk.green(`✅ Git installed successfully (version ${version})!`),
215
+ version,
216
+ };
217
+ }
218
+ catch (error) {
219
+ const errorMsg = error instanceof Error ? error.message : String(error);
220
+ return {
221
+ success: false,
222
+ message: chalk.red('❌ Failed to install Git\n\n') +
223
+ chalk.dim('Error: ') +
224
+ errorMsg +
225
+ '\n\n' +
226
+ chalk.dim('Please install Git manually from: ') +
227
+ chalk.cyan('https://git-scm.com/download/linux'),
228
+ };
229
+ }
230
+ }
231
+ /**
232
+ * Install Git on the current platform
233
+ * Auto-detects platform and uses appropriate package manager
234
+ */
235
+ export async function installGit() {
236
+ const platform = process.platform;
237
+ switch (platform) {
238
+ case 'darwin':
239
+ return installGitMacOS();
240
+ case 'win32':
241
+ return installGitWindows();
242
+ case 'linux':
243
+ return installGitLinux();
244
+ default:
245
+ return {
246
+ success: false,
247
+ message: chalk.red(`❌ Unsupported platform: ${platform}\n\n`) +
248
+ chalk.dim('Please install Git manually from: ') +
249
+ chalk.cyan('https://git-scm.com/downloads'),
250
+ };
251
+ }
252
+ }
253
+ /**
254
+ * Get manual installation instructions for the current platform
255
+ */
256
+ export function getManualInstallInstructions() {
257
+ const platform = process.platform;
258
+ switch (platform) {
259
+ case 'darwin':
260
+ return (chalk.yellow('📖 Manual Git Installation (macOS)\n\n') +
261
+ chalk.dim('Option 1 - Xcode Command Line Tools (recommended):\n') +
262
+ chalk.cyan(' xcode-select --install\n\n') +
263
+ chalk.dim('Option 2 - Homebrew (if you use package managers):\n') +
264
+ chalk.cyan(' /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"\n') +
265
+ chalk.cyan(' brew install git\n\n') +
266
+ chalk.dim('Option 3 - Official installer:\n') +
267
+ chalk.cyan(' Download from: https://git-scm.com/download/mac'));
268
+ case 'win32':
269
+ return (chalk.yellow('📖 Manual Git Installation (Windows)\n\n') +
270
+ chalk.dim('Option 1 - winget (Windows 10+):\n') +
271
+ chalk.cyan(' winget install --id Git.Git -e --source winget\n\n') +
272
+ chalk.dim('Option 2 - Official installer:\n') +
273
+ chalk.cyan(' Download from: https://git-scm.com/download/win'));
274
+ case 'linux':
275
+ return (chalk.yellow('📖 Manual Git Installation (Linux)\n\n') +
276
+ chalk.dim('Debian/Ubuntu:\n') +
277
+ chalk.cyan(' sudo apt-get update && sudo apt-get install -y git\n\n') +
278
+ chalk.dim('Fedora/RHEL:\n') +
279
+ chalk.cyan(' sudo dnf install -y git\n\n') +
280
+ chalk.dim('Arch Linux:\n') +
281
+ chalk.cyan(' sudo pacman -S git\n\n') +
282
+ chalk.dim('Or download from: ') +
283
+ chalk.cyan('https://git-scm.com/download/linux'));
284
+ default:
285
+ return (chalk.yellow('📖 Manual Git Installation\n\n') +
286
+ chalk.dim('Download from: ') +
287
+ chalk.cyan('https://git-scm.com/downloads'));
288
+ }
289
+ }
290
+ //# sourceMappingURL=git-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-installer.js","sourceRoot":"","sources":["../../src/utils/git-installer.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,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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"}