UNPKG

@codingtools/cdt

Version:
82 lines 3.87 kB
"use strict"; 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