@@ -12,14 +12,14 @@ import {
12
12
import shellExec from "shell-exec" ;
13
13
import ora from "ora" ;
14
14
import { TOOL_CONFIG } from "@/const/setup" ;
15
+ import picocolors from "picocolors" ;
15
16
16
17
/**
17
18
* Check to see which debian/ubuntu dependencies
18
19
*/
19
- export async function checkDebianDependenciesInstalled (
20
- exitWhenMissing : boolean = true ,
21
- printInstallCommand : boolean = true ,
22
- ) : Promise < string [ ] | void > {
20
+ export async function checkDebianDependenciesInstalled ( ) : Promise <
21
+ string [ ] | void
22
+ > {
23
23
const deps : string [ ] = [
24
24
"build-essential" ,
25
25
"pkg-config" ,
@@ -63,19 +63,6 @@ export async function checkDebianDependenciesInstalled(
63
63
} ) ;
64
64
65
65
if ( missingDeps . length == 0 ) return ;
66
-
67
- if ( printInstallCommand ) {
68
- console . log (
69
- "sudo apt update && sudo apt install -y" ,
70
- missingDeps . join ( " " ) ,
71
- ) ;
72
- }
73
-
74
- if ( exitWhenMissing ) {
75
- console . error ( "Missing dependencies:" , missingDeps . join ( " " ) ) ;
76
- process . exit ( 0 ) ;
77
- }
78
-
79
66
return missingDeps ;
80
67
}
81
68
@@ -93,12 +80,21 @@ export async function installRust({ version }: InstallCommandPropsBase = {}) {
93
80
// if the user's system does not have `apt`, skip this check
94
81
if ( os == "linux" && ( await checkCommand ( `apt --version` ) ) ) {
95
82
spinner . text = `Checking for required linux dependencies` ;
96
- const missingDeps = await checkDebianDependenciesInstalled ( true , true ) ;
83
+ const missingDeps = await checkDebianDependenciesInstalled ( ) ;
97
84
if ( missingDeps && missingDeps . length > 0 ) {
98
- throw (
99
- `Your system is missing required system dependencies: ` +
100
- missingDeps . join ( " " )
85
+ spinner . fail (
86
+ picocolors . red ( `Missing dependencies: ${ missingDeps . join ( " " ) } ` ) ,
87
+ ) ;
88
+
89
+ console . log (
90
+ "Install the missing dependencies using the following command:" ,
101
91
) ;
92
+ console . log (
93
+ "sudo apt update && sudo apt install -y" ,
94
+ missingDeps . join ( " " ) ,
95
+ ) ;
96
+
97
+ process . exit ( 0 ) ;
102
98
}
103
99
}
104
100
@@ -129,11 +125,11 @@ export async function installRust({ version }: InstallCommandPropsBase = {}) {
129
125
spinner . succeed ( `rust ${ installedVersion } installed` ) ;
130
126
return installedVersion ;
131
127
} else {
132
- spinner . fail ( "rust failed to install" ) ;
128
+ spinner . fail ( picocolors . red ( "rust failed to install" ) ) ;
133
129
return false ;
134
130
}
135
131
} catch ( err ) {
136
- spinner . fail ( "Unable to install rust" ) ;
132
+ spinner . fail ( picocolors . red ( "Unable to install rust" ) ) ;
137
133
138
134
if ( typeof err == "string" ) console . error ( err ) ;
139
135
else if ( err instanceof Error ) console . error ( err . message ) ;
@@ -187,11 +183,11 @@ export async function installSolana({
187
183
spinner . succeed ( `solana ${ installedVersion } installed` ) ;
188
184
return installedVersion ;
189
185
} else {
190
- spinner . fail ( "solana failed to install" ) ;
186
+ spinner . fail ( picocolors . red ( "solana failed to install" ) ) ;
191
187
return false ;
192
188
}
193
189
} catch ( err ) {
194
- spinner . fail ( "Unable to install the Solana CLI tool suite" ) ;
190
+ spinner . fail ( picocolors . red ( "Unable to install the Solana CLI tool suite" ) ) ;
195
191
if ( typeof err == "string" ) console . error ( err ) ;
196
192
else if ( err instanceof Error ) console . error ( err . message ) ;
197
193
else console . error ( err . message ) ;
@@ -237,11 +233,11 @@ export async function installAnchorVersionManager({
237
233
spinner . succeed ( `avm ${ installedVersion } installed` ) ;
238
234
return installedVersion ;
239
235
} else {
240
- spinner . fail ( "avm failed to install" ) ;
236
+ spinner . fail ( picocolors . red ( "avm failed to install" ) ) ;
241
237
return false ;
242
238
}
243
239
} catch ( err ) {
244
- spinner . fail ( "Unable to install avm" ) ;
240
+ spinner . fail ( picocolors . red ( "Unable to install avm" ) ) ;
245
241
if ( typeof err == "string" ) console . error ( err ) ;
246
242
else if ( err instanceof Error ) console . error ( err . message ) ;
247
243
else console . error ( err . message ) ;
@@ -318,11 +314,11 @@ export async function installAnchorUsingAvm({
318
314
spinner . succeed ( `anchor ${ installedVersion } installed using avm` ) ;
319
315
return installedVersion ;
320
316
} else {
321
- spinner . fail ( "anchor failed to install" ) ;
317
+ spinner . fail ( picocolors . red ( "anchor failed to install" ) ) ;
322
318
return false ;
323
319
}
324
320
} catch ( err ) {
325
- spinner . fail ( "Unable to install anchor using avm" ) ;
321
+ spinner . fail ( picocolors . red ( "Unable to install anchor using avm" ) ) ;
326
322
if ( typeof err == "string" ) console . error ( err ) ;
327
323
else if ( err instanceof Error ) console . error ( err . message ) ;
328
324
else console . error ( err . message ) ;
@@ -354,11 +350,11 @@ export async function installYarn({}: InstallCommandPropsBase = {}) {
354
350
spinner . succeed ( `yarn ${ installedVersion } installed` ) ;
355
351
return installedVersion ;
356
352
} else {
357
- spinner . fail ( "yarn package manager failed to install" ) ;
353
+ spinner . fail ( picocolors . red ( "yarn package manager failed to install" ) ) ;
358
354
return false ;
359
355
}
360
356
} catch ( err ) {
361
- spinner . fail ( "Unable to install yarn package manager" ) ;
357
+ spinner . fail ( picocolors . red ( "Unable to install yarn package manager" ) ) ;
362
358
if ( typeof err == "string" ) console . error ( err ) ;
363
359
else if ( err instanceof Error ) console . error ( err . message ) ;
364
360
else console . error ( err . message ) ;
@@ -381,7 +377,7 @@ export async function installMucho({}: InstallCommandPropsBase = {}) {
381
377
return true ;
382
378
}
383
379
384
- spinner . text = `Installing the2 mucho cli` ;
380
+ spinner . text = `Installing the mucho cli` ;
385
381
await shellExec ( `npm install -g mucho` ) ;
386
382
387
383
spinner . text = "Verifying mucho was installed" ;
@@ -390,11 +386,11 @@ export async function installMucho({}: InstallCommandPropsBase = {}) {
390
386
spinner . succeed ( `mucho ${ installedVersion } installed` ) ;
391
387
return installedVersion ;
392
388
} else {
393
- spinner . fail ( "mucho cli failed to install" ) ;
389
+ spinner . fail ( picocolors . red ( "mucho cli failed to install" ) ) ;
394
390
return false ;
395
391
}
396
392
} catch ( err ) {
397
- spinner . fail ( "Unable to install the mucho cli" ) ;
393
+ spinner . fail ( picocolors . red ( "Unable to install the mucho cli" ) ) ;
398
394
if ( typeof err == "string" ) console . error ( err ) ;
399
395
else if ( err instanceof Error ) console . error ( err . message ) ;
400
396
else console . error ( err . message ) ;
@@ -422,7 +418,7 @@ export async function installTrident({
422
418
if ( verifyParentCommand ) {
423
419
const isParentInstalled = await installedToolVersion ( "rust" ) ;
424
420
if ( ! isParentInstalled ) {
425
- spinner . fail ( "Rust/cargo was not found" ) ;
421
+ spinner . fail ( picocolors . red ( "Rust/cargo was not found" ) ) ;
426
422
throw "parent command not found" ;
427
423
}
428
424
}
@@ -447,11 +443,11 @@ export async function installTrident({
447
443
spinner . succeed ( `trident ${ installedVersion } installed` ) ;
448
444
return installedVersion ;
449
445
} else {
450
- spinner . fail ( "trident failed to install" ) ;
446
+ spinner . fail ( picocolors . red ( "trident failed to install" ) ) ;
451
447
return false ;
452
448
}
453
449
} catch ( err ) {
454
- spinner . fail ( "Unable to install the trident fuzzer" ) ;
450
+ spinner . fail ( picocolors . red ( "Unable to install the trident fuzzer" ) ) ;
455
451
if ( typeof err == "string" ) console . error ( err ) ;
456
452
else if ( err instanceof Error ) console . error ( err . message ) ;
457
453
else console . error ( err . message ) ;
@@ -534,11 +530,11 @@ export async function installZest({
534
530
spinner . succeed ( `zest ${ installedVersion } installed` ) ;
535
531
return installedVersion ;
536
532
} else {
537
- spinner . fail ( "zest failed to install" ) ;
533
+ spinner . fail ( picocolors . red ( "zest failed to install" ) ) ;
538
534
return false ;
539
535
}
540
536
} catch ( err ) {
541
- spinner . fail ( "Unable to install zest" ) ;
537
+ spinner . fail ( picocolors . red ( "Unable to install zest" ) ) ;
542
538
if ( typeof err == "string" ) console . error ( err ) ;
543
539
else if ( err instanceof Error ) console . error ( err . message ) ;
544
540
else console . error ( err . message ) ;
@@ -611,11 +607,11 @@ export async function installSolanaVerify({
611
607
await isDockerInstalled ( ) ;
612
608
return installedVersion ;
613
609
} else {
614
- spinner . fail ( "solana-verify failed to install" ) ;
610
+ spinner . fail ( picocolors . red ( "solana-verify failed to install" ) ) ;
615
611
return false ;
616
612
}
617
613
} catch ( err ) {
618
- spinner . fail ( "Unable to install solana-verify" ) ;
614
+ spinner . fail ( picocolors . red ( "Unable to install solana-verify" ) ) ;
619
615
if ( typeof err == "string" ) console . error ( err ) ;
620
616
else if ( err instanceof Error ) console . error ( err . message ) ;
621
617
else console . error ( err . message ) ;
0 commit comments