figgo
Version:
A CLI tool make your design tokens stay up to date with your Figma design styleguide
97 lines • 2.99 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const os = require("os");
const path_1 = require("path");
const helper_1 = require("./helper");
class Storage {
constructor() {
this.storageDir = path_1.join(os.homedir(), ".figgo");
this.localDir = process.cwd();
this.globalFile = path_1.join(this.storageDir, "config.json");
this.localFile = path_1.join(this.localDir, "figgo.json");
}
readBoardsFromFile() {
const file = this.isLocalConfigFileExisted()
? this.localFile
: this.globalFile;
if (file === this.globalFile) {
return this.setBoardFromGlobalConfig(file);
}
else {
return this.setBoardFromLocalConfig(file);
}
}
writeFile(content) {
try {
fs.writeFileSync(this.globalFile, JSON.stringify({ boards: content }));
return helper_1.successLog(`successfully updated`);
}
catch (e) {
return helper_1.warningLog("fail");
}
}
isStorageDirExisted() {
if (!fs.existsSync(this.storageDir)) {
fs.mkdirSync(this.storageDir);
return false;
}
else {
return true;
}
}
removeConfigFile() {
const link = this.globalFile;
fs.unlinkSync(link);
return this.isConfigFileExisted();
}
isConfigFileExisted() {
if (this.isStorageDirExisted()) {
const file = this.globalFile;
const isExist = fs.existsSync(file);
return isExist;
}
return false;
}
isLocalConfigFileExisted() {
const file = this.localFile;
const isExist = fs.existsSync(file);
if (isExist) {
console.log(`🤓 Reading figgo setup from ${file}`);
}
return isExist;
}
setBoardFromGlobalConfig(file) {
if (this.isStorageDirExisted()) {
if (this.isConfigFileExisted()) {
const content = fs.readFileSync(file, "utf8");
const formatted = JSON.parse(content);
if (formatted.boards) {
return formatted.boards;
}
else {
fs.writeFileSync(file, JSON.stringify({ boards: [] }));
return [];
}
}
else {
fs.writeFileSync(file, JSON.stringify({ boards: [] }));
return [];
}
}
}
setBoardFromLocalConfig(file) {
const content = fs.readFileSync(file, "utf8");
const formatted = JSON.parse(content);
try {
if (formatted.boards) {
return formatted.boards;
}
}
catch (e) {
console.log(helper_1.warningLog(`check log config`));
}
}
}
exports.default = Storage;
//# sourceMappingURL=storage.js.map