vsc-material-theme/extensions/commands/theme-variant/index.ts

37 lines
No EOL
1.4 KiB
TypeScript

import * as vscode from 'vscode';
import { getDefaultValues, getPackageJSON, getAbsolutePath } from "../../helpers/fs";
import { setCustomSettings, getCustomSettings } from "../../helpers/settings";
import { THEME_ICONS } from "../theme-icons/index";
import * as fs from "fs";
import { CHARSET } from "../../consts/files";
import { reloadWindow } from "../../helpers/vscode";
export const THEME_VARIANT = () => {
let defaults = getDefaultValues();
let options: string[] = Object.keys(defaults.themeVariants);
let packageJSON = getPackageJSON();
options = options.filter(i => i !== packageJSON.contributes.themes[0].path);
vscode.window.showQuickPick(options).then((response: string) => {
let customSettings = getCustomSettings();
let themepath: string = defaults.themeVariants[response];
let themeUITheme: string = defaults.themeVariantsUITheme[response];
customSettings.themeColours = response;
packageJSON.contributes.themes[0].path = themepath;
packageJSON.contributes.themes[0].uiTheme = themeUITheme;
fs.writeFile(getAbsolutePath('./package.json'), JSON.stringify(packageJSON, null, 2), { encoding: CHARSET }, (error) => {
if (error) {
console.trace(error);
return;
}
setCustomSettings(customSettings);
THEME_ICONS().then(() => reloadWindow()).catch(error => console.trace(error));
});
});
}