mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-10-18 23:11:07 +00:00

Fix errors and warnings reported by eslint Add CONTRIBUTING document for vscode-extension
82 lines
2.7 KiB
TypeScript
82 lines
2.7 KiB
TypeScript
/*
|
|
* 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();
|