From 47ea43b7796d4357e73961f503c5cadc620df0d7 Mon Sep 17 00:00:00 2001 From: logonoff Date: Fri, 26 Jul 2024 15:04:06 -0400 Subject: [PATCH] Clean old autogenerated globalStorage folders (#2597) Signed-off-by: logonoff --- src/extension.ts | 28 +++++++++++++++++++++++++--- src/javaServerStarter.ts | 12 ++---------- src/utils.ts | 10 ++++++++++ 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 8e86d8283f..a40217ec2f 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -30,7 +30,7 @@ import { snippetCompletionProvider } from './snippetCompletionProvider'; import { JavaClassEditorProvider } from './javaClassEditor'; import { StandardLanguageClient } from './standardLanguageClient'; import { SyntaxLanguageClient } from './syntaxLanguageClient'; -import { convertToGlob, deleteClientLog, deleteDirectory, ensureExists, getBuildFilePatterns, getExclusionGlob, getInclusionPatternsFromNegatedExclusion, getJavaConfig, getJavaConfiguration, hasBuildToolConflicts, resolveActualCause } from './utils'; +import { convertToGlob, deleteClientLog, deleteDirectory, ensureExists, getBuildFilePatterns, getExclusionGlob, getInclusionPatternsFromNegatedExclusion, getJavaConfig, getJavaConfiguration, hasBuildToolConflicts, resolveActualCause, getVersion } from './utils'; import glob = require('glob'); import { Telemetry } from './telemetry'; import { getMessage } from './errorUtils'; @@ -114,6 +114,8 @@ export function fixJdtLinksInDocumentation(oldDocumentation: MarkdownString): Ma } export async function activate(context: ExtensionContext): Promise { + window.showErrorMessage('sadfsadfasdfasdfsadf'); + await loadSupportedJreNames(context); context.subscriptions.push(commands.registerCommand(Commands.FILESEXPLORER_ONPASTE, async () => { const originalClipboard = await env.clipboard.readText(); @@ -159,6 +161,8 @@ export async function activate(context: ExtensionContext): Promise cleanJavaWorkspaceStorage(); + cleanOldGlobalStorage(context); + // https://github.com/redhat-developer/vscode-java/issues/3484 if (process.platform === 'darwin' && process.arch === 'x64') { try { @@ -1101,6 +1105,26 @@ async function cleanJavaWorkspaceStorage() { } } +async function cleanOldGlobalStorage(context: ExtensionContext) { + const currentVersion = getVersion(context.extensionPath); + const globalStoragePath = context.globalStorageUri?.fsPath; // .../Code/User/globalStorage/redhat.java + + ensureExists(globalStoragePath); + + // delete folders in .../User/globalStorage/redhat.java that are not named the current version + fs.promises.readdir(globalStoragePath).then(async (files) => { + await Promise.all(files.map(async (file) => { + const currentPath = path.join(globalStoragePath, file); + const stat = await fs.promises.stat(currentPath); + + if (stat.isDirectory() && file !== currentVersion) { + logger.info(`Removing old folder in globalStorage : ${file}`); + deleteDirectory(currentPath); + } + })); + }); +} + export function registerCodeCompletionTelemetryListener() { apiManager.getApiInstance().onDidRequestEnd((traceEvent: TraceEvent) => { if (traceEvent.type === CompletionRequest.method) { @@ -1162,5 +1186,3 @@ function registerRestartJavaLanguageServerCommand(context: ExtensionContext) { } })); } - - diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index 6790973792..974a1a7c91 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -11,7 +11,7 @@ import { logger } from './log'; import { addLombokParam, isLombokSupportEnabled } from './lombokSupport'; import { RequirementsData } from './requirements'; import { IS_WORKSPACE_VMARGS_ALLOWED, getJavaEncoding, getJavaagentFlag, getKey, isInWorkspaceFolder } from './settings'; -import { deleteDirectory, ensureExists, getJavaConfiguration, getTimestamp } from './utils'; +import { deleteDirectory, ensureExists, getJavaConfiguration, getTimestamp, getVersion } from './utils'; import { log } from 'console'; // eslint-disable-next-line no-var @@ -254,15 +254,7 @@ export function getSharedIndexCache(context: ExtensionContext): string { function resolveConfiguration(context, configDir) { ensureExists(context.globalStoragePath); - const extensionPath = path.resolve(context.extensionPath, "package.json"); - const packageFile = JSON.parse(fs.readFileSync(extensionPath, 'utf8')); - let version; - if (packageFile) { - version = packageFile.version; - } - else { - version = '0.0.0'; - } + const version = getVersion(context.extensionPath); let configuration = path.resolve(context.globalStoragePath, version); ensureExists(configuration); configuration = path.resolve(configuration, configDir); diff --git a/src/utils.ts b/src/utils.ts index c3ff4805f3..8d342b48f2 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -316,3 +316,13 @@ export function resolveActualCause(callstack: any): any { return callstack; } + +export function getVersion(extensionPath: string): string { + const packagePath = path.resolve(extensionPath, "package.json"); + const packageFile = JSON.parse(fs.readFileSync(packagePath, 'utf8')); + if (packageFile) { + return packageFile.version; + } + + return '0.0.0'; +}