vrem
Version:
An open-source automatic time-tracker
156 lines (155 loc) • 7.2 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const colors_1 = __importDefault(require("./colors"));
const constants_1 = __importDefault(require("./constants"));
const utils = __importStar(require("./utils"));
const manualTask = __importStar(require("./task"));
const process_1 = require("./process");
const { program } = require('commander');
const { version } = require('../package.json');
async function checkProcess(processName, socketPath) {
if (await (0, process_1.isProcessAlive)(socketPath)) {
console.info(colors_1.default.green(`The ${processName} process is running.`));
}
else {
console.info(colors_1.default.yellow(`The ${processName} process is stopped.`));
}
}
program.version(version, '-v, --version', 'print the current version');
program
.command('on')
.description('start auto-tracking process')
.option('-s, --server', 'also start server')
.action(async ({ server }) => {
await (0, process_1.startProcess)(process_1.trackerProcessName, process_1.trackerScriptPath, constants_1.default.autoTrackerSocketPath);
server && await (0, process_1.startProcess)(process_1.serverProcessName, process_1.serverScriptPath, constants_1.default.serverSocketPath);
});
program
.command('off')
.description('stop auto-tracking process')
.option('-s, --server', 'also stop server')
.action(async ({ server }) => {
await (0, process_1.stopProcess)(process_1.trackerProcessName, constants_1.default.autoTrackerSocketPath);
server && await (0, process_1.stopProcess)(process_1.serverProcessName, constants_1.default.serverSocketPath);
});
program
.command('rerun')
.description('reruns auto-tracking process')
.action(async () => {
await (0, process_1.stopProcess)(process_1.trackerProcessName, constants_1.default.autoTrackerSocketPath);
await (0, process_1.startProcess)(process_1.trackerProcessName, process_1.trackerScriptPath, constants_1.default.autoTrackerSocketPath);
});
const serverCommand = program
.command('server <on/off/rerun>')
.description('turns UI server on/off');
serverCommand.command('on')
.description('turns server on')
.action(() => (0, process_1.startProcess)(process_1.serverProcessName, process_1.serverScriptPath, constants_1.default.serverSocketPath));
serverCommand.command('off')
.description('turns server off')
.action(() => (0, process_1.stopProcess)(process_1.serverProcessName, constants_1.default.serverSocketPath));
serverCommand.command('rerun')
.description('reruns server')
.action(async () => {
await (0, process_1.stopProcess)(process_1.serverProcessName, constants_1.default.serverSocketPath);
await (0, process_1.startProcess)(process_1.serverProcessName, process_1.serverScriptPath, constants_1.default.serverSocketPath);
});
program
.command('ui')
.description('opens ui')
.action(async () => {
let isAlive = await (0, process_1.isProcessAlive)(constants_1.default.serverSocketPath);
if (!isAlive) {
isAlive = await (0, process_1.startProcess)(process_1.serverProcessName, process_1.serverScriptPath, constants_1.default.serverSocketPath);
}
if (isAlive) {
const url = 'http://localhost:3210';
console.info(`Opening ${url}...`);
utils.openUrl('http://localhost:3210');
}
});
program
.command('status')
.description('check whether auto-tracking process is running.')
.action(async () => {
await checkProcess(process_1.trackerProcessName, constants_1.default.autoTrackerSocketPath);
await checkProcess(process_1.serverProcessName, constants_1.default.serverSocketPath);
const currentTask = manualTask.getCurrentTask();
if (currentTask) {
console.info(colors_1.default.green(`The current task is "${colors_1.default.cyan(currentTask.name)}".\n` +
`It began at ${colors_1.default.cyan(utils.makeTimeStringWithDate(new Date(currentTask.startTime)))} ` +
`and lasted for ${colors_1.default.cyan(utils.makeDurationString(Date.now() - currentTask.startTime))}.`));
}
else {
console.info(colors_1.default.yellow('No task has been started.'));
}
});
program
.command('report [date]')
.description('show the statistics of apps usage')
.option('--from <date>', 'the start date')
.option('--to <date>', 'the end date')
.action(require('./report').reportCommand);
program
.command('start <name>')
.description('start a new task')
.action(name => {
var _a, _b;
try {
const result = manualTask.startTask(name.trim());
if (!result.success && result.reason === 'already_started') {
console.info(colors_1.default.yellow(`Task "${colors_1.default.cyan((_a = result.activeTask) === null || _a === void 0 ? void 0 : _a.name)}" has been already started`));
return;
}
if (result.success) {
console.info(colors_1.default.green(`Task "${colors_1.default.cyan((_b = result.activeTask) === null || _b === void 0 ? void 0 : _b.name)}" has been started successfully`));
}
}
catch (e) {
console.error(colors_1.default.red('Cannot start the task. The error: '));
console.error(e);
}
});
program
.command('stop')
.description('end the current task')
.action(() => {
try {
const stoppedTask = manualTask.stopCurrentTask();
if (stoppedTask) {
console.info(colors_1.default.green(`Task "${colors_1.default.cyan(stoppedTask.name)}" has been stopped.`));
console.info(colors_1.default.green(`It took ${colors_1.default.cyan(utils.makeDurationString(Date.now() - stoppedTask.startTime))}.`));
}
else {
console.info(colors_1.default.yellow('No task has been started. Nothing to stop.'));
}
}
catch (e) {
console.error(colors_1.default.red('Cannot stop the task. The error: '));
console.error(e);
}
});
void program.parseAsync(process.argv);