mirror of
https://github.com/kforney/pentest-distro-builder.git
synced 2024-10-06 20:48:51 -06:00
203 lines
13 KiB
JavaScript
203 lines
13 KiB
JavaScript
|
'use strict';
|
||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||
|
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||
|
});
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
// This line should always be right on top.
|
||
|
// tslint:disable-next-line:no-any
|
||
|
if (Reflect.metadata === undefined) {
|
||
|
// tslint:disable-next-line:no-require-imports no-var-requires
|
||
|
require('reflect-metadata');
|
||
|
}
|
||
|
const stopWatch_1 = require("./common/stopWatch");
|
||
|
// Do not move this linne of code (used to measure extension load times).
|
||
|
const stopWatch = new stopWatch_1.StopWatch();
|
||
|
const inversify_1 = require("inversify");
|
||
|
const vscode_1 = require("vscode");
|
||
|
const serviceRegistry_1 = require("./activation/serviceRegistry");
|
||
|
const types_1 = require("./activation/types");
|
||
|
const serviceRegistry_2 = require("./application/serviceRegistry");
|
||
|
const types_2 = require("./application/types");
|
||
|
const types_3 = require("./common/application/types");
|
||
|
const configSettings_1 = require("./common/configSettings");
|
||
|
const constants_1 = require("./common/constants");
|
||
|
const helpers_1 = require("./common/helpers");
|
||
|
const pythonInstallation_1 = require("./common/installer/pythonInstallation");
|
||
|
const serviceRegistry_3 = require("./common/installer/serviceRegistry");
|
||
|
const serviceRegistry_4 = require("./common/platform/serviceRegistry");
|
||
|
const serviceRegistry_5 = require("./common/process/serviceRegistry");
|
||
|
const serviceRegistry_6 = require("./common/serviceRegistry");
|
||
|
const types_4 = require("./common/terminal/types");
|
||
|
const types_5 = require("./common/types");
|
||
|
const serviceRegistry_7 = require("./common/variables/serviceRegistry");
|
||
|
const serviceRegistry_8 = require("./debugger/configProviders/serviceRegistry");
|
||
|
const serviceRegistry_9 = require("./debugger/serviceRegistry");
|
||
|
const types_6 = require("./debugger/types");
|
||
|
const serviceRegistry_10 = require("./formatters/serviceRegistry");
|
||
|
const types_7 = require("./interpreter/configuration/types");
|
||
|
const contracts_1 = require("./interpreter/contracts");
|
||
|
const serviceRegistry_11 = require("./interpreter/serviceRegistry");
|
||
|
const container_1 = require("./ioc/container");
|
||
|
const serviceManager_1 = require("./ioc/serviceManager");
|
||
|
const types_8 = require("./ioc/types");
|
||
|
const linterCommands_1 = require("./linters/linterCommands");
|
||
|
const serviceRegistry_12 = require("./linters/serviceRegistry");
|
||
|
const types_9 = require("./linters/types");
|
||
|
const codeActionsProvider_1 = require("./providers/codeActionsProvider");
|
||
|
const formatProvider_1 = require("./providers/formatProvider");
|
||
|
const linterProvider_1 = require("./providers/linterProvider");
|
||
|
const renameProvider_1 = require("./providers/renameProvider");
|
||
|
const replProvider_1 = require("./providers/replProvider");
|
||
|
const simpleRefactorProvider_1 = require("./providers/simpleRefactorProvider");
|
||
|
const terminalProvider_1 = require("./providers/terminalProvider");
|
||
|
const updateSparkLibraryProvider_1 = require("./providers/updateSparkLibraryProvider");
|
||
|
const sortImports = require("./sortImports");
|
||
|
const telemetry_1 = require("./telemetry");
|
||
|
const constants_2 = require("./telemetry/constants");
|
||
|
const serviceRegistry_13 = require("./terminals/serviceRegistry");
|
||
|
const types_10 = require("./terminals/types");
|
||
|
const blockFormatProvider_1 = require("./typeFormatters/blockFormatProvider");
|
||
|
const onEnterFormatter_1 = require("./typeFormatters/onEnterFormatter");
|
||
|
const constants_3 = require("./unittests/common/constants");
|
||
|
const serviceRegistry_14 = require("./unittests/serviceRegistry");
|
||
|
const activationDeferred = helpers_1.createDeferred();
|
||
|
exports.activated = activationDeferred.promise;
|
||
|
// tslint:disable-next-line:max-func-body-length
|
||
|
function activate(context) {
|
||
|
return __awaiter(this, void 0, void 0, function* () {
|
||
|
const cont = new inversify_1.Container();
|
||
|
const serviceManager = new serviceManager_1.ServiceManager(cont);
|
||
|
const serviceContainer = new container_1.ServiceContainer(cont);
|
||
|
registerServices(context, serviceManager, serviceContainer);
|
||
|
const appDiagnostics = serviceContainer.get(types_2.IApplicationDiagnostics);
|
||
|
yield appDiagnostics.performPreStartupHealthCheck();
|
||
|
const interpreterManager = serviceContainer.get(contracts_1.IInterpreterService);
|
||
|
// This must be completed before we can continue as language server needs the interpreter path.
|
||
|
interpreterManager.initialize();
|
||
|
yield interpreterManager.autoSetInterpreter();
|
||
|
const configuration = serviceManager.get(types_5.IConfigurationService);
|
||
|
const pythonSettings = configuration.getSettings();
|
||
|
const standardOutputChannel = serviceManager.get(types_5.IOutputChannel, constants_1.STANDARD_OUTPUT_CHANNEL);
|
||
|
context.subscriptions.push(vscode_1.languages.registerRenameProvider(constants_1.PYTHON, new renameProvider_1.PythonRenameProvider(serviceManager)));
|
||
|
simpleRefactorProvider_1.activateSimplePythonRefactorProvider(context, standardOutputChannel, serviceManager);
|
||
|
const activationService = serviceContainer.get(types_1.IExtensionActivationService);
|
||
|
yield activationService.activate();
|
||
|
sortImports.activate(context, standardOutputChannel, serviceManager);
|
||
|
serviceManager.get(types_10.ICodeExecutionManager).registerCommands();
|
||
|
sendStartupTelemetry(exports.activated, serviceContainer).ignoreErrors();
|
||
|
const pythonInstaller = new pythonInstallation_1.PythonInstaller(serviceContainer);
|
||
|
pythonInstaller.checkPythonInstallation(configSettings_1.PythonSettings.getInstance())
|
||
|
.catch(ex => console.error('Python Extension: pythonInstaller.checkPythonInstallation', ex));
|
||
|
interpreterManager.refresh()
|
||
|
.catch(ex => console.error('Python Extension: interpreterManager.refresh', ex));
|
||
|
const jupyterExtension = vscode_1.extensions.getExtension('donjayamanne.jupyter');
|
||
|
const lintingEngine = serviceManager.get(types_9.ILintingEngine);
|
||
|
lintingEngine.linkJupiterExtension(jupyterExtension).ignoreErrors();
|
||
|
context.subscriptions.push(new linterCommands_1.LinterCommands(serviceManager));
|
||
|
const linterProvider = new linterProvider_1.LinterProvider(context, serviceManager);
|
||
|
context.subscriptions.push(linterProvider);
|
||
|
// Enable indentAction
|
||
|
// tslint:disable-next-line:no-non-null-assertion
|
||
|
vscode_1.languages.setLanguageConfiguration(constants_1.PYTHON_LANGUAGE, {
|
||
|
onEnterRules: [
|
||
|
{
|
||
|
beforeText: /^\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async)\b.*:\s*/,
|
||
|
action: { indentAction: vscode_1.IndentAction.Indent }
|
||
|
},
|
||
|
{
|
||
|
beforeText: /^\s*#.*/,
|
||
|
afterText: /.+$/,
|
||
|
action: { indentAction: vscode_1.IndentAction.None, appendText: '# ' }
|
||
|
},
|
||
|
{
|
||
|
beforeText: /^\s+(continue|break|return)\b.*/,
|
||
|
afterText: /\s+$/,
|
||
|
action: { indentAction: vscode_1.IndentAction.Outdent }
|
||
|
}
|
||
|
]
|
||
|
});
|
||
|
if (pythonSettings && pythonSettings.formatting && pythonSettings.formatting.provider !== 'none') {
|
||
|
const formatProvider = new formatProvider_1.PythonFormattingEditProvider(context, serviceContainer);
|
||
|
context.subscriptions.push(vscode_1.languages.registerDocumentFormattingEditProvider(constants_1.PYTHON, formatProvider));
|
||
|
context.subscriptions.push(vscode_1.languages.registerDocumentRangeFormattingEditProvider(constants_1.PYTHON, formatProvider));
|
||
|
}
|
||
|
context.subscriptions.push(vscode_1.languages.registerOnTypeFormattingEditProvider(constants_1.PYTHON, new blockFormatProvider_1.BlockFormatProviders(), ':'));
|
||
|
context.subscriptions.push(vscode_1.languages.registerOnTypeFormattingEditProvider(constants_1.PYTHON, new onEnterFormatter_1.OnEnterFormatter(), '\n'));
|
||
|
const deprecationMgr = serviceContainer.get(types_5.IFeatureDeprecationManager);
|
||
|
deprecationMgr.initialize();
|
||
|
context.subscriptions.push(deprecationMgr);
|
||
|
context.subscriptions.push(serviceContainer.get(types_7.IInterpreterSelector));
|
||
|
context.subscriptions.push(updateSparkLibraryProvider_1.activateUpdateSparkLibraryProvider());
|
||
|
context.subscriptions.push(new replProvider_1.ReplProvider(serviceContainer));
|
||
|
context.subscriptions.push(new terminalProvider_1.TerminalProvider(serviceContainer));
|
||
|
context.subscriptions.push(vscode_1.languages.registerCodeActionsProvider(constants_1.PYTHON, new codeActionsProvider_1.PythonCodeActionProvider(), { providedCodeActionKinds: [vscode_1.CodeActionKind.SourceOrganizeImports] }));
|
||
|
serviceContainer.getAll(types_6.IDebugConfigurationProvider).forEach(debugConfig => {
|
||
|
context.subscriptions.push(vscode_1.debug.registerDebugConfigurationProvider(debugConfig.debugType, debugConfig));
|
||
|
});
|
||
|
serviceContainer.get(types_6.IDebuggerBanner).initialize();
|
||
|
activationDeferred.resolve();
|
||
|
});
|
||
|
}
|
||
|
exports.activate = activate;
|
||
|
function registerServices(context, serviceManager, serviceContainer) {
|
||
|
serviceManager.addSingletonInstance(types_8.IServiceContainer, serviceContainer);
|
||
|
serviceManager.addSingletonInstance(types_8.IServiceManager, serviceManager);
|
||
|
serviceManager.addSingletonInstance(types_5.IDisposableRegistry, context.subscriptions);
|
||
|
serviceManager.addSingletonInstance(types_5.IMemento, context.globalState, types_5.GLOBAL_MEMENTO);
|
||
|
serviceManager.addSingletonInstance(types_5.IMemento, context.workspaceState, types_5.WORKSPACE_MEMENTO);
|
||
|
serviceManager.addSingletonInstance(types_5.IExtensionContext, context);
|
||
|
const standardOutputChannel = vscode_1.window.createOutputChannel('Python');
|
||
|
const unitTestOutChannel = vscode_1.window.createOutputChannel('Python Test Log');
|
||
|
serviceManager.addSingletonInstance(types_5.IOutputChannel, standardOutputChannel, constants_1.STANDARD_OUTPUT_CHANNEL);
|
||
|
serviceManager.addSingletonInstance(types_5.IOutputChannel, unitTestOutChannel, constants_3.TEST_OUTPUT_CHANNEL);
|
||
|
serviceRegistry_1.registerTypes(serviceManager);
|
||
|
serviceRegistry_6.registerTypes(serviceManager);
|
||
|
serviceRegistry_5.registerTypes(serviceManager);
|
||
|
serviceRegistry_7.registerTypes(serviceManager);
|
||
|
serviceRegistry_14.registerTypes(serviceManager);
|
||
|
serviceRegistry_12.registerTypes(serviceManager);
|
||
|
serviceRegistry_11.registerTypes(serviceManager);
|
||
|
serviceRegistry_10.registerTypes(serviceManager);
|
||
|
serviceRegistry_4.registerTypes(serviceManager);
|
||
|
serviceRegistry_3.registerTypes(serviceManager);
|
||
|
serviceRegistry_13.registerTypes(serviceManager);
|
||
|
serviceRegistry_8.registerTypes(serviceManager);
|
||
|
serviceRegistry_9.registerTypes(serviceManager);
|
||
|
serviceRegistry_2.registerTypes(serviceManager);
|
||
|
}
|
||
|
function sendStartupTelemetry(activatedPromise, serviceContainer) {
|
||
|
return __awaiter(this, void 0, void 0, function* () {
|
||
|
const logger = serviceContainer.get(types_5.ILogger);
|
||
|
try {
|
||
|
yield activatedPromise;
|
||
|
const terminalHelper = serviceContainer.get(types_4.ITerminalHelper);
|
||
|
const terminalShellType = terminalHelper.identifyTerminalShell(terminalHelper.getTerminalShellPath());
|
||
|
const duration = stopWatch.elapsedTime;
|
||
|
const condaLocator = serviceContainer.get(contracts_1.ICondaService);
|
||
|
const interpreterService = serviceContainer.get(contracts_1.IInterpreterService);
|
||
|
const [condaVersion, interpreter, interpreters] = yield Promise.all([
|
||
|
condaLocator.getCondaVersion().catch(() => undefined),
|
||
|
interpreterService.getActiveInterpreter().catch(() => undefined),
|
||
|
interpreterService.getInterpreters().catch(() => [])
|
||
|
]);
|
||
|
const workspaceService = serviceContainer.get(types_3.IWorkspaceService);
|
||
|
const workspaceFolderCount = workspaceService.hasWorkspaceFolders ? workspaceService.workspaceFolders.length : 0;
|
||
|
const pythonVersion = interpreter ? interpreter.version_info.join('.') : undefined;
|
||
|
const interpreterType = interpreter ? interpreter.type : undefined;
|
||
|
const hasPython3 = interpreters
|
||
|
.filter(item => item && Array.isArray(item.version_info) ? item.version_info[0] === 3 : false)
|
||
|
.length > 0;
|
||
|
const props = { condaVersion, terminal: terminalShellType, pythonVersion, interpreterType, workspaceFolderCount, hasPython3 };
|
||
|
telemetry_1.sendTelemetryEvent(constants_2.EDITOR_LOAD, duration, props);
|
||
|
}
|
||
|
catch (ex) {
|
||
|
logger.logError('sendStartupTelemetry failed.', ex);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
//# sourceMappingURL=extension.js.map
|