@lenne.tech/cli-plugin-helper 0.0.11 → 0.0.13

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.
@@ -20,9 +20,9 @@ export declare class Helper {
20
20
  * Get input if not set
21
21
  */
22
22
  getInput(input: string, options?: {
23
+ errorMessage?: string;
23
24
  initial?: string;
24
25
  name?: string;
25
- errorMessage?: string;
26
26
  showError?: boolean;
27
27
  }): Promise<string>;
28
28
  /**
@@ -50,12 +50,12 @@ export declare class Helper {
50
50
  */
51
51
  showMenu(parentCommands?: string, options?: {
52
52
  checkUpdate?: boolean;
53
- level?: number;
54
53
  headline?: string;
54
+ level?: number;
55
55
  }): Promise<void>;
56
56
  }
57
- declare const _default: (toolbox: IHelperExtendedGluegunToolbox) => void;
58
57
  /**
59
58
  * Extend toolbox
60
59
  */
60
+ declare const _default: (toolbox: IHelperExtendedGluegunToolbox) => void;
61
61
  export default _default;
@@ -30,11 +30,11 @@ class Helper {
30
30
  getConfig() {
31
31
  return __awaiter(this, void 0, void 0, function* () {
32
32
  // Toolbox feature
33
- const { config, filesystem, runtime: { brand } } = this.toolbox;
33
+ const { config, filesystem, runtime: { brand }, } = this.toolbox;
34
34
  // Configuration in home directory (~/.brand)
35
35
  let homeDirConfig = {};
36
36
  try {
37
- const homeDirConfigFile = (0, path_1.join)(filesystem.homedir(), '.' + brand);
37
+ const homeDirConfigFile = (0, path_1.join)(filesystem.homedir(), `.${brand}`);
38
38
  if (yield filesystem.existsAsync(homeDirConfigFile)) {
39
39
  homeDirConfig = JSON.parse(yield filesystem.readAsync(homeDirConfigFile));
40
40
  }
@@ -45,7 +45,7 @@ class Helper {
45
45
  // Configuration in current directory (./.brand)
46
46
  let currentDirConfig = {};
47
47
  try {
48
- const currentDirConfigFile = (0, path_1.join)(filesystem.cwd(), '.' + brand);
48
+ const currentDirConfigFile = (0, path_1.join)(filesystem.cwd(), `.${brand}`);
49
49
  if (yield filesystem.existsAsync(currentDirConfigFile)) {
50
50
  currentDirConfig = JSON.parse(yield filesystem.readAsync(currentDirConfigFile));
51
51
  }
@@ -76,20 +76,20 @@ class Helper {
76
76
  const opts = Object.assign({
77
77
  initial: '',
78
78
  name: 'name',
79
- showError: false
79
+ showError: false,
80
80
  }, options);
81
81
  if (!opts.errorMessage) {
82
82
  opts.errorMessage = `You must provide a valid ${opts.name}!`;
83
83
  }
84
84
  // Toolbox features
85
- const { print: { error }, prompt: { ask } } = this.toolbox;
85
+ const { print: { error }, prompt: { ask }, } = this.toolbox;
86
86
  // Get input
87
87
  if (!input || !this.trim(input)) {
88
88
  const answers = yield ask({
89
89
  initial: opts.initial,
90
- type: 'input',
90
+ message: `Enter ${opts.name}`,
91
91
  name: 'input',
92
- message: `Enter ${opts.name}`
92
+ type: 'input',
93
93
  });
94
94
  input = answers.input;
95
95
  if (!input && opts.showError) {
@@ -106,7 +106,7 @@ class Helper {
106
106
  msToMinutesAndSeconds(ms) {
107
107
  const minutes = Math.floor((ms / 1000 / 60) << 0);
108
108
  const seconds = Math.floor((ms / 1000) % 60);
109
- return minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
109
+ return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;
110
110
  }
111
111
  /**
112
112
  * Read a file
@@ -148,7 +148,7 @@ class Helper {
148
148
  updateCli(options) {
149
149
  return __awaiter(this, void 0, void 0, function* () {
150
150
  // Toolbox
151
- const { helper, meta, print: { info, spin, success }, runtime: { brand, defaultPlugin }, system: { run, startTimer } } = this.toolbox;
151
+ const { helper, meta, print: { info, spin, success }, runtime: { brand, defaultPlugin }, system: { run, startTimer }, } = this.toolbox;
152
152
  // Start timer
153
153
  const timer = startTimer();
154
154
  // Get package.json
@@ -157,7 +157,7 @@ class Helper {
157
157
  const opts = Object.assign({
158
158
  global: true,
159
159
  packageName: packageJson ? packageJson.name : '',
160
- showInfos: false
160
+ showInfos: false,
161
161
  }, options);
162
162
  // Run without infos
163
163
  if (!opts.showInfos) {
@@ -182,16 +182,16 @@ class Helper {
182
182
  showMenu(parentCommands, options) {
183
183
  return __awaiter(this, void 0, void 0, function* () {
184
184
  // Toolbox feature
185
- const { config, filesystem: { existsAsync }, meta, runtime: { brand, defaultPlugin } } = this.toolbox;
185
+ const { config, filesystem: { existsAsync }, meta, runtime: { brand, defaultPlugin }, } = this.toolbox;
186
186
  // Process options
187
187
  const { checkUpdate } = Object.assign({
188
- checkUpdate: true
188
+ checkUpdate: true,
189
189
  }, options);
190
190
  // Check for updates
191
- if (checkUpdate && // parameter
192
- config[brand].checkForUpdate && // current configuration
193
- (yield this.getConfig()).checkForUpdate && // extra configuration
194
- !(yield existsAsync((0, path_1.join)(meta.src ? meta.src : defaultPlugin.directory, '..', 'src'))) // not development environment
191
+ if (checkUpdate // parameter
192
+ && config[brand].checkForUpdate // current configuration
193
+ && (yield this.getConfig()).checkForUpdate // extra configuration
194
+ && !(yield existsAsync((0, path_1.join)(meta.src ? meta.src : defaultPlugin.directory, '..', 'src'))) // not development environment
195
195
  ) {
196
196
  config[brand].checkForUpdate = false;
197
197
  // tslint:disable-next-line:no-floating-promises
@@ -1 +1 @@
1
- {"version":3,"file":"helper.extension.js","sourceRoot":"","sources":["../../src/extensions/helper.extension.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAAgD;AAChD,yBAAyB;AACzB,yBAAyB;AACzB,+BAAiC;AAGjC;;GAEG;AACH,MAAa,MAAM;IACjB;;OAEG;IACH,YAAsB,OAAsC;QAAtC,YAAO,GAAP,OAAO,CAA+B;IAAG,CAAC;IAEhE;;OAEG;IACU,SAAS;;YACpB,kBAAkB;YAClB,MAAM,EACJ,MAAM,EACN,UAAU,EACV,OAAO,EAAE,EAAE,KAAK,EAAE,EACnB,GAAG,IAAI,CAAC,OAAO,CAAC;YAEjB,6CAA6C;YAC7C,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI;gBACF,MAAM,iBAAiB,GAAG,IAAA,WAAI,EAAC,UAAU,CAAC,OAAO,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;gBAClE,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE;oBACnD,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;iBAC3E;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,UAAU;aACX;YAED,gDAAgD;YAChD,IAAI,gBAAgB,GAAG,EAAE,CAAC;YAC1B,IAAI;gBACF,MAAM,oBAAoB,GAAG,IAAA,WAAI,EAAC,UAAU,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;gBACjE,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE;oBACtD,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;iBACjF;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,UAAU;aACX;YAED,iFACK,MAAM,CAAC,KAAK,CAAC,GACb,MAAM,CAAC,UAAU,CAAC,IAAA,WAAI,EAAC,GAAG,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,GAChD,aAAa,GACb,MAAM,CAAC,UAAU,CAAC,IAAA,WAAI,EAAC,UAAU,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,GAC7D,gBAAgB,EACnB;QACJ,CAAC;KAAA;IAED;;OAEG;IACI,MAAM,CAAC,GAAG,OAAiB;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACrB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAA,WAAI,EAAC,GAAG,OAAO,CAAC,CAAC,kBAAkB;aACvC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,yBAAyB;aACpD,OAAO,CAAC,SAAS,EAAE,UAAG,CAAC,CAAC,CAAC,6BAA6B;IAC3D,CAAC;IAED;;OAEG;IACU,QAAQ,CACnB,KAAa,EACb,OAKC;;YAED,kBAAkB;YAClB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CACxB;gBACE,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,KAAK;aACjB,EACD,OAAO,CACR,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,CAAC,YAAY,GAAG,4BAA4B,IAAI,CAAC,IAAI,GAAG,CAAC;aAC9D;YAED,mBAAmB;YACnB,MAAM,EACJ,KAAK,EAAE,EAAE,KAAK,EAAE,EAChB,MAAM,EAAE,EAAE,GAAG,EAAE,EAChB,GAAG,IAAI,CAAC,OAAO,CAAC;YAEjB,YAAY;YACZ,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC/B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC;oBACxB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE;iBAC9B,CAAC,CAAC;gBACH,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;gBACtB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;oBAC5B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC1B;aACF;YAED,eAAe;YACf,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAED;;OAEG;IACI,qBAAqB,CAAC,EAAU;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,OAAO,OAAO,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAC7D,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,IAAY;QAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBAC9B,IAAI,GAAG,EAAE;oBACP,MAAM,CAAC,GAAG,CAAC,CAAC;iBACb;qBAAM;oBACL,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;wBAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;qBACtC;yBAAM;wBACL,OAAO,CAAC,IAAI,CAAC,CAAC;qBACf;iBACF;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,KAAU;QACpB,cAAc;QACd,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;YACzB,OAAO,KAAK,CAAC;SACd;QAED,aAAa;QACb,OAAO,KAAK;aACT,QAAQ,EAAE;aACV,IAAI,EAAE;aACN,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACU,SAAS,CAAC,OAAyE;;YAC9F,UAAU;YACV,MAAM,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EACjC,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAC5B,GAAG,IAAI,CAAC,OAAO,CAAC;YAEjB,cAAc;YACd,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;YAE3B,mBAAmB;YACnB,MAAM,WAAW,GAAQ,MAAM,MAAM,CAAC,QAAQ,CAC5C,IAAA,WAAI,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAC1E,CAAC;YAEF,kBAAkB;YAClB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CACxB;gBACE,MAAM,EAAE,IAAI;gBACZ,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAChD,SAAS,EAAE,KAAK;aACjB,EACD,OAAO,CACR,CAAC;YAEF,oBAAoB;YACpB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,OAAO,GAAG,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;aAC3E;YAED,SAAS;YACT,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACtD,MAAM,GAAG,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACzE,UAAU,CAAC,OAAO,EAAE,CAAC;YAErB,oBAAoB;YACpB,MAAM,WAAW,GAAG,IAAI,CAAC,4BAA4B,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACzE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC;YAC3D,WAAW,CAAC,OAAO,EAAE,CAAC;YAEtB,UAAU;YACV,OAAO,CAAC,iBAAiB,OAAO,SAAS,IAAI,CAAC,WAAW,OAAO,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3G,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,CAAC;KAAA;IAED;;OAEG;IACU,QAAQ,CACnB,cAAuB,EACvB,OAIC;;YAED,kBAAkB;YAClB,MAAM,EACJ,MAAM,EACN,UAAU,EAAE,EAAE,WAAW,EAAE,EAC3B,IAAI,EACJ,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAClC,GAAG,IAAI,CAAC,OAAO,CAAC;YAEjB,kBAAkB;YAClB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,CACnC;gBACE,WAAW,EAAE,IAAI;aAClB,EACD,OAAO,CACR,CAAC;YAEF,oBAAoB;YACpB,IACE,WAAW,IAAI,YAAY;gBAC3B,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,IAAI,wBAAwB;gBACxD,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,cAAc,IAAI,sBAAsB;gBACjE,CAAC,CAAC,MAAM,WAAW,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,8BAA8B;cACrH;gBACA,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC;gBAErC,gDAAgD;gBAChD,IAAI;qBACD,cAAc,EAAE;qBAChB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBACf,IAAI,MAAM,EAAE;wBACV,gDAAgD;wBAChD,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;4BAC1B,aAAa;wBACf,CAAC,CAAC,CAAC;qBACJ;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,EAAE;oBACV,aAAa;gBACf,CAAC,CAAC,CAAC;aACN;YAED,WAAW;YACX,MAAM,IAAI,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC;KAAA;CACF;AAnQD,wBAmQC;AAED;;GAEG;AACH,kBAAe,CAAC,OAAsC,EAAE,EAAE;IACxD,OAAO,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC"}
1
+ {"version":3,"file":"helper.extension.js","sourceRoot":"","sources":["../../src/extensions/helper.extension.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,8 @@ export declare class Npm {
16
16
  errorMessage?: string;
17
17
  showError?: boolean;
18
18
  }): Promise<{
19
- path: string;
20
19
  data: any;
20
+ path: string;
21
21
  }>;
22
22
  /**
23
23
  * Set data for package.json
@@ -29,11 +29,16 @@ export declare class Npm {
29
29
  errorMessage?: string;
30
30
  showError?: boolean;
31
31
  }): Promise<string>;
32
+ /**
33
+ * Detect which package manager is used in the project
34
+ */
35
+ detectPackageManager(projectPath: string): 'npm' | 'pnpm' | 'yarn';
32
36
  /**
33
37
  * Install npm packages
34
38
  */
35
39
  install(options?: {
36
40
  cwd?: string;
41
+ detectPackageManager?: boolean;
37
42
  errorMessage?: string;
38
43
  showError?: boolean;
39
44
  }): Promise<boolean>;
@@ -47,8 +52,8 @@ export declare class Npm {
47
52
  showError?: boolean;
48
53
  }): Promise<boolean>;
49
54
  }
50
- declare const _default: (toolbox: IHelperExtendedGluegunToolbox) => void;
51
55
  /**
52
56
  * Extend toolbox
53
57
  */
58
+ declare const _default: (toolbox: IHelperExtendedGluegunToolbox) => void;
54
59
  export default _default;
@@ -26,15 +26,15 @@ class Npm {
26
26
  /**
27
27
  * Get package.json
28
28
  */
29
- getPackageJson(options = {}) {
30
- return __awaiter(this, void 0, void 0, function* () {
29
+ getPackageJson() {
30
+ return __awaiter(this, arguments, void 0, function* (options = {}) {
31
31
  // Toolbox features
32
- const { filesystem, helper, print: { error } } = this.toolbox;
32
+ const { filesystem, helper, print: { error }, } = this.toolbox;
33
33
  // Prepare options
34
34
  const opts = Object.assign({
35
35
  cwd: filesystem.cwd(),
36
36
  errorMessage: 'No package.json found!',
37
- showError: false
37
+ showError: false,
38
38
  }, options);
39
39
  // Find package.json
40
40
  const path = yield find('package.json', opts.cwd);
@@ -42,17 +42,17 @@ class Npm {
42
42
  if (opts.showError) {
43
43
  error(opts.errorMessage);
44
44
  }
45
- return { path: '', data: null };
45
+ return { data: null, path: '' };
46
46
  }
47
47
  // Everything ok
48
- return { path: path, data: yield helper.readFile(path) };
48
+ return { data: yield helper.readFile(path), path };
49
49
  });
50
50
  }
51
51
  /**
52
52
  * Set data for package.json
53
53
  */
54
- setPackageJson(data, options = {}) {
55
- return __awaiter(this, void 0, void 0, function* () {
54
+ setPackageJson(data_1) {
55
+ return __awaiter(this, arguments, void 0, function* (data, options = {}) {
56
56
  if (typeof data === 'object') {
57
57
  data = JSON.stringify(data, null, 2);
58
58
  }
@@ -73,44 +73,75 @@ class Npm {
73
73
  return path;
74
74
  });
75
75
  }
76
+ /**
77
+ * Detect which package manager is used in the project
78
+ */
79
+ detectPackageManager(projectPath) {
80
+ const { filesystem } = this.toolbox;
81
+ // Check for lock files in the project directory
82
+ if (filesystem.exists(`${projectPath}/pnpm-lock.yaml`)) {
83
+ return 'pnpm';
84
+ }
85
+ if (filesystem.exists(`${projectPath}/yarn.lock`)) {
86
+ return 'yarn';
87
+ }
88
+ // Default to npm
89
+ return 'npm';
90
+ }
76
91
  /**
77
92
  * Install npm packages
78
93
  */
79
- install(options = {}) {
80
- return __awaiter(this, void 0, void 0, function* () {
94
+ install() {
95
+ return __awaiter(this, arguments, void 0, function* (options = {}) {
81
96
  // Toolbox features
82
- const { filesystem, system, print: { spin } } = this.toolbox;
97
+ const { filesystem, print: { spin }, system, } = this.toolbox;
83
98
  // Prepare options
84
99
  const opts = Object.assign({
85
100
  cwd: filesystem.cwd(),
101
+ detectPackageManager: true,
86
102
  errorMessage: 'No package.json found!',
87
- showError: false
103
+ showError: false,
88
104
  }, options);
89
105
  // Find package.json
90
106
  const { path } = yield this.getPackageJson(opts);
91
107
  if (!path) {
92
108
  return false;
93
109
  }
94
- // Install npm packages
95
- const npmSpin = spin('Install npm packages');
96
- yield system.run(`cd ${(0, path_1.dirname)(path)} && npm i`);
97
- npmSpin.succeed();
110
+ const projectDir = (0, path_1.dirname)(path);
111
+ const packageManager = opts.detectPackageManager ? this.detectPackageManager(projectDir) : 'npm';
112
+ // Install packages with the appropriate package manager
113
+ const installSpin = spin(`Install packages using ${packageManager}`);
114
+ let installCommand;
115
+ switch (packageManager) {
116
+ case 'pnpm':
117
+ installCommand = 'pnpm install';
118
+ break;
119
+ case 'yarn':
120
+ installCommand = 'yarn install';
121
+ break;
122
+ case 'npm':
123
+ default:
124
+ installCommand = 'npm i';
125
+ break;
126
+ }
127
+ yield system.run(`cd ${projectDir} && ${installCommand}`);
128
+ installSpin.succeed();
98
129
  return true;
99
130
  });
100
131
  }
101
132
  /**
102
133
  * Update package.json
103
134
  */
104
- update(options = {}) {
105
- return __awaiter(this, void 0, void 0, function* () {
135
+ update() {
136
+ return __awaiter(this, arguments, void 0, function* (options = {}) {
106
137
  // Toolbox features
107
- const { filesystem, system, print: { spin } } = this.toolbox;
138
+ const { filesystem, print: { spin }, system, } = this.toolbox;
108
139
  // Prepare options
109
140
  const opts = Object.assign({
110
141
  cwd: filesystem.cwd(),
111
142
  errorMessage: 'No package.json found!',
112
143
  install: false,
113
- showError: false
144
+ showError: false,
114
145
  }, options);
115
146
  // Find package.json
116
147
  const { path } = yield this.getPackageJson(opts);
@@ -125,12 +156,27 @@ class Npm {
125
156
  }
126
157
  // Update package.json
127
158
  const updateSpin = spin('Update package.json');
128
- yield system.run('ncu -u --packageFile ' + path);
159
+ yield system.run(`ncu -u --packageFile ${path}`);
129
160
  updateSpin.succeed();
130
161
  // Install packages
131
162
  if (opts.install) {
132
- const installSpin = spin('Install npm packages');
133
- yield system.run(`cd ${(0, path_1.dirname)(path)} && npm i`);
163
+ const projectDir = (0, path_1.dirname)(path);
164
+ const packageManager = this.detectPackageManager(projectDir);
165
+ const installSpin = spin(`Install packages using ${packageManager}`);
166
+ let installCommand;
167
+ switch (packageManager) {
168
+ case 'pnpm':
169
+ installCommand = 'pnpm install';
170
+ break;
171
+ case 'yarn':
172
+ installCommand = 'yarn install';
173
+ break;
174
+ case 'npm':
175
+ default:
176
+ installCommand = 'npm i';
177
+ break;
178
+ }
179
+ yield system.run(`cd ${projectDir} && ${installCommand}`);
134
180
  installSpin.succeed();
135
181
  }
136
182
  // Success
@@ -1 +1 @@
1
- {"version":3,"file":"npm.extension.js","sourceRoot":"","sources":["../../src/extensions/npm.extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"npm.extension.js","sourceRoot":"","sources":["../../src/extensions/npm.extension.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lenne.tech/cli-plugin-helper",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "description": "Helper plugin for Gluegun CLI Projects",
5
5
  "keywords": [
6
6
  "lenne.Tech",
@@ -28,39 +28,48 @@
28
28
  "compile": "tsc -p .",
29
29
  "coverage": "jest --coverage",
30
30
  "format": "prettier --write 'src/**/*.{js,ts,tsx,json}'",
31
- "lint": "eslint --ext .js,.ts src",
31
+ "lint": "eslint './src/**/*.{ts,js,vue}'",
32
+ "lint:fix": "eslint './src/**/*.{ts,js,vue}' --fix",
32
33
  "prepack": "npm run build",
33
34
  "preversion": "npm run lint",
34
35
  "test": "jest",
35
- "watch": "jest --watch",
36
- "prepare": "husky install"
36
+ "watch": "jest --watch"
37
37
  },
38
38
  "dependencies": {
39
- "@lenne.tech/gluegun-menu": "0.0.6"
39
+ "@lenne.tech/gluegun-menu": "0.0.7"
40
40
  },
41
41
  "devDependencies": {
42
+ "@lenne.tech/eslint-config-ts": "2.1.3",
42
43
  "@lenne.tech/npm-package-helper": "0.0.12",
43
- "@types/jest": "27.4.1",
44
- "@types/node": "16.11.27",
45
- "@typescript-eslint/eslint-plugin": "5.20.0",
46
- "@typescript-eslint/parser": "5.20.0",
47
- "eslint": "8.13.0",
48
- "eslint-config-prettier": "8.5.0",
44
+ "@types/jest": "30.0.0",
45
+ "@types/node": "24.3.0",
46
+ "@typescript-eslint/eslint-plugin": "8.40.0",
47
+ "@typescript-eslint/parser": "8.40.0",
48
+ "eslint": "9.33.0",
49
+ "eslint-config-prettier": "10.1.8",
49
50
  "find-file-up": "2.0.1",
50
- "gluegun": "5.1.2",
51
- "husky": "7.0.4",
52
- "jest": "27.5.1",
53
- "prettier": "2.6.2",
54
- "pretty-quick": "3.1.3",
55
- "rimraf": "3.0.2",
56
- "ts-jest": "27.1.4",
57
- "ts-node": "10.7.0",
58
- "typescript": "4.6.3"
51
+ "gluegun": "5.2.0",
52
+ "husky": "9.1.7",
53
+ "jest": "30.0.5",
54
+ "prettier": "3.6.2",
55
+ "pretty-quick": "4.2.2",
56
+ "rimraf": "6.0.1",
57
+ "ts-jest": "29.4.1",
58
+ "ts-node": "10.9.2",
59
+ "typescript": "5.9.2"
59
60
  },
60
61
  "peerDependencies": {
61
62
  "find-file-up": ">=2",
62
63
  "gluegun": ">=4"
63
64
  },
65
+ "overrides": {
66
+ "apisauce@*": "3.1.1",
67
+ "cross-spawn@*": "7.0.6",
68
+ "ejs@*": "3.1.10",
69
+ "semver@*": "7.7.1",
70
+ "lodash.trim@*": "npm:lodash@4.17.21",
71
+ "lodash.trimend@*": "npm:lodash@4.17.21"
72
+ },
64
73
  "jest": {
65
74
  "preset": "ts-jest",
66
75
  "testEnvironment": "node"
@@ -2,6 +2,7 @@ import { Menu } from '@lenne.tech/gluegun-menu';
2
2
  import * as fs from 'fs';
3
3
  import * as os from 'os';
4
4
  import { join, sep } from 'path';
5
+
5
6
  import { IHelperExtendedGluegunToolbox } from '../interfaces/extended-gluegun-toolbox.interface';
6
7
 
7
8
  /**
@@ -21,13 +22,13 @@ export class Helper {
21
22
  const {
22
23
  config,
23
24
  filesystem,
24
- runtime: { brand }
25
+ runtime: { brand },
25
26
  } = this.toolbox;
26
27
 
27
28
  // Configuration in home directory (~/.brand)
28
29
  let homeDirConfig = {};
29
30
  try {
30
- const homeDirConfigFile = join(filesystem.homedir(), '.' + brand);
31
+ const homeDirConfigFile = join(filesystem.homedir(), `.${brand}`);
31
32
  if (await filesystem.existsAsync(homeDirConfigFile)) {
32
33
  homeDirConfig = JSON.parse(await filesystem.readAsync(homeDirConfigFile));
33
34
  }
@@ -38,7 +39,7 @@ export class Helper {
38
39
  // Configuration in current directory (./.brand)
39
40
  let currentDirConfig = {};
40
41
  try {
41
- const currentDirConfigFile = join(filesystem.cwd(), '.' + brand);
42
+ const currentDirConfigFile = join(filesystem.cwd(), `.${brand}`);
42
43
  if (await filesystem.existsAsync(currentDirConfigFile)) {
43
44
  currentDirConfig = JSON.parse(await filesystem.readAsync(currentDirConfigFile));
44
45
  }
@@ -51,7 +52,7 @@ export class Helper {
51
52
  ...config.loadConfig(join('~', `.${brand}`), brand),
52
53
  ...homeDirConfig,
53
54
  ...config.loadConfig(join(filesystem.cwd(), `.${brand}`), brand),
54
- ...currentDirConfig
55
+ ...currentDirConfig,
55
56
  };
56
57
  }
57
58
 
@@ -73,20 +74,20 @@ export class Helper {
73
74
  public async getInput(
74
75
  input: string,
75
76
  options?: {
77
+ errorMessage?: string;
76
78
  initial?: string;
77
79
  name?: string;
78
- errorMessage?: string;
79
80
  showError?: boolean;
80
- }
81
+ },
81
82
  ) {
82
83
  // Process options
83
84
  const opts = Object.assign(
84
85
  {
85
86
  initial: '',
86
87
  name: 'name',
87
- showError: false
88
+ showError: false,
88
89
  },
89
- options
90
+ options,
90
91
  );
91
92
  if (!opts.errorMessage) {
92
93
  opts.errorMessage = `You must provide a valid ${opts.name}!`;
@@ -95,16 +96,16 @@ export class Helper {
95
96
  // Toolbox features
96
97
  const {
97
98
  print: { error },
98
- prompt: { ask }
99
+ prompt: { ask },
99
100
  } = this.toolbox;
100
101
 
101
102
  // Get input
102
103
  if (!input || !this.trim(input)) {
103
104
  const answers = await ask({
104
105
  initial: opts.initial,
105
- type: 'input',
106
+ message: `Enter ${opts.name}`,
106
107
  name: 'input',
107
- message: `Enter ${opts.name}`
108
+ type: 'input',
108
109
  });
109
110
  input = answers.input;
110
111
  if (!input && opts.showError) {
@@ -122,7 +123,7 @@ export class Helper {
122
123
  public msToMinutesAndSeconds(ms: number) {
123
124
  const minutes = Math.floor((ms / 1000 / 60) << 0);
124
125
  const seconds = Math.floor((ms / 1000) % 60);
125
- return minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
126
+ return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;
126
127
  }
127
128
 
128
129
  /**
@@ -170,7 +171,7 @@ export class Helper {
170
171
  meta,
171
172
  print: { info, spin, success },
172
173
  runtime: { brand, defaultPlugin },
173
- system: { run, startTimer }
174
+ system: { run, startTimer },
174
175
  } = this.toolbox;
175
176
 
176
177
  // Start timer
@@ -178,7 +179,7 @@ export class Helper {
178
179
 
179
180
  // Get package.json
180
181
  const packageJson: any = await helper.readFile(
181
- join(meta.src ? meta.src : defaultPlugin.directory, '..', 'package.json')
182
+ join(meta.src ? meta.src : defaultPlugin.directory, '..', 'package.json'),
182
183
  );
183
184
 
184
185
  // Process options
@@ -186,9 +187,9 @@ export class Helper {
186
187
  {
187
188
  global: true,
188
189
  packageName: packageJson ? packageJson.name : '',
189
- showInfos: false
190
+ showInfos: false,
190
191
  },
191
- options
192
+ options,
192
193
  );
193
194
 
194
195
  // Run without infos
@@ -218,32 +219,32 @@ export class Helper {
218
219
  parentCommands?: string,
219
220
  options?: {
220
221
  checkUpdate?: boolean;
221
- level?: number;
222
222
  headline?: string;
223
- }
223
+ level?: number;
224
+ },
224
225
  ) {
225
226
  // Toolbox feature
226
227
  const {
227
228
  config,
228
229
  filesystem: { existsAsync },
229
230
  meta,
230
- runtime: { brand, defaultPlugin }
231
+ runtime: { brand, defaultPlugin },
231
232
  } = this.toolbox;
232
233
 
233
234
  // Process options
234
235
  const { checkUpdate } = Object.assign(
235
236
  {
236
- checkUpdate: true
237
+ checkUpdate: true,
237
238
  },
238
- options
239
+ options,
239
240
  );
240
241
 
241
242
  // Check for updates
242
243
  if (
243
- checkUpdate && // parameter
244
- config[brand].checkForUpdate && // current configuration
245
- (await this.getConfig()).checkForUpdate && // extra configuration
246
- !(await existsAsync(join(meta.src ? meta.src : defaultPlugin.directory, '..', 'src'))) // not development environment
244
+ checkUpdate // parameter
245
+ && config[brand].checkForUpdate // current configuration
246
+ && (await this.getConfig()).checkForUpdate // extra configuration
247
+ && !(await existsAsync(join(meta.src ? meta.src : defaultPlugin.directory, '..', 'src'))) // not development environment
247
248
  ) {
248
249
  config[brand].checkForUpdate = false;
249
250
 
@@ -1,6 +1,7 @@
1
1
  import * as find from 'find-file-up';
2
2
  import * as fs from 'fs';
3
3
  import { dirname } from 'path';
4
+
4
5
  import { IHelperExtendedGluegunToolbox } from '../interfaces/extended-gluegun-toolbox.interface';
5
6
 
6
7
  /**
@@ -16,13 +17,13 @@ export class Npm {
16
17
  * Get package.json
17
18
  */
18
19
  public async getPackageJson(
19
- options: { cwd?: string; errorMessage?: string; showError?: boolean } = {}
20
- ): Promise<{ path: string; data: any }> {
20
+ options: { cwd?: string; errorMessage?: string; showError?: boolean } = {},
21
+ ): Promise<{ data: any; path: string }> {
21
22
  // Toolbox features
22
23
  const {
23
24
  filesystem,
24
25
  helper,
25
- print: { error }
26
+ print: { error },
26
27
  } = this.toolbox;
27
28
 
28
29
  // Prepare options
@@ -30,9 +31,9 @@ export class Npm {
30
31
  {
31
32
  cwd: filesystem.cwd(),
32
33
  errorMessage: 'No package.json found!',
33
- showError: false
34
+ showError: false,
34
35
  },
35
- options
36
+ options,
36
37
  );
37
38
 
38
39
  // Find package.json
@@ -41,11 +42,11 @@ export class Npm {
41
42
  if (opts.showError) {
42
43
  error(opts.errorMessage);
43
44
  }
44
- return { path: '', data: null };
45
+ return { data: null, path: '' };
45
46
  }
46
47
 
47
48
  // Everything ok
48
- return { path: path, data: await helper.readFile(path) };
49
+ return { data: await helper.readFile(path), path };
49
50
  }
50
51
 
51
52
  /**
@@ -57,7 +58,7 @@ export class Npm {
57
58
  cwd?: string;
58
59
  errorMessage?: string;
59
60
  showError?: boolean;
60
- } = {}
61
+ } = {},
61
62
  ) {
62
63
  if (typeof data === 'object') {
63
64
  data = JSON.stringify(data, null, 2);
@@ -81,25 +82,43 @@ export class Npm {
81
82
  return path;
82
83
  }
83
84
 
85
+ /**
86
+ * Detect which package manager is used in the project
87
+ */
88
+ public detectPackageManager(projectPath: string): 'npm' | 'pnpm' | 'yarn' {
89
+ const { filesystem } = this.toolbox;
90
+
91
+ // Check for lock files in the project directory
92
+ if (filesystem.exists(`${projectPath}/pnpm-lock.yaml`)) {
93
+ return 'pnpm';
94
+ }
95
+ if (filesystem.exists(`${projectPath}/yarn.lock`)) {
96
+ return 'yarn';
97
+ }
98
+ // Default to npm
99
+ return 'npm';
100
+ }
101
+
84
102
  /**
85
103
  * Install npm packages
86
104
  */
87
- public async install(options: { cwd?: string; errorMessage?: string; showError?: boolean } = {}) {
105
+ public async install(options: { cwd?: string; detectPackageManager?: boolean; errorMessage?: string; showError?: boolean } = {}) {
88
106
  // Toolbox features
89
107
  const {
90
108
  filesystem,
109
+ print: { spin },
91
110
  system,
92
- print: { spin }
93
111
  } = this.toolbox;
94
112
 
95
113
  // Prepare options
96
114
  const opts = Object.assign(
97
115
  {
98
116
  cwd: filesystem.cwd(),
117
+ detectPackageManager: true,
99
118
  errorMessage: 'No package.json found!',
100
- showError: false
119
+ showError: false,
101
120
  },
102
- options
121
+ options,
103
122
  );
104
123
 
105
124
  // Find package.json
@@ -108,10 +127,28 @@ export class Npm {
108
127
  return false;
109
128
  }
110
129
 
111
- // Install npm packages
112
- const npmSpin = spin('Install npm packages');
113
- await system.run(`cd ${dirname(path)} && npm i`);
114
- npmSpin.succeed();
130
+ const projectDir = dirname(path);
131
+ const packageManager = opts.detectPackageManager ? this.detectPackageManager(projectDir) : 'npm';
132
+
133
+ // Install packages with the appropriate package manager
134
+ const installSpin = spin(`Install packages using ${packageManager}`);
135
+
136
+ let installCommand: string;
137
+ switch (packageManager) {
138
+ case 'pnpm':
139
+ installCommand = 'pnpm install';
140
+ break;
141
+ case 'yarn':
142
+ installCommand = 'yarn install';
143
+ break;
144
+ case 'npm':
145
+ default:
146
+ installCommand = 'npm i';
147
+ break;
148
+ }
149
+
150
+ await system.run(`cd ${projectDir} && ${installCommand}`);
151
+ installSpin.succeed();
115
152
  return true;
116
153
  }
117
154
 
@@ -124,13 +161,13 @@ export class Npm {
124
161
  errorMessage?: string;
125
162
  install?: boolean;
126
163
  showError?: boolean;
127
- } = {}
164
+ } = {},
128
165
  ) {
129
166
  // Toolbox features
130
167
  const {
131
168
  filesystem,
169
+ print: { spin },
132
170
  system,
133
- print: { spin }
134
171
  } = this.toolbox;
135
172
 
136
173
  // Prepare options
@@ -139,9 +176,9 @@ export class Npm {
139
176
  cwd: filesystem.cwd(),
140
177
  errorMessage: 'No package.json found!',
141
178
  install: false,
142
- showError: false
179
+ showError: false,
143
180
  },
144
- options
181
+ options,
145
182
  );
146
183
 
147
184
  // Find package.json
@@ -159,13 +196,30 @@ export class Npm {
159
196
 
160
197
  // Update package.json
161
198
  const updateSpin = spin('Update package.json');
162
- await system.run('ncu -u --packageFile ' + path);
199
+ await system.run(`ncu -u --packageFile ${path}`);
163
200
  updateSpin.succeed();
164
201
 
165
202
  // Install packages
166
203
  if (opts.install) {
167
- const installSpin = spin('Install npm packages');
168
- await system.run(`cd ${dirname(path)} && npm i`);
204
+ const projectDir = dirname(path);
205
+ const packageManager = this.detectPackageManager(projectDir);
206
+ const installSpin = spin(`Install packages using ${packageManager}`);
207
+
208
+ let installCommand: string;
209
+ switch (packageManager) {
210
+ case 'pnpm':
211
+ installCommand = 'pnpm install';
212
+ break;
213
+ case 'yarn':
214
+ installCommand = 'yarn install';
215
+ break;
216
+ case 'npm':
217
+ default:
218
+ installCommand = 'npm i';
219
+ break;
220
+ }
221
+
222
+ await system.run(`cd ${projectDir} && ${installCommand}`);
169
223
  installSpin.succeed();
170
224
  }
171
225
 
@@ -1,4 +1,5 @@
1
1
  import { GluegunToolbox } from 'gluegun';
2
+
2
3
  import { Helper } from '../extensions/helper.extension';
3
4
  import { Npm } from '../extensions/npm.extension';
4
5