UNPKG

vrem

Version:

An open-source automatic time-tracker

156 lines (155 loc) 7.2 kB
#!/usr/bin/env node "use strict"; 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);