UNPKG

@codecovevienna/gittt-cli

Version:

Tracking time with CLI into a git repository

102 lines (101 loc) 4.97 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TimerHelper = void 0; const inquirer_1 = __importDefault(require("inquirer")); const lodash_1 = __importDefault(require("lodash")); const moment_1 = __importDefault(require("moment")); const types_1 = require("../types"); const _1 = require("./"); class TimerHelper { constructor(fileHelper, projectHelper) { this.startTimer = () => __awaiter(this, void 0, void 0, function* () { const now = (0, moment_1.default)(); if (!this.fileHelper.timerFileExists()) { // file does not exist just init with start time now yield this.fileHelper.saveTimerObject({ start: now.valueOf(), stop: 0, }); _1.LogHelper.info(`Started Timer: ${(0, moment_1.default)(now).format("DD.MM.YYYY HH:mm:ss")}`); } else { // file exists check if timer is running if (yield this.isTimerRunning(now)) { const timer = yield this.fileHelper.getTimerObject(); _1.LogHelper.info(`Timer is already started ${(0, moment_1.default)(timer.start).from(now)}`); } else { yield this.fileHelper.saveTimerObject({ start: now.valueOf(), stop: 0, }); _1.LogHelper.info(`Started Timer: ${(0, moment_1.default)(now).format("DD.MM.YYYY HH:mm:ss")}`); } } }); this.stopTimer = (gitCommitMessage, project) => __awaiter(this, void 0, void 0, function* () { const now = (0, moment_1.default)(); if (yield this.isTimerRunning(now)) { const timer = yield this.fileHelper.getTimerObject(); const diff = now.diff(timer.start); let finalCommitMessage = gitCommitMessage; if (!finalCommitMessage) { // ask for message const gitCommitMessageAnswer = yield inquirer_1.default.prompt([ { message: "Git Commit Message:", name: "gitCommitMessage", type: "input", }, ]); finalCommitMessage = gitCommitMessageAnswer.gitCommitMessage; } yield this.projectHelper.addRecordToProject({ amount: moment_1.default.duration(diff).asHours(), end: now.valueOf(), message: lodash_1.default.isEmpty(finalCommitMessage) ? undefined : finalCommitMessage, type: types_1.RECORD_TYPES.Time, }, project); timer.stop = now.valueOf(); yield this.fileHelper.saveTimerObject(timer); _1.LogHelper.info(`Timer stopped and work time is ${moment_1.default.utc(moment_1.default .duration(diff) .asMilliseconds()).format("HH:mm:ss.SSS")}`); } else { _1.LogHelper.info("No timer was started previously"); } }); this.killTimer = () => __awaiter(this, void 0, void 0, function* () { if (yield this.isTimerRunning((0, moment_1.default)())) { this.fileHelper.initTimerFile(); _1.LogHelper.warn("Timer was killed"); } else { _1.LogHelper.info("No timer was started previously"); } }); this.isTimerRunning = (now) => __awaiter(this, void 0, void 0, function* () { if (this.fileHelper.timerFileExists()) { const timer = yield this.fileHelper.getTimerObject(); return timer.start > 0 && timer.start < now.valueOf() && timer.stop === 0; } return false; }); this.fileHelper = fileHelper; this.projectHelper = projectHelper; } } exports.TimerHelper = TimerHelper;