UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

74 lines 3.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ScheduleMigration = void 0; const tslib_1 = require("tslib"); const later_1 = tslib_1.__importDefault(require("@breejs/later")); const is_1 = tslib_1.__importDefault(require("@sindresorhus/is")); const regex_1 = require("../../../util/regex"); const abstract_migration_1 = require("../base/abstract-migration"); const shortHoursRegex = (0, regex_1.regEx)(/( \d?\d)((a|p)m)/g); const afterBeforeRegex = (0, regex_1.regEx)(/^(.*?)(after|before) (.*?) and (after|before) (.*?)( |$)(.*)/); const dayRegex1 = (0, regex_1.regEx)(/every (mon|tues|wednes|thurs|fri|satur|sun)day$/); const dayRegex2 = (0, regex_1.regEx)(/every ([a-z]*day)$/); class ScheduleMigration extends abstract_migration_1.AbstractMigration { propertyName = 'schedule'; run(value) { if (value) { // massage to array first let schedules = []; if (is_1.default.string(value)) { schedules = [value]; } if (is_1.default.array(value)) { schedules = [...value]; } // split 'and' const schedulesLength = schedules.length; for (let i = 0; i < schedulesLength; i += 1) { if (schedules[i].includes(' and ') && schedules[i].includes('before ') && schedules[i].includes('after ')) { const parsedSchedule = later_1.default.parse.text( // We need to massage short hours first before we can parse it schedules[i].replace(shortHoursRegex, '$1:00$2')).schedules[0]; // Only migrate if the after time is greater than before, e.g. "after 10pm and before 5am" if (!parsedSchedule?.t_a || !parsedSchedule.t_b) { continue; } if (parsedSchedule.t_a[0] > parsedSchedule.t_b[0]) { const toSplit = schedules[i]; schedules[i] = toSplit .replace(afterBeforeRegex, '$1$2 $3 $7') .trim(); schedules.push(toSplit.replace(afterBeforeRegex, '$1$4 $5 $7').trim()); } } } for (let i = 0; i < schedules.length; i += 1) { if (schedules[i].includes('on the last day of the month')) { schedules[i] = schedules[i].replace('on the last day of the month', 'on the first day of the month'); } if (schedules[i].includes('on every weekday')) { schedules[i] = schedules[i].replace('on every weekday', 'every weekday'); } if (schedules[i].endsWith(' every day')) { schedules[i] = schedules[i].replace(' every day', ''); } if (dayRegex1.test(schedules[i])) { schedules[i] = schedules[i].replace(dayRegex2, 'on $1'); } if (schedules[i].endsWith('days')) { schedules[i] = schedules[i].replace('days', 'day'); } } if (is_1.default.string(value) && schedules.length === 1) { this.rewrite(schedules[0]); } else { this.rewrite(schedules); } } } } exports.ScheduleMigration = ScheduleMigration; //# sourceMappingURL=schedule-migration.js.map