summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/test-tools/wamr-ide/VSCode-Extension/src/decorationProvider.ts
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/test-tools/wamr-ide/VSCode-Extension/src/decorationProvider.ts')
-rw-r--r--fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/test-tools/wamr-ide/VSCode-Extension/src/decorationProvider.ts81
1 files changed, 81 insertions, 0 deletions
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/test-tools/wamr-ide/VSCode-Extension/src/decorationProvider.ts b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/test-tools/wamr-ide/VSCode-Extension/src/decorationProvider.ts
new file mode 100644
index 000000000..46efcc90c
--- /dev/null
+++ b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/test-tools/wamr-ide/VSCode-Extension/src/decorationProvider.ts
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2019 Intel Corporation. All rights reserved.
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+ */
+
+import * as vscode from 'vscode';
+import { readFromFile } from './utilities/directoryUtilities';
+import * as path from 'path';
+import * as os from 'os';
+
+const DECORATION_INCLUDE_PATHS: vscode.FileDecoration =
+ new vscode.FileDecoration(
+ '✔',
+ 'Included',
+ new vscode.ThemeColor('list.highlightForeground')
+ );
+const DECORATION_EXCLUDE_FILES: vscode.FileDecoration =
+ new vscode.FileDecoration(
+ '✗',
+ 'Excluded',
+ new vscode.ThemeColor('list.errorForeground')
+ );
+
+export class DecorationProvider implements vscode.FileDecorationProvider {
+ private disposables: vscode.Disposable[] = [];
+ public onDidChangeFileDecorations: vscode.Event<
+ vscode.Uri | vscode.Uri[] | undefined
+ >;
+ private eventEmitter: vscode.EventEmitter<vscode.Uri | vscode.Uri[]>;
+
+ constructor() {
+ this.eventEmitter = new vscode.EventEmitter();
+ this.onDidChangeFileDecorations = this.eventEmitter.event;
+ this.disposables.push(
+ vscode.window.registerFileDecorationProvider(this)
+ );
+ }
+
+ public provideFileDecoration(
+ uri: vscode.Uri
+ ): vscode.ProviderResult<vscode.FileDecoration> {
+ const currentPrjDir =
+ os.platform() === 'win32'
+ ? (vscode.workspace.workspaceFolders?.[0].uri.fsPath as string)
+ : os.platform() === 'linux' || os.platform() === 'darwin'
+ ? (vscode.workspace.workspaceFolders?.[0].uri.path as string)
+ : '';
+
+ const pathRelative = (uri.fsPath ? uri.fsPath : uri.toString()).replace(
+ currentPrjDir,
+ '..'
+ );
+
+ const prjConfigDir = path.join(currentPrjDir, '.wamr');
+ const configFilePath = path.join(
+ prjConfigDir,
+ 'compilation_config.json'
+ );
+ if (readFromFile(configFilePath) !== '') {
+ const configData = JSON.parse(readFromFile(configFilePath));
+ const includePathArr = configData['includePaths'];
+ const excludeFileArr = configData['excludeFiles'];
+
+ if (includePathArr.indexOf(pathRelative) > -1) {
+ return DECORATION_INCLUDE_PATHS;
+ } else if (excludeFileArr.indexOf(pathRelative) > -1) {
+ return DECORATION_EXCLUDE_FILES;
+ }
+ }
+ }
+
+ public dispose(): void {
+ this.disposables.forEach(d => d.dispose());
+ }
+
+ public updateDecorationsForSource(uri: vscode.Uri): void {
+ this.eventEmitter.fire(uri);
+ }
+}
+
+export const decorationProvider: DecorationProvider = new DecorationProvider();