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' }