UNPKG

code-theme-converter

Version:

Convert any vscode theme with ease!

69 lines (68 loc) 4.05 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); const chalk_1 = __importDefault(require("chalk")); const rimraf_1 = __importDefault(require("rimraf")); const fetchRepo_1 = require("../fetchRepo"); const tmTheme_1 = require("./tmTheme"); const sublime_1 = require("../util/sublime"); const vscode_1 = require("../util/vscode"); const uiTheme_1 = require("./uiTheme"); const colorScheme_1 = require("./colorScheme"); function convertToSublime(vscodeThemeRepoUrl, options) { var _a; return __awaiter(this, void 0, void 0, function* () { try { console.log(chalk_1.default.cyan('Fetching repo')); const { repo } = yield fetchRepo_1.fetchRepo(vscodeThemeRepoUrl); const themeDir = path_1.default.join(repo, (_a = options.directory) !== null && _a !== void 0 ? _a : ''); const themes = yield fs_extra_1.default.readdir(themeDir); const themesCount = themes.length; console.log(chalk_1.default.cyan(`Converting ${themesCount.toString()} theme${themesCount > 1 ? 's' : ''}`)); const promises = []; themes.forEach((themeName) => { vscode_1.readCodeTheme(themeDir, themeName) .then(vscodeTheme => { console.log(chalk_1.default.yellow(`Converting ${vscodeTheme.name}`)); const sublimeThemeDir = path_1.default.join(options.save != null && options.save ? sublime_1.getSublimeTextPackageDir() : process.cwd(), vscodeTheme.name); if (fs_extra_1.default.existsSync(sublimeThemeDir)) { rimraf_1.default.sync(sublimeThemeDir); } fs_extra_1.default.mkdir(sublimeThemeDir) .then(() => { var _a, _b; promises.push(fs_extra_1.default .writeFile(path_1.default.join(sublimeThemeDir, vscodeTheme.name + (((_a = options.asTmTheme) !== null && _a !== void 0 ? _a : false) ? '.tmTheme' : '.sublime-color-scheme')), ((_b = options.asTmTheme) !== null && _b !== void 0 ? _b : false) ? tmTheme_1.toTmTheme(vscodeTheme) : JSON.stringify(colorScheme_1.toSublimeColorScheme(vscodeTheme), undefined, 2)) .catch(error => console.log(chalk_1.default.red(error)))); promises.push(fs_extra_1.default.writeFile(path_1.default.join(sublimeThemeDir, vscodeTheme.name + '.sublime-theme'), JSON.stringify(uiTheme_1.createAdaptiveTheme(vscodeTheme), undefined, 2))); }) .catch(error => console.log(chalk_1.default.red(error))); }) .catch(error => console.log(chalk_1.default.red(error))); }); return Promise.all(promises); } catch (error) { console.log(chalk_1.default.red(error)); } }); } exports.convertToSublime = convertToSublime;