Add file watcher

Signed-off-by: Sanjula Ganepola <sanjulagane@gmail.com>
This commit is contained in:
Sanjula Ganepola
2024-10-16 20:05:20 -04:00
parent 367ff1a49f
commit 05caeafbb2

View File

@@ -1,5 +1,5 @@
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import { window } from 'vscode'; import { window, workspace } from 'vscode';
import { Act } from './act'; import { Act } from './act';
import ComponentsTreeDataProvider from './views/components/componentsTreeDataProvider'; import ComponentsTreeDataProvider from './views/components/componentsTreeDataProvider';
import { DecorationProvider } from './views/decorationProvider'; import { DecorationProvider } from './views/decorationProvider';
@@ -16,6 +16,7 @@ export function activate(context: vscode.ExtensionContext) {
act = new Act(); act = new Act();
// Create tree views
const decorationProvider = new DecorationProvider(); const decorationProvider = new DecorationProvider();
componentsTreeDataProvider = new ComponentsTreeDataProvider(context); componentsTreeDataProvider = new ComponentsTreeDataProvider(context);
const componentsTreeView = window.createTreeView(ComponentsTreeDataProvider.VIEW_ID, { treeDataProvider: componentsTreeDataProvider }); const componentsTreeView = window.createTreeView(ComponentsTreeDataProvider.VIEW_ID, { treeDataProvider: componentsTreeDataProvider });
@@ -23,11 +24,28 @@ export function activate(context: vscode.ExtensionContext) {
const workflowsTreeView = window.createTreeView(WorkflowsTreeDataProvider.VIEW_ID, { treeDataProvider: workflowsTreeDataProvider }); const workflowsTreeView = window.createTreeView(WorkflowsTreeDataProvider.VIEW_ID, { treeDataProvider: workflowsTreeDataProvider });
settingsTreeDataProvider = new SettingsTreeDataProvider(context); settingsTreeDataProvider = new SettingsTreeDataProvider(context);
const settingsTreeView = window.createTreeView(SettingsTreeDataProvider.VIEW_ID, { treeDataProvider: settingsTreeDataProvider }); const settingsTreeView = window.createTreeView(SettingsTreeDataProvider.VIEW_ID, { treeDataProvider: settingsTreeDataProvider });
// Create file watcher
const workflowsFileWatcher = workspace.createFileSystemWatcher('**/.github/workflows/*.{yml,yaml}');
workflowsFileWatcher.onDidCreate(() => {
workflowsTreeDataProvider.refresh();
settingsTreeDataProvider.refresh();
});
workflowsFileWatcher.onDidChange(() => {
workflowsTreeDataProvider.refresh();
settingsTreeDataProvider.refresh();
});
workflowsFileWatcher.onDidDelete(() => {
workflowsTreeDataProvider.refresh();
settingsTreeDataProvider.refresh();
});
context.subscriptions.push( context.subscriptions.push(
componentsTreeView, componentsTreeView,
workflowsTreeView, workflowsTreeView,
settingsTreeView, settingsTreeView,
window.registerFileDecorationProvider(decorationProvider) window.registerFileDecorationProvider(decorationProvider),
workflowsFileWatcher
); );
} }