@pnpm/plugin-commands-setup 2.0.4 → 2.0.7

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.
@@ -0,0 +1,17 @@
1
+ import PnpmError from '@pnpm/error';
2
+ export declare class BadEnvVariableError extends PnpmError {
3
+ constructor({ envName, wantedValue, currentValue }: {
4
+ envName: string;
5
+ wantedValue: string;
6
+ currentValue: string;
7
+ });
8
+ }
9
+ export declare class BadShellSectionError extends PnpmError {
10
+ current: string;
11
+ wanted: string;
12
+ constructor({ wanted, current, configFile }: {
13
+ wanted: string;
14
+ current: string;
15
+ configFile: string;
16
+ });
17
+ }
package/lib/errors.js ADDED
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BadShellSectionError = exports.BadEnvVariableError = void 0;
7
+ const error_1 = __importDefault(require("@pnpm/error"));
8
+ class BadEnvVariableError extends error_1.default {
9
+ constructor({ envName, wantedValue, currentValue }) {
10
+ super('BAD_ENV_FOUND', `Currently '${envName}' is set to '${wantedValue}'`, {
11
+ hint: `If you want to override the existing ${envName} env variable, use the --force option`,
12
+ });
13
+ }
14
+ }
15
+ exports.BadEnvVariableError = BadEnvVariableError;
16
+ class BadShellSectionError extends error_1.default {
17
+ constructor({ wanted, current, configFile }) {
18
+ super('BAD_SHELL_SECTION', `The config file at "${configFile} already contains a pnpm section but with other configuration`, {
19
+ hint: 'If you want to override the existing configuration section, use the --force option',
20
+ });
21
+ this.current = current;
22
+ this.wanted = wanted;
23
+ }
24
+ }
25
+ exports.BadShellSectionError = BadShellSectionError;
26
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAmC;AAEnC,MAAa,mBAAoB,SAAQ,eAAS;IAChD,YAAa,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkE;QACjH,KAAK,CAAC,eAAe,EAAE,cAAc,OAAO,gBAAgB,WAAW,GAAG,EAAE;YAC1E,IAAI,EAAE,wCAAwC,OAAO,uCAAuC;SAC7F,CAAC,CAAA;IACJ,CAAC;CACF;AAND,kDAMC;AAED,MAAa,oBAAqB,SAAQ,eAAS;IAGjD,YAAa,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAA2D;QACnG,KAAK,CAAC,mBAAmB,EAAE,uBAAuB,UAAU,+DAA+D,EAAE;YAC3H,IAAI,EAAE,oFAAoF;SAC3F,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAVD,oDAUC"}
package/lib/setup.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  export declare const rcOptionsTypes: () => {};
2
- export declare const cliOptionsTypes: () => {};
2
+ export declare const cliOptionsTypes: () => {
3
+ force: BooleanConstructor;
4
+ };
3
5
  export declare const shorthands: {};
4
6
  export declare const commandNames: string[];
5
7
  export declare function help(): string;
6
8
  export declare function handler(opts: {
9
+ force?: boolean;
7
10
  pnpmHomeDir: string;
8
11
  }): Promise<string>;
package/lib/setup.js CHANGED
@@ -11,16 +11,30 @@ const cli_utils_1 = require("@pnpm/cli-utils");
11
11
  const logger_1 = __importDefault(require("@pnpm/logger"));
12
12
  const render_help_1 = __importDefault(require("render-help"));
13
13
  const setupOnWindows_1 = require("./setupOnWindows");
14
+ const errors_1 = require("./errors");
14
15
  const rcOptionsTypes = () => ({});
15
16
  exports.rcOptionsTypes = rcOptionsTypes;
16
- const cliOptionsTypes = () => ({});
17
+ const cliOptionsTypes = () => ({
18
+ force: Boolean,
19
+ });
17
20
  exports.cliOptionsTypes = cliOptionsTypes;
18
21
  exports.shorthands = {};
19
22
  exports.commandNames = ['setup'];
20
23
  function help() {
21
24
  return (0, render_help_1.default)({
22
25
  description: 'Sets up pnpm',
23
- descriptionLists: [],
26
+ descriptionLists: [
27
+ {
28
+ title: 'Options',
29
+ list: [
30
+ {
31
+ description: 'Override the PNPM_HOME env variable in case it already exists',
32
+ name: '--force',
33
+ shortAlias: '-f',
34
+ },
35
+ ],
36
+ },
37
+ ],
24
38
  url: (0, cli_utils_1.docsUrl)('setup'),
25
39
  usages: ['pnpm setup'],
26
40
  });
@@ -47,65 +61,93 @@ function copyCli(currentLocation, targetDir) {
47
61
  fs_1.default.copyFileSync(currentLocation, newExecPath);
48
62
  }
49
63
  async function handler(opts) {
50
- const currentShell = typeof process.env.SHELL === 'string' ? path_1.default.basename(process.env.SHELL) : null;
51
64
  const execPath = getExecPath();
52
65
  if (execPath.match(/\.[cm]?js$/) == null) {
53
66
  copyCli(execPath, opts.pnpmHomeDir);
54
67
  }
55
- const updateOutput = await updateShell(currentShell, opts.pnpmHomeDir);
68
+ const currentShell = detectCurrentShell();
69
+ const updateOutput = await updateShell(currentShell, opts.pnpmHomeDir, { force: opts.force ?? false });
56
70
  return `${updateOutput}
57
71
 
58
72
  Setup complete. Open a new terminal to start using pnpm.`;
59
73
  }
60
74
  exports.handler = handler;
61
- async function updateShell(currentShell, pnpmHomeDir) {
75
+ function detectCurrentShell() {
76
+ if (process.env.ZSH_VERSION)
77
+ return 'zsh';
78
+ if (process.env.BASH_VERSION)
79
+ return 'bash';
80
+ if (process.env.FISH_VERSION)
81
+ return 'fish';
82
+ return typeof process.env.SHELL === 'string' ? path_1.default.basename(process.env.SHELL) : null;
83
+ }
84
+ async function updateShell(currentShell, pnpmHomeDir, opts) {
62
85
  switch (currentShell) {
63
- case 'bash': {
64
- const configFile = path_1.default.join(os_1.default.homedir(), '.bashrc');
65
- return setupShell(configFile, pnpmHomeDir);
66
- }
86
+ case 'bash':
67
87
  case 'zsh': {
68
- const configFile = path_1.default.join(os_1.default.homedir(), '.zshrc');
69
- return setupShell(configFile, pnpmHomeDir);
88
+ return reportShellChange(await setupShell(currentShell, pnpmHomeDir, opts));
70
89
  }
71
90
  case 'fish': {
72
- return setupFishShell(pnpmHomeDir);
91
+ return reportShellChange(await setupFishShell(pnpmHomeDir, opts));
73
92
  }
74
93
  }
75
94
  if (process.platform === 'win32') {
76
- return (0, setupOnWindows_1.setupWindowsEnvironmentPath)(pnpmHomeDir);
95
+ return (0, setupOnWindows_1.setupWindowsEnvironmentPath)(pnpmHomeDir, opts);
77
96
  }
78
97
  return 'Could not infer shell type.';
79
98
  }
80
- async function setupShell(configFile, pnpmHomeDir) {
81
- const content = `export PNPM_HOME="${pnpmHomeDir}"
82
- export PATH="$PNPM_HOME:$PATH"
83
- `;
84
- if (!fs_1.default.existsSync(configFile)) {
85
- await fs_1.default.promises.writeFile(configFile, content, 'utf8');
86
- return `Created ${configFile}`;
87
- }
88
- const configContent = await fs_1.default.promises.readFile(configFile, 'utf8');
89
- if (configContent.includes('PNPM_HOME')) {
90
- return `PNPM_HOME is already in ${configFile}`;
99
+ function reportShellChange({ action, configFile }) {
100
+ switch (action) {
101
+ case 'created': return `Created ${configFile}`;
102
+ case 'added': return `Appended new lines to ${configFile}`;
103
+ case 'updated': return `Replaced configuration in ${configFile}`;
104
+ case 'skipped': return `Configuration already up-to-date in ${configFile}`;
91
105
  }
92
- await fs_1.default.promises.appendFile(configFile, `\n${content}`, 'utf8');
93
- return `Updated ${configFile}`;
94
106
  }
95
- async function setupFishShell(pnpmHomeDir) {
107
+ async function setupShell(shell, pnpmHomeDir, opts) {
108
+ const configFile = path_1.default.join(os_1.default.homedir(), `.${shell}rc`);
109
+ const content = `# pnpm
110
+ export PNPM_HOME="${pnpmHomeDir}"
111
+ export PATH="$PNPM_HOME:$PATH"
112
+ # pnpm end`;
113
+ return {
114
+ action: await updateShellConfig(configFile, content, opts),
115
+ configFile,
116
+ };
117
+ }
118
+ async function setupFishShell(pnpmHomeDir, opts) {
96
119
  const configFile = path_1.default.join(os_1.default.homedir(), '.config/fish/config.fish');
97
- const content = `set -gx PNPM_HOME "${pnpmHomeDir}"
120
+ const content = `# pnpm
121
+ set -gx PNPM_HOME "${pnpmHomeDir}"
98
122
  set -gx PATH "$PNPM_HOME" $PATH
99
- `;
123
+ # pnpm end`;
124
+ return {
125
+ action: await updateShellConfig(configFile, content, opts),
126
+ configFile,
127
+ };
128
+ }
129
+ async function updateShellConfig(configFile, newContent, opts) {
100
130
  if (!fs_1.default.existsSync(configFile)) {
101
- await fs_1.default.promises.writeFile(configFile, content, 'utf8');
102
- return `Created ${configFile}`;
131
+ await fs_1.default.promises.writeFile(configFile, newContent, 'utf8');
132
+ return 'created';
103
133
  }
104
134
  const configContent = await fs_1.default.promises.readFile(configFile, 'utf8');
105
- if (configContent.includes('PNPM_HOME')) {
106
- return `PNPM_HOME is already in ${configFile}`;
135
+ const match = configContent.match(/# pnpm[\s\S]*# pnpm end/);
136
+ if (!match) {
137
+ await fs_1.default.promises.appendFile(configFile, `\n${newContent}`, 'utf8');
138
+ return 'added';
107
139
  }
108
- await fs_1.default.promises.appendFile(configFile, `\n${content}`, 'utf8');
109
- return `Updated ${configFile}`;
140
+ if (match[0] !== newContent) {
141
+ if (!opts.force) {
142
+ throw new errors_1.BadShellSectionError({ current: match[1], wanted: newContent, configFile });
143
+ }
144
+ const newConfigContent = replaceSection(configContent, newContent);
145
+ await fs_1.default.promises.writeFile(configFile, newConfigContent, 'utf8');
146
+ return 'updated';
147
+ }
148
+ return 'skipped';
149
+ }
150
+ function replaceSection(originalContent, newSection) {
151
+ return originalContent.replace(/# pnpm[\s\S]*# pnpm end/g, newSection);
110
152
  }
111
153
  //# sourceMappingURL=setup.js.map
package/lib/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1,3 @@
1
- export declare function setupWindowsEnvironmentPath(pnpmHomeDir: string): Promise<string>;
1
+ export declare function setupWindowsEnvironmentPath(pnpmHomeDir: string, opts: {
2
+ force: boolean;
3
+ }): Promise<string>;
@@ -4,73 +4,103 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.setupWindowsEnvironmentPath = void 0;
7
+ const error_1 = __importDefault(require("@pnpm/error"));
7
8
  const path_1 = require("path");
8
9
  const execa_1 = __importDefault(require("execa"));
9
- async function setupWindowsEnvironmentPath(pnpmHomeDir) {
10
- const pathRegex = /^ {4}(?<name>PATH) {4}(?<type>\w+) {4}(?<data>.*)$/gim;
11
- const pnpmHomeRegex = /^ {4}(?<name>PNPM_HOME) {4}(?<type>\w+) {4}(?<data>.*)$/gim;
12
- const regKey = 'HKEY_CURRENT_USER\\Environment';
13
- const queryResult = await (0, execa_1.default)('reg', ['query', regKey]);
14
- if (queryResult.failed) {
15
- return 'Win32 registry environment values could not be retrieved';
10
+ const errors_1 = require("./errors");
11
+ const REG_KEY = 'HKEY_CURRENT_USER\\Environment';
12
+ async function setupWindowsEnvironmentPath(pnpmHomeDir, opts) {
13
+ // Use `chcp` to make `reg` use utf8 encoding for output.
14
+ // Otherwise, the non-ascii characters in the environment variables will become garbled characters.
15
+ const chcpResult = await (0, execa_1.default)('chcp');
16
+ const cpMatch = /\d+/.exec(chcpResult.stdout) ?? [];
17
+ const cpBak = parseInt(cpMatch[0]);
18
+ if (chcpResult.failed || !(cpBak > 0)) {
19
+ return `exec chcp failed: ${cpBak}, ${chcpResult.stderr}`;
16
20
  }
17
- const queryOutput = queryResult.stdout;
18
- const pathValueMatch = [...queryOutput.matchAll(pathRegex)];
19
- const homeValueMatch = [...queryOutput.matchAll(pnpmHomeRegex)];
20
- let commitNeeded = false;
21
- let homeDir = pnpmHomeDir;
21
+ await (0, execa_1.default)('chcp', ['65001']);
22
+ try {
23
+ return await _setupWindowsEnvironmentPath(path_1.win32.normalize(pnpmHomeDir), opts);
24
+ }
25
+ finally {
26
+ await (0, execa_1.default)('chcp', [cpBak.toString()]);
27
+ }
28
+ }
29
+ exports.setupWindowsEnvironmentPath = setupWindowsEnvironmentPath;
30
+ async function _setupWindowsEnvironmentPath(pnpmHomeDir, opts) {
31
+ const registryOutput = await getRegistryOutput();
22
32
  const logger = [];
23
- if (homeValueMatch.length === 1) {
24
- homeDir = homeValueMatch[0].groups.data;
25
- logger.push(`Currently 'PNPM_HOME' is set to '${homeDir}'`);
33
+ logger.push(logEnvUpdate(await updateEnvVariable(registryOutput, 'PNPM_HOME', pnpmHomeDir, opts), 'PNPM_HOME'));
34
+ logger.push(logEnvUpdate(await prependToPath(registryOutput, '%PNPM_HOME%'), 'Path'));
35
+ return logger.join('\n');
36
+ }
37
+ function logEnvUpdate(envUpdateResult, envName) {
38
+ switch (envUpdateResult) {
39
+ case 'skipped': return `${envName} was already up-to-date`;
40
+ case 'updated': return `${envName} was updated`;
26
41
  }
27
- else {
28
- logger.push(`Setting 'PNPM_HOME' to value '${homeDir}'`);
29
- const addResult = await (0, execa_1.default)('reg', ['add', regKey, '/v', 'PNPM_HOME', '/t', 'REG_EXPAND_SZ', '/d', homeDir, '/f']);
30
- if (addResult.failed) {
31
- logger.push(`\t${addResult.stderr}`);
32
- }
33
- else {
34
- commitNeeded = true;
35
- logger.push(`\t${addResult.stdout}`);
42
+ return '';
43
+ }
44
+ async function updateEnvVariable(registryOutput, name, value, opts) {
45
+ const currentValue = await getEnvValueFromRegistry(registryOutput, name);
46
+ if (currentValue && !opts.force) {
47
+ if (currentValue !== value) {
48
+ throw new errors_1.BadEnvVariableError({ envName: name, currentValue, wantedValue: value });
36
49
  }
50
+ return 'skipped';
37
51
  }
38
- if (pathValueMatch.length === 1) {
39
- const pathData = pathValueMatch[0].groups.data;
40
- if (pathData == null || pathData.trim() === '') {
41
- logger.push('Current PATH is empty. No changes to this environment variable are applied');
42
- }
43
- else {
44
- const homeDirPath = path_1.win32.parse(path_1.win32.normalize(homeDir));
45
- if (pathData
46
- .split(path_1.win32.delimiter)
47
- .map(p => path_1.win32.normalize(p))
48
- .map(p => path_1.win32.parse(p))
49
- .map(p => `${p.dir}${path_1.win32.sep}${p.base}`.toUpperCase())
50
- .filter(p => p !== '')
51
- .includes(`${homeDirPath.dir}${path_1.win32.sep}${homeDirPath.base}`.toUpperCase())) {
52
- logger.push('PATH already contains PNPM_HOME');
53
- }
54
- else {
55
- logger.push('Updating PATH');
56
- const addResult = await (0, execa_1.default)('reg', ['add', regKey, '/v', pathValueMatch[0].groups.name, '/t', 'REG_EXPAND_SZ', '/d', `${homeDir}${path_1.win32.delimiter}${pathData}`, '/f']);
57
- if (addResult.failed) {
58
- logger.push(`\t${addResult.stderr}`);
59
- }
60
- else {
61
- commitNeeded = true;
62
- logger.push(`\t${addResult.stdout}`);
63
- }
64
- }
65
- }
52
+ else {
53
+ await setEnvVarInRegistry(name, value);
54
+ return 'updated';
55
+ }
56
+ }
57
+ async function prependToPath(registryOutput, prependDir) {
58
+ const pathData = await getEnvValueFromRegistry(registryOutput, 'Path');
59
+ if (pathData === undefined || pathData == null || pathData.trim() === '') {
60
+ throw new error_1.default('NO_PATH', '"Path" environment variable is not found in the registry');
61
+ }
62
+ else if (pathData.split(path_1.win32.delimiter).includes(prependDir)) {
63
+ return 'skipped';
66
64
  }
67
65
  else {
68
- logger.push('Current PATH is not set. No changes to this environment variable are applied');
66
+ const newPathValue = `${prependDir}${path_1.win32.delimiter}${pathData}`;
67
+ await setEnvVarInRegistry('Path', newPathValue);
68
+ return 'updated';
69
69
  }
70
- if (commitNeeded) {
71
- await (0, execa_1.default)('setx', ['PNPM_HOME', homeDir]);
70
+ }
71
+ // `windowsHide` in `execa` is true by default, which will cause `chcp` to have no effect.
72
+ const EXEC_OPTS = { windowsHide: false };
73
+ /**
74
+ * We read all the registry values and then pick the keys that we need.
75
+ * This is done because if we would try to pick a key that is not in the registry, the command would fail.
76
+ * And it is hard to identify the real cause of the command failure.
77
+ */
78
+ async function getRegistryOutput() {
79
+ try {
80
+ const queryResult = await (0, execa_1.default)('reg', ['query', REG_KEY], EXEC_OPTS);
81
+ return queryResult.stdout;
82
+ }
83
+ catch (err) { // eslint-disable-line
84
+ throw new error_1.default('REG_READ', 'win32 registry environment values could not be retrieved');
72
85
  }
73
- return logger.join('\n');
74
86
  }
75
- exports.setupWindowsEnvironmentPath = setupWindowsEnvironmentPath;
87
+ async function getEnvValueFromRegistry(registryOutput, envVarName) {
88
+ const regexp = new RegExp(`^ {4}(?<name>${envVarName}) {4}(?<type>\\w+) {4}(?<data>.*)$`, 'gim');
89
+ const match = Array.from(registryOutput.matchAll(regexp))[0];
90
+ return match?.groups.data;
91
+ }
92
+ async function setEnvVarInRegistry(envVarName, envVarValue) {
93
+ try {
94
+ await (0, execa_1.default)('reg', ['add', REG_KEY, '/v', envVarName, '/t', 'REG_EXPAND_SZ', '/d', envVarValue, '/f'], EXEC_OPTS);
95
+ }
96
+ catch (err) { // eslint-disable-line
97
+ throw new error_1.default('FAILED_SET_ENV', `Failed to set "${envVarName}" to "${envVarValue}": ${err.stderr}`);
98
+ }
99
+ // When setting environment variables through the registry, they will not be recognized immediately.
100
+ // There is a workaround though, to set at least one environment variable with `setx`.
101
+ // We have some redundancy here because we run it for each env var.
102
+ // It would be enough also to run it only for the last changed env var.
103
+ // Read more at: https://bit.ly/39OlQnF
104
+ await (0, execa_1.default)('setx', [envVarName, envVarValue], EXEC_OPTS);
105
+ }
76
106
  //# sourceMappingURL=setupOnWindows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupOnWindows.js","sourceRoot":"","sources":["../src/setupOnWindows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setupOnWindows.js","sourceRoot":"","sources":["../src/setupOnWindows.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnpm/plugin-commands-setup",
3
- "version": "2.0.4",
3
+ "version": "2.0.7",
4
4
  "description": "pnpm commands for setting up pnpm",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -23,7 +23,8 @@
23
23
  },
24
24
  "homepage": "https://github.com/pnpm/pnpm/blob/main/packages/plugin-commands-setup#readme",
25
25
  "dependencies": {
26
- "@pnpm/cli-utils": "0.7.4",
26
+ "@pnpm/cli-utils": "0.7.6",
27
+ "@pnpm/error": "3.0.1",
27
28
  "execa": "npm:safe-execa@^0.1.1",
28
29
  "render-help": "^1.0.1"
29
30
  },
@@ -33,7 +34,7 @@
33
34
  },
34
35
  "devDependencies": {
35
36
  "@pnpm/logger": "^4.0.0",
36
- "@pnpm/plugin-commands-setup": "2.0.4",
37
+ "@pnpm/plugin-commands-setup": "2.0.7",
37
38
  "@pnpm/prepare": "0.0.40"
38
39
  },
39
40
  "exports": {