@gameroom/cli
Version:
A command line tool for Gameroom
68 lines (65 loc) • 2.33 kB
JavaScript
const { dateAddDays, parseDate } = require('../helpers'),
{ prompt } = require('../consoleIO'),
PERIOD_START = 1598763600000 // Aug 30, 2020
module.exports = async (options) => {
if (options.today) {
const date = new Date()
date.setHours(0,0,0,0)
options.start_at = date
options.end_at = dateAddDays(date, 1)
}
if (options.yesterday) {
const date = new Date()
date.setHours(0,0,0,0)
options.end_at = date
options.start_at = dateAddDays(date, -1)
}
if (options['this-week']) {
const date = new Date()
date.setHours(0,0,0,0)
options.start_at = date.setDate(date.getDate() - date.getDay())
options.end_at = dateAddDays(date, 7)
}
if (options['last-week']) {
const date = new Date()
date.setHours(0,0,0,0)
options.end_at = date.setDate(date.getDate() - date.getDay())
options.start_at = dateAddDays(date, -7)
}
if (options['this-period']) {
const date = new Date()
date.setHours(0,0,0,0)
date.setDate(date.getDate() - date.getDay()) // Sunday
let end = new Date(PERIOD_START)
while (end <= date) end = dateAddDays(end, 14) // Period End
options.end_at = end
options.start_at = dateAddDays(end, -14)
}
if (options['last-period']) {
const date = new Date()
date.setHours(0,0,0,0)
date.setDate(date.getDate() - date.getDay()) // Sunday
let end = new Date(PERIOD_START)
while (end <= date) end = dateAddDays(end, 14) // This Period End
options.end_at = dateAddDays(end, -14)
options.start_at = dateAddDays(end, -28)
}
if (!options.start_at) options.start_at = await prompt('start_at (mm/dd/yy): ')
options.start_at = parseDate(options.start_at)
let end_ats = []
if (options.weeks) {
options.weeks = parseInt(options.weeks)
for (let w = 1; w <= options.weeks; w++) end_ats.push(dateAddDays(options.start_at, 7 * w))
options.weeks = end_ats
options.end_at = options.weeks[options.weeks.length - 1]
} else if (options.days) {
options.days = parseInt(options.days)
options.end_at = dateAddDays(options.start_at, options.days)
} else if (options.end_at) {
options.end_at = parseDate(options.end_at)
} else {
options.end_at = await prompt('end_at (mm/dd/yy): ')
options.end_at = dateAddDays(parseDate(options.end_at), 1)
}
return options
}