@s-hiroshi/bks
Version:
Cli bookmarks application
80 lines • 4.08 kB
JavaScript
#!/usr/bin/env node
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const program = require("commander");
const fs = require("fs");
const path = require("path");
const controller_1 = require("./controller/controller");
const ItemReader_1 = require("./model/ItemReader");
const ItemWriter_1 = require("./model/ItemWriter");
const ControlRepository_1 = require("./control/ControlRepository");
const NewControl_1 = require("./control/NewControl");
const SearchControl_1 = require("./control/SearchControl");
const ListControl_1 = require("./control/ListControl");
const FindControl_1 = require("./control/FindControl");
const ExpandedFinder_1 = require("./control/ExpandedFinder");
const RemoveControl_1 = require("./control/RemoveControl");
const EditControl_1 = require("./control/EditControl");
const DownloadControl_1 = require("./control/DownloadControl");
const UploadControl_1 = require("./control/UploadControl");
const HelpControl_1 = require("./control/HelpControl");
const VersionControl_1 = require("./control/VersionControl");
const ConfigureControl_1 = require("./control/ConfigureControl");
const ImportControl_1 = require("./control/ImportControl");
const createStorage_1 = require("./service/createStorage");
const HistoryReader_1 = require("./model/HistoryReader");
const HistoryWriter_1 = require("./model/HistoryWriter");
const HistoryControl_1 = require("./control/HistoryControl");
const homeDir = process.env[process.platform == "win32" ? "USERPROFILE" : "HOME"];
// If the .env file does not exist, create it
require("dotenv").config({ path: `${homeDir}/.config/s-hiroshi/bks/.env` });
let storage = "";
if (!process.env.STORAGE_PATH) {
(0, createStorage_1.createStorage)(`${homeDir}/.config/s-hiroshi/bks/data.json`);
storage = `${homeDir}/.config/s-hiroshi/bks/data.json`;
}
if (process.env.STORAGE_PATH) {
storage = process.env.STORAGE_PATH;
}
let historyStorage = "";
if (!process.env.HISTORY_STORAGE_PATH) {
fs.mkdirSync(path.dirname(`${homeDir}/.config/s-hiroshi/bks/.history`), { recursive: true }, (err) => {
if (err)
throw err;
});
// @see https://flaviocopes.com/how-to-create-empty-file-node/
fs.closeSync(fs.openSync(`${homeDir}/.config/s-hiroshi/bks/.history`, "w"));
historyStorage = `${homeDir}/.config/s-hiroshi/bks/.history`;
}
if (process.env.HISTORY_STORAGE_PATH) {
historyStorage = process.env.HISTORY_STORAGE_PATH;
}
const app = async () => {
const reader = new ItemReader_1.ItemReader(storage);
await reader.init();
const writer = new ItemWriter_1.ItemWriter(storage);
const historyWriter = new HistoryWriter_1.HistoryWriter(historyStorage);
await historyWriter.init();
const historyReader = new HistoryReader_1.HistoryReader(historyStorage);
await historyReader.init();
const controlRepository = new ControlRepository_1.ControlRepository();
controlRepository.add(new NewControl_1.NewControl(writer));
controlRepository.add(new SearchControl_1.SearchControl());
controlRepository.add(new ListControl_1.ListControl(reader));
controlRepository.add(new FindControl_1.FindControl(reader));
controlRepository.add(new ExpandedFinder_1.ExpandedFinder(reader));
controlRepository.add(new RemoveControl_1.RemoveControl(reader, writer));
controlRepository.add(new EditControl_1.EditControl(reader, writer));
controlRepository.add(new DownloadControl_1.DowonloadControl());
controlRepository.add(new UploadControl_1.UploadControl());
controlRepository.add(new HelpControl_1.HelpControl());
controlRepository.add(new VersionControl_1.VersionControl());
controlRepository.add(new ConfigureControl_1.ConfigureControl());
controlRepository.add(new ImportControl_1.ImportControl(writer));
controlRepository.add(new HistoryControl_1.HistoryControl(historyReader));
const controller = new controller_1.Controller(reader, writer, historyWriter, controlRepository);
program.parse(process.argv);
controller.run(program.args);
};
app();
//# sourceMappingURL=index.js.map