@codingtools/cdt
Version:
CLI for Developers
82 lines • 3.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const command_1 = require("@oclif/command");
const chalk_1 = tslib_1.__importDefault(require("chalk"));
const moment_timezone_1 = tslib_1.__importDefault(require("moment-timezone")); //has both momentjs and timezone support
// @ts-ignore
moment_timezone_1.default.suppressDeprecationWarnings = true;
const logger_1 = tslib_1.__importDefault(require("../utilities/logger"));
// TODO: add timezone support for input and output
class Datetime extends command_1.Command {
//arguments 'date' ( default now() ), 'format' ( default 'dd-MMM-YYYY' ), 'timezone' (default user local)
async run() {
const { args, flags } = this.parse(Datetime);
args.date = this.getDateString(flags, args); // getting date object
args.locale = this.getLocale(flags, args); // getting date object
args.format = this.getFormat(flags, args); // getting date object
args.timezone = this.getTimezone(flags, args); // getting date object
logger_1.default.info(this, `Input String: ${args.date ? args.date : chalk_1.default.magenta('Not Provided, using Current timestamp')}`);
logger_1.default.info(this, `Locale: ${chalk_1.default.magenta(args.locale)}`);
logger_1.default.info(this, `Format: ${chalk_1.default.magenta(args.format)}`);
logger_1.default.info(this, `Timezone: ${chalk_1.default.magenta(args.timezone)}`); // true - do not used cached timezone, find every time
args.momentDate = this.getMomentDate(flags, args);
this.checkParameters(flags, args);
logger_1.default.success(this, `${args.momentDate.tz(args.timezone).format(args.format)}`);
}
// tslint:disable-next-line:no-unused
getTimezone(flags, args) {
if (flags.timezone)
return flags.timezone;
else
return moment_timezone_1.default.tz.guess();
}
// tslint:disable-next-line:no-unused
getLocale(flags, args) {
if (flags.locale)
return flags.locale;
else
return 'en';
}
getDateString(flags, args) {
let dateString;
if (args.date)
dateString = args.date;
else if (flags.date)
dateString = flags.date;
else
dateString = undefined; // will be set to now()
return dateString;
}
getMomentDate(flags, args) {
let date;
if (args.date)
date = moment_timezone_1.default.tz(args.date, args.timezone);
else
date = moment_timezone_1.default.tz([], args.timezone); // return now() if args.date is undefined
// set locale
date.locale(flags.locale);
return date;
}
// tslint:disable-next-line:no-unused
checkParameters(flags, args) {
if (!args.momentDate.isValid())
logger_1.default.error(this, 'Invalid Date String Passed');
}
// tslint:disable-next-line:no-unused
getFormat(flags, args) {
return flags.format ? flags.format : Datetime.defaultFormat;
}
}
exports.default = Datetime;
Datetime.description = 'Date and Time utility';
Datetime.defaultFormat = 'Do MMMM YYYY, h:m:s A, Z UTC';
Datetime.flags = {
help: command_1.flags.help({ char: 'h' }),
date: command_1.flags.string({ char: 'd', description: 'Datetime input string, default: Current Datetime, could also be passed through argument' }),
format: command_1.flags.string({ char: 'f', description: `Datetime format, default: ${Datetime.defaultFormat}` }),
timezone: command_1.flags.string({ char: 'z', description: 'Timezone for Datetime parsing, default: Your timezone' }),
locale: command_1.flags.string({ char: 'l', description: 'Locale, default: en' }),
};
Datetime.args = [{ name: 'date' }];
//# sourceMappingURL=datetime.js.map