@@ -4,39 +4,53 @@ import { encodeUri } from "./strings";
44import type { Package } from "../types/package" ;
55import { detectIcon } from "./icons" ;
66
7- const detectPackageManager = ( config : Config , visibility : string ) : string => {
7+ const command = ( manager : string , dev : boolean , global : boolean ) : string => {
8+ switch ( manager ) {
9+ case "composer" :
10+ return `composer${ global ? " global" : "" } require${ dev ? " --dev" : "" } ` ;
11+ case "npm" :
12+ return `npm install${ global ? " -g" : "" } ${ dev ? " -D" : "" } ` ;
13+ case "yarn" :
14+ return `yarn${ global ? " global" : "" } add${ dev ? " -D" : "" } ` ;
15+ default :
16+ return manager ;
17+ }
18+ } ;
19+
20+ const detectPackageManager = ( config : Config ) : string => {
821 if ( hasComposer ( config ) ) {
9- return ` composer${ visibility } require` ;
22+ return " composer" ;
1023 }
1124
1225 if ( hasNpm ( config ) ) {
13- return ` npm${ visibility } install` ;
26+ return " npm" ;
1427 }
1528
1629 if ( hasYarn ( config ) ) {
17- return ` yarn${ visibility } add` ;
30+ return " yarn" ;
1831 }
1932
20- return "" ;
33+ return "none " ;
2134} ;
2235
2336const packageManager = ( config : Config ) : string => {
24- const visibility = config . image . parameters . packageGlobal ? " global" : "" ;
37+ const global : boolean = config . image . parameters . packageGlobal ;
38+ const dev : boolean = config . image . parameters . packageDev ;
39+ let name : string = config . image . parameters . packageManager ;
2540
26- switch ( config . image . parameters . packageManager ) {
27- case "composer" :
28- return `composer${ visibility } require` ;
29- case "npm" :
30- return `npm${ visibility } install` ;
31- case "yarn" :
32- return `yarn${ visibility } add` ;
33- case "auto" :
34- return detectPackageManager ( config , visibility ) ;
35- case "none" :
36- return "" ;
37- default :
38- return config . image . parameters . packageManager ;
41+ if ( name === "none" ) {
42+ return "" ;
43+ }
44+
45+ if ( name === "auto" ) {
46+ name = detectPackageManager ( config ) ;
47+ }
48+
49+ if ( [ "composer" , "npm" , "yarn" ] . includes ( name ) ) {
50+ return command ( name , dev , global ) ;
3951 }
52+
53+ return config . image . parameters . packageManager . trim ( ) ;
4054} ;
4155
4256const packageName = ( image : ImageParameters ) : string => {
0 commit comments