@ryuyx/pvm 0.0.1 → 0.0.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.
package/README.md CHANGED
@@ -94,9 +94,33 @@ pvm config reset
94
94
 
95
95
  ## Shell Integration
96
96
 
97
- Since Node.js runs in a subprocess and cannot modify the parent shell's environment, you need to copy and run the commands shown by `proxy on` and `proxy off`.
97
+ Since Node.js runs in a subprocess and cannot modify the parent shell's environment, you have the following options:
98
98
 
99
- ### Option 1: Manual (Recommended for first-time users)
99
+ ### Option 1: Automatic Installation (Recommended)
100
+
101
+ Simply run the install command to automatically add shell integration:
102
+
103
+ ```bash
104
+ pvm install
105
+ ```
106
+
107
+ This will:
108
+ - Detect your shell type (Bash, Zsh, or PowerShell)
109
+ - Add the integration function to your shell config file
110
+ - Enable `pvm on` and `pvm off` to work automatically
111
+
112
+ Then reload your shell:
113
+ ```bash
114
+ source ~/.bashrc # or ~/.zshrc for Zsh
115
+ # Or simply restart your terminal
116
+ ```
117
+
118
+ To uninstall:
119
+ ```bash
120
+ pvm uninstall
121
+ ```
122
+
123
+ ### Option 2: Manual Copy-Paste (Simple)
100
124
 
101
125
  ```bash
102
126
  # 1. Run this to see the commands
@@ -108,9 +132,9 @@ export https_proxy="http://127.0.0.1:7890"
108
132
  # ... etc
109
133
  ```
110
134
 
111
- ### Option 2: Shell Function (Advanced)
135
+ ### Option 3: Manual Shell Function (Advanced)
112
136
 
113
- Add this to your shell profile for automatic execution:
137
+ If you prefer to add the function manually, add this to your shell profile:
114
138
 
115
139
  **For Bash/Zsh** (~/.bashrc or ~/.zshrc):
