@ofzza/adventofcode
Version:
Task runner for AdventOfCode.com tasks
59 lines • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Configuration = void 0;
const tslib_1 = require("tslib");
// Dependencies
const fs_1 = require("fs");
const path_1 = require("path");
// Import default configuration
const default_json_1 = (0, tslib_1.__importDefault)(require("./default.json"));
(0, tslib_1.__exportStar)(require("./types"), exports);
/**
* Implements configuration reading and processing functionality
*/
class Configuration {
/**
* Gets initialized configuration (and initializes it if not already initialized)
*/
static get config() {
return Configuration._config;
}
/**
* Gets task execution CWD (same as location of configuration file)
*/
static get cwd() {
return Configuration._cwd;
}
/**
* Writes default configuration into a config file
*/
static writeDefault(path) {
try {
const absolutePath = (0, path_1.join)(process.cwd(), path);
(0, fs_1.writeFileSync)(absolutePath, JSON.stringify(default_json_1.default, null, 2));
}
catch (err) {
throw err;
}
}
/**
* Reads and parses configuration
*/
static initialize(path) {
try {
this._cwd = (0, path_1.dirname)(path);
const absolutePath = (0, path_1.join)(process.cwd(), path);
let syntax = (0, fs_1.readFileSync)(absolutePath).toString();
syntax = syntax
.split('\n')
.filter(line => !line.trim().startsWith('//'))
.join('\n');
this._config = JSON.parse(syntax);
}
catch (err) {
throw err;
}
}
}
exports.Configuration = Configuration;
//# sourceMappingURL=index.js.map