diff --git a/autoload/assono-backup-nexttape.nu b/autoload/assono-backup-nexttape.nu index 713501f..0c1b123 100644 --- a/autoload/assono-backup-nexttape.nu +++ b/autoload/assono-backup-nexttape.nu @@ -1,50 +1,46 @@ export def lumen-assono-backup-nexttape [dateinput: datetime]: nothing -> nothing { - print 'Next Required Tape:' - print $'($dateinput | get-backup-string)' - print '' - print 'Tapes after that:' + print 'Next Required Tape:' + print $'($dateinput | get-backup-string 0)' + print '' + print 'Tapes after that:' - 1..9 | each {|i| - print $'($i): (($dateinput + ((7 * $i) | into duration -u day)) | get-backup-string)' - } | ignore + 1..11 | each {|i| + print ($dateinput | get-backup-string $i) + } | ignore } -def get-backup-string []: datetime -> string { - let backupDay = $in - ($in | format date '%w' | into duration -u day) + 6day - let saturdayOfMonth = $backupDay | get-week-of-month - let monthOfQuarter = $backupDay | get-month-of-quarter - let quarter = $backupDay | get-quarter - let year = $backupDay | get-year - if ($saturdayOfMonth == 1) { - if ($monthOfQuarter == 1) { - if ($quarter == 1) { - $'TapeLTO5-Y(($year | into string | str substring 3..))' - } else { - $'TapeLTO5-Q($quarter)' - } - } else { - $'TapeLTO5-M($monthOfQuarter)' - } - } else { - $'TapeLTO5-W($saturdayOfMonth)' - } -} +def get-backup-string [index]: datetime -> string { + let firstDayMonth = $'01-((($in | format date '%m' | into int) + $index) mod 12 + 1)($in | format date '-%y')' | into datetime --format '%d-%m-%y' + let firstDayMonth = if ($firstDayMonth < $in) { + $'($firstDayMonth | format date '%d-%m-')(($firstDayMonth | format date '%y' | into int) + 1)' | into datetime --format '%d-%m-%y' + } else { + $firstDayMonth + } + let backupDay = $firstDayMonth - ($firstDayMonth | format date '%w' | into duration -u day) + 6day + let monthOfQuarter = $backupDay | get-month-of-quarter + let quarter = $backupDay | get-quarter + let year = $backupDay | get-year -def get-week-of-month []: datetime -> int { - let firstDay = ($in - ($in | format date '%d' | into duration -u day) + 1day) - let $firstSpecificDay = $firstDay + (((($in | format date '%w' | into int) + 7 - ($firstDay | format date '%w' | into int)) mod 7) | into duration -u day) - ((($in - $firstSpecificDay) | into int | into datetime | format date '%d' | into int) / 7 | math floor) + 1 - } + if ($monthOfQuarter == 1) { + if ($quarter == 1) { + $"($backupDay): TapeLTO5-Y(($year - 1| into string | str substring 3..))" + } else { + $"($backupDay): TapeLTO5-Q($quarter - 1)" + } + } else { + $"($backupDay): TapeLTO5-M($monthOfQuarter - 1)" + } +} def get-month-of-quarter []: datetime -> int { - let month = ($in | format date '%m' | into int) + 3 - ($month..($month - 3)..1) | last + let month = ($in | format date '%m' | into int) + 3 + ($month..($month - 3)..1) | last } def get-quarter []: datetime -> int { - (($in | format date '%m') | into int) / 3 | math ceil + (($in | format date '%m') | into int) / 3 | math ceil } def get-year []: datetime -> int { - $in | format date '%Y' + $in | format date '%Y' | into int }