mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-19 06:45:50 +00:00
style: 完成所有文件的lint
This commit is contained in:
@@ -1,53 +1,45 @@
|
||||
import { relative } from 'path'
|
||||
import React from 'react'
|
||||
import { getCwdState } from '../../bootstrap/state.js'
|
||||
import { SandboxSettings } from '../../components/sandbox/SandboxSettings.js'
|
||||
import { color } from '@anthropic/ink'
|
||||
import { getPlatform } from '../../utils/platform.js'
|
||||
import {
|
||||
addToExcludedCommands,
|
||||
SandboxManager,
|
||||
} from '../../utils/sandbox/sandbox-adapter.js'
|
||||
import {
|
||||
getSettings_DEPRECATED,
|
||||
getSettingsFilePathForSource,
|
||||
} from '../../utils/settings/settings.js'
|
||||
import type { ThemeName } from '../../utils/theme.js'
|
||||
import { relative } from 'path';
|
||||
import React from 'react';
|
||||
import { getCwdState } from '../../bootstrap/state.js';
|
||||
import { SandboxSettings } from '../../components/sandbox/SandboxSettings.js';
|
||||
import { color } from '@anthropic/ink';
|
||||
import { getPlatform } from '../../utils/platform.js';
|
||||
import { addToExcludedCommands, SandboxManager } from '../../utils/sandbox/sandbox-adapter.js';
|
||||
import { getSettings_DEPRECATED, getSettingsFilePathForSource } from '../../utils/settings/settings.js';
|
||||
import type { ThemeName } from '../../utils/theme.js';
|
||||
|
||||
export async function call(
|
||||
onDone: (result?: string) => void,
|
||||
_context: unknown,
|
||||
args?: string,
|
||||
): Promise<React.ReactNode | null> {
|
||||
const settings = getSettings_DEPRECATED()
|
||||
const themeName: ThemeName = (settings.theme as ThemeName) || 'light'
|
||||
const settings = getSettings_DEPRECATED();
|
||||
const themeName: ThemeName = (settings.theme as ThemeName) || 'light';
|
||||
|
||||
const platform = getPlatform()
|
||||
const platform = getPlatform();
|
||||
|
||||
if (!SandboxManager.isSupportedPlatform()) {
|
||||
// WSL1 users will see this since isSupportedPlatform returns false for WSL1
|
||||
const errorMessage =
|
||||
platform === 'wsl'
|
||||
? 'Error: Sandboxing requires WSL2. WSL1 is not supported.'
|
||||
: 'Error: Sandboxing is currently only supported on macOS, Linux, and WSL2.'
|
||||
const message = color('error', themeName)(errorMessage)
|
||||
onDone(message)
|
||||
return null
|
||||
: 'Error: Sandboxing is currently only supported on macOS, Linux, and WSL2.';
|
||||
const message = color('error', themeName)(errorMessage);
|
||||
onDone(message);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Check dependencies - get structured result with errors/warnings
|
||||
const depCheck = SandboxManager.checkDependencies()
|
||||
const depCheck = SandboxManager.checkDependencies();
|
||||
|
||||
// Check if platform is in enabledPlatforms list (undocumented enterprise setting)
|
||||
if (!SandboxManager.isPlatformInEnabledList()) {
|
||||
const message = color(
|
||||
'error',
|
||||
themeName,
|
||||
)(
|
||||
`Error: Sandboxing is disabled for this platform (${platform}) via the enabledPlatforms setting.`,
|
||||
)
|
||||
onDone(message)
|
||||
return null
|
||||
)(`Error: Sandboxing is disabled for this platform (${platform}) via the enabledPlatforms setting.`);
|
||||
onDone(message);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Check if sandbox settings are locked by higher-priority settings
|
||||
@@ -55,73 +47,64 @@ export async function call(
|
||||
const message = color(
|
||||
'error',
|
||||
themeName,
|
||||
)(
|
||||
'Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.',
|
||||
)
|
||||
onDone(message)
|
||||
return null
|
||||
)('Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.');
|
||||
onDone(message);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Parse the arguments
|
||||
const trimmedArgs = args?.trim() || ''
|
||||
const trimmedArgs = args?.trim() || '';
|
||||
|
||||
// If no args, show the interactive menu
|
||||
if (!trimmedArgs) {
|
||||
return <SandboxSettings onComplete={onDone} depCheck={depCheck} />
|
||||
return <SandboxSettings onComplete={onDone} depCheck={depCheck} />;
|
||||
}
|
||||
|
||||
// Handle subcommands
|
||||
if (trimmedArgs) {
|
||||
const parts = trimmedArgs.split(' ')
|
||||
const subcommand = parts[0]
|
||||
const parts = trimmedArgs.split(' ');
|
||||
const subcommand = parts[0];
|
||||
|
||||
if (subcommand === 'exclude') {
|
||||
// Handle exclude subcommand
|
||||
const commandPattern = trimmedArgs.slice('exclude '.length).trim()
|
||||
const commandPattern = trimmedArgs.slice('exclude '.length).trim();
|
||||
|
||||
if (!commandPattern) {
|
||||
const message = color(
|
||||
'error',
|
||||
themeName,
|
||||
)(
|
||||
'Error: Please provide a command pattern to exclude (e.g., /sandbox exclude "npm run test:*")',
|
||||
)
|
||||
onDone(message)
|
||||
return null
|
||||
)('Error: Please provide a command pattern to exclude (e.g., /sandbox exclude "npm run test:*")');
|
||||
onDone(message);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Remove quotes if present
|
||||
const cleanPattern = commandPattern.replace(/^["']|["']$/g, '')
|
||||
const cleanPattern = commandPattern.replace(/^["']|["']$/g, '');
|
||||
|
||||
// Add to excludedCommands
|
||||
addToExcludedCommands(cleanPattern)
|
||||
addToExcludedCommands(cleanPattern);
|
||||
|
||||
// Get the local settings path and make it relative to cwd
|
||||
const localSettingsPath = getSettingsFilePathForSource('localSettings')
|
||||
const localSettingsPath = getSettingsFilePathForSource('localSettings');
|
||||
const relativePath = localSettingsPath
|
||||
? relative(getCwdState(), localSettingsPath)
|
||||
: '.claude/settings.local.json'
|
||||
: '.claude/settings.local.json';
|
||||
|
||||
const message = color(
|
||||
'success',
|
||||
themeName,
|
||||
)(`Added "${cleanPattern}" to excluded commands in ${relativePath}`)
|
||||
const message = color('success', themeName)(`Added "${cleanPattern}" to excluded commands in ${relativePath}`);
|
||||
|
||||
onDone(message)
|
||||
return null
|
||||
onDone(message);
|
||||
return null;
|
||||
} else {
|
||||
// Unknown subcommand
|
||||
const message = color(
|
||||
'error',
|
||||
themeName,
|
||||
)(
|
||||
`Error: Unknown subcommand "${subcommand}". Available subcommand: exclude`,
|
||||
)
|
||||
onDone(message)
|
||||
return null
|
||||
)(`Error: Unknown subcommand "${subcommand}". Available subcommand: exclude`);
|
||||
onDone(message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Should never reach here since we handle all cases above
|
||||
return null
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user