116
140
  ```bash
@@ -180,6 +204,8 @@ Config is stored at:
180
204
  | `pvm off` | Display commands to disable proxy |
181
205
  | `pvm list` | Show configuration and status |
182
206
  | `pvm set <url>` | Set proxy URL |
207
+ | `pvm install` | Auto-install shell integration |
208
+ | `pvm uninstall` | Remove shell integration |
183
209
  | `pvm config show` | Show configuration |
184
210
  | `pvm config set <key> <value>` | Set config value |
185
211
  | `pvm config add no-proxy <item>` | Add to NO_PROXY list |
@@ -0,0 +1,3 @@
1
+ export declare function handleInstall(): void;
2
+ export declare function handleUninstall(): void;
3
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAuFA,wBAAgB,aAAa,SA8D5B;AAED,wBAAgB,eAAe,SAgG9B"}
@@ -0,0 +1,210 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ import { execSync } from 'child_process';
5
+ import chalk from 'chalk';
6
+ const BASH_FUNCTION = `
7
+ # pvm - Proxy Manager shell integration
8
+ pvm() {
9
+ if [ "$1" = "on" ]; then
10
+ eval "$(command pvm on 2>/dev/null | grep -E '^(export|unset)')"
11
+ echo "✓ Proxy enabled"
12
+ elif [ "$1" = "off" ]; then
13
+ eval "$(command pvm off 2>/dev/null | grep -E '^(export|unset)')"
14
+ echo "✗ Proxy disabled"
15
+ else
16
+ command pvm "$@"
17
+ fi
18
+ }
19
+ `;
20
+ const ZSH_FUNCTION = BASH_FUNCTION; // Same as Bash
21
+ const POWERSHELL_FUNCTION = `
22
+ # pvm - Proxy Manager shell integration
23
+ function pvm {
24
+ if ($args[0] -eq "on") {
25
+ $commands = & (Get-Command pvm -CommandType Application).Source on 2>$null | Select-String '^\\$env:|^Remove-Item'
26
+ $commands | ForEach-Object { Invoke-Expression $_ }
27
+ Write-Host "✓ Proxy enabled" -ForegroundColor Green
28
+ } elseif ($args[0] -eq "off") {
29
+ $commands = & (Get-Command pvm -CommandType Application).Source off 2>$null | Select-String '^\\$env:|^Remove-Item'
30
+ $commands | ForEach-Object { Invoke-Expression $_ }
31
+ Write-Host "✗ Proxy disabled" -ForegroundColor Red
32
+ } else {
33
+ & (Get-Command pvm -CommandType Application).Source @args
34
+ }
35
+ }
36
+ `;
37
+ function detectShell() {
38
+ const homeDir = os.homedir();
39
+ // Check SHELL environment variable (Unix-like systems)
40
+ const shellEnv = process.env.SHELL || '';
41
+ if (shellEnv.includes('zsh')) {
42
+ return { shell: 'zsh', configFile: path.join(homeDir, '.zshrc') };
43
+ }
44
+ else if (shellEnv.includes('bash')) {
45
+ return { shell: 'bash', configFile: path.join(homeDir, '.bashrc') };
46
+ }
47
+ else if (os.platform() === 'win32') {
48
+ // PowerShell on Windows
49
+ try {
50
+ const profilePath = execSync('powershell -NoProfile -Command "echo $PROFILE"', { encoding: 'utf-8' }).trim();
51
+ return { shell: 'powershell', configFile: profilePath };
52
+ }
53
+ catch (error) {
54
+ console.error(chalk.red('Failed to detect PowerShell profile path'));
55
+ return null;
56
+ }
57
+ }
58
+ // Default to bash if shell is not detected
59
+ return { shell: 'bash', configFile: path.join(homeDir, '.bashrc') };
60
+ }
61
+ function getShellFunction(shell) {
62
+ switch (shell) {
63
+ case 'zsh':
64
+ return ZSH_FUNCTION;
65
+ case 'bash':
66
+ return BASH_FUNCTION;
67
+ case 'powershell':
68
+ return POWERSHELL_FUNCTION;
69
+ default:
70
+ return BASH_FUNCTION;
71
+ }
72
+ }
73
+ function isAlreadyInstalled(configFile) {
74
+ if (!fs.existsSync(configFile)) {
75
+ return false;
76
+ }
77
+ const content = fs.readFileSync(configFile, 'utf-8');
78
+ return content.includes('# pvm - Proxy Manager shell integration');
79
+ }
80
+ export function handleInstall() {
81
+ console.log(chalk.blue.bold('🔧 Installing pvm shell integration...\n'));
82
+ const detected = detectShell();
83
+ if (!detected) {
84
+ console.error(chalk.red('✗ Could not detect shell type'));
85
+ console.log(chalk.yellow('\nPlease manually add the shell function to your shell configuration file.'));
86
+ console.log(chalk.cyan('\nSee documentation: https://github.com/ryuyx/pvm#shell-integration'));
87
+ process.exit(1);
88
+ }
89
+ const { shell, configFile } = detected;
90
+ console.log(chalk.gray(`Detected shell: ${shell}`));
91
+ console.log(chalk.gray(`Config file: ${configFile}\n`));
92
+ // Check if already installed
93
+ if (isAlreadyInstalled(configFile)) {
94
+ console.log(chalk.yellow('⚠ Shell integration is already installed!'));
95
+ console.log(chalk.gray(`Found in: ${configFile}\n`));
96
+ console.log(chalk.cyan('To reinstall, please remove the existing function first.'));
97
+ return;
98
+ }
99
+ // Ensure config file directory exists (for PowerShell on Windows)
100
+ const configDir = path.dirname(configFile);
101
+ if (!fs.existsSync(configDir)) {
102
+ fs.mkdirSync(configDir, { recursive: true });
103
+ }
104
+ // Get the shell function
105
+ const shellFunction = getShellFunction(shell);
106
+ // Append to config file
107
+ try {
108
+ const separator = '\n' + '='.repeat(60) + '\n';
109
+ const content = fs.existsSync(configFile) ? fs.readFileSync(configFile, 'utf-8') : '';
110
+ const newContent = content + separator + shellFunction;
111
+ fs.writeFileSync(configFile, newContent, 'utf-8');
112
+ console.log(chalk.green('✓ Shell integration installed successfully!\n'));
113
+ console.log(chalk.cyan('To activate the changes, run:'));
114
+ if (shell === 'powershell') {
115
+ console.log(chalk.white(` . $PROFILE`));
116
+ }
117
+ else {
118
+ console.log(chalk.white(` source ${configFile}`));
119
+ }
120
+ console.log(chalk.gray('\nOr restart your terminal.\n'));
121
+ console.log(chalk.cyan('Now you can use:'));
122
+ console.log(chalk.white(' pvm on # Automatically enables proxy'));
123
+ console.log(chalk.white(' pvm off # Automatically disables proxy'));
124
+ }
125
+ catch (error) {
126
+ console.error(chalk.red('✗ Failed to write to config file:'), error);
127
+ process.exit(1);
128
+ }
129
+ }
130
+ export function handleUninstall() {
131
+ console.log(chalk.blue.bold('🔧 Uninstalling pvm shell integration...\n'));
132
+ const detected = detectShell();
133
+ if (!detected) {
134
+ console.error(chalk.red('✗ Could not detect shell type'));
135
+ process.exit(1);
136
+ }
137
+ const { shell, configFile } = detected;
138
+ if (!fs.existsSync(configFile)) {
139
+ console.log(chalk.yellow('⚠ Config file does not exist'));
140
+ return;
141
+ }
142
+ const content = fs.readFileSync(configFile, 'utf-8');
143
+ if (!isAlreadyInstalled(configFile)) {
144
+ console.log(chalk.yellow('⚠ Shell integration is not installed'));
145
+ return;
146
+ }
147
+ // Find the start and end of the pvm block
148
+ const lines = content.split('\n');
149
+ let startIndex = -1;
150
+ let endIndex = -1;
151
+ // Find start (look for separator before comment)
152
+ for (let i = 0; i < lines.length; i++) {
153
+ if (lines[i].includes('# pvm - Proxy Manager shell integration')) {
154
+ startIndex = i;
155
+ // Look back for empty line before comment
156
+ if (i > 0 && lines[i - 1].trim() === '') {
157
+ startIndex = i - 1;
158
+ // Look back for separator before empty line
159
+ if (i > 1 && lines[i - 2].match(/^=+$/)) {
160
+ startIndex = i - 2;
161
+ // Look back for empty line before separator
162
+ if (i > 2 && lines[i - 3].trim() === '') {
163
+ startIndex = i - 3;
164
+ }
165
+ }
166
+ }
167
+ break;
168
+ }
169
+ }
170
+ if (startIndex === -1) {
171
+ console.log(chalk.yellow('⚠ Could not find pvm shell integration'));
172
+ return;
173
+ }
174
+ // Find end (look for closing brace of pvm function)
175
+ // For PowerShell: closing brace at same indentation level
176
+ // For Bash/Zsh: closing brace at start of line
177
+ for (let i = startIndex; i < lines.length; i++) {
178
+ const line = lines[i];
179
+ // Match closing brace that's either at column 0 or has only whitespace before it
180
+ if (line.match(/^}\s*$/) && i > startIndex) {
181
+ endIndex = i;
182
+ break;
183
+ }
184
+ }
185
+ if (endIndex === -1) {
186
+ console.log(chalk.yellow('⚠ Could not find end of pvm function'));
187
+ return;
188
+ }
189
+ // Skip any trailing empty lines after the closing brace
190
+ while (endIndex + 1 < lines.length && lines[endIndex + 1].trim() === '') {
191
+ endIndex++;
192
+ }
193
+ // Remove the block
194
+ const newLines = [
195
+ ...lines.slice(0, startIndex),
196
+ ...lines.slice(endIndex + 1)
197
+ ];
198
+ // Write back
199
+ fs.writeFileSync(configFile, newLines.join('\n'), 'utf-8');
200
+ console.log(chalk.green('✓ Shell integration uninstalled successfully!\n'));
201
+ console.log(chalk.cyan('To apply changes, run:'));
202
+ if (shell === 'powershell') {
203
+ console.log(chalk.white(` . $PROFILE`));
204
+ }
205
+ else {
206
+ console.log(chalk.white(` source ${configFile}`));
207
+ }
208
+ console.log(chalk.gray('\nOr restart your terminal.'));
209
+ }
210
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ import { handleOff } from './commands/off.js';
6
6
  import { handleList } from './commands/list.js';
7
7
  import { handleSet } from './commands/set.js';
8
8
  import { handleConfig } from './commands/config.js';
9
+ import { handleInstall, handleUninstall } from './commands/install.js';
9
10
  import { getProxyStatus } from './core/proxy.js';
10
11
  const program = new Command();
11
12
  program
@@ -79,6 +80,20 @@ configCmd
79
80
  .action(() => {
80
81
  handleConfig('reset');
81
82
  });
83
+ // pvm install
84
+ program
85
+ .command('install')
86
+ .description('Install shell integration (auto-enable/disable proxy)')
87
+ .action(() => {
88
+ handleInstall();
89
+ });
90
+ // pvm uninstall
91
+ program
92
+ .command('uninstall')
93
+ .description('Uninstall shell integration')
94
+ .action(() => {
95
+ handleUninstall();
96
+ });
82
97
  // Default action (no command)
83
98
  program.action(() => {
84
99
  const status = getProxyStatus();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryuyx/pvm",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Cross-platform CLI tool for managing proxy environment variables",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -26,9 +26,6 @@
26
26
  ],
27
27
  "author": "Liu Yuxuan <768442726@qq.com>",
28
28
  "license": "MIT",
29
- "publishConfig": {
30
- "access": "public"
31
- },
32
29
  "repository": {
33
30
  "type": "git",
34
31
  "url": "git+https://github.com/ryuyx/pvm.git"