From 05d3aaa8dd0eebc6ee7009f9477176bdc937904b Mon Sep 17 00:00:00 2001 From: Luminiferous Date: Tue, 10 Jun 2025 16:55:20 +0200 Subject: [PATCH] Added backup-nexttape Work in Progress --- autoload/assono-backup-nexttape.nu | 52 ++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 autoload/assono-backup-nexttape.nu diff --git a/autoload/assono-backup-nexttape.nu b/autoload/assono-backup-nexttape.nu new file mode 100644 index 0000000..2dccb8d --- /dev/null +++ b/autoload/assono-backup-nexttape.nu @@ -0,0 +1,52 @@ +export def lumen-assono-backup-nexttape [dateinput: datetime]: nothing -> nothing { + $dateinput | get-backup-string + print 'Next Required Tape:' + print $'($dateinput | get-backup-string)' + print '' + print 'Tapes after that:' + + ..9 | each {|i| + print $'($i): (($dateinput + ((7 * $i) | into duration -u day)) | get-backup-string)' + } +} + +def get-backup-string []: datetime -> string { + print $in + let saturdayOfMonth = $in | get-week-of-month 6 + let monthOfQuarter = $in | get-month-of-quarter + let quarter = $in | get-quarter + let year = $in | get-year + if ($saturdayOfMonth == 1) { + if ($monthOfQuarter == 1) { + if ($quarter == 1) { + $'TapeLTO5-Y($year)' + } else { + $'TapeLTO5-Q($quarter)' + } + } else { + $'TapeLTO5-M($monthOfQuarter)' + } + } else { + $'TapeLTO5-W($saturdayOfMonth)' + } +} + +def get-week-of-month [weekdayindex: int]: datetime -> int { + ($in + ($weekdayindex | into duration -u day) - (($in | format date '%w' ) | into duration -u day)) | format date %w +} + +def get-month-of-quarter []: datetime -> int { + mut month = $in | format date '%m' | into int + while ($month > 3) { + $month -= 3 + } + $month +} + +def get-quarter []: datetime -> int { + (($in | format date '%m') | into int) / 3 | math ceil +} + +def get-year []: datetime -> int { + $in | format date '%Y' +}