UNPKG

worklog-cli

Version:

A CLI tool for managing worklogs and timesheets

68 lines (56 loc) 2.06 kB
#!/usr/bin/env node import { program } from 'commander'; import inquirer from 'inquirer'; import dayjs from 'dayjs'; import chalk from 'chalk'; import figlet from 'figlet'; import boxen from 'boxen'; import gradient from 'gradient-string'; import { execSync } from 'child_process'; // These must also be ESM-compatible: import { appendWorkLog, getTodayLogs, getTodayFirstLogStartTime } from './utils/sheets.js'; import { submitForm } from './utils/form.js'; program .command('log') .description('Log today\'s work') .action(async () => { const bannerText = figlet.textSync('Work Logger', { horizontalLayout: 'default' }); const styledBanner = gradient.pastel.multiline(bannerText); console.log( boxen(`${styledBanner}\n${chalk.gray('By Ramya Lakhani')}`, { padding: 1, borderColor: 'cyan', borderStyle: 'round', margin: 1, }) ); const answers = await inquirer.prompt([ { type: 'input', name: 'task', message: chalk.cyan('Task description:') }, { type: 'input', name: 'start', message: chalk.cyan('Start time (HH:mm):') }, { type: 'input', name: 'end', message: chalk.cyan('End time (HH:mm):') }, { type: 'input', name: 'project', message: chalk.cyan('Project name:') }, ]); const date = dayjs().format('YYYY-MM-DD'); await appendWorkLog({ date, task: answers.task, start: answers.start, end: answers.end, project: answers.project, }); console.log(chalk.green('\n✅ Work log successfully added to Google Sheets.\n')); }); program .command('submit-form <time>') .description('Submit today\'s tasks to Google Form') .action(async time => { const logs = await getTodayLogs(); const startTime = await getTodayFirstLogStartTime(); if (!Object.keys(logs).length) { console.log('⚠️ No tasks found for today.'); return; } await submitForm({ logs, startTime, time }); execSync('senddiscordtask ' + process.env.DISCORD_USER_ID_TO_SEND); }); program.parse(process.argv);