1
0
Files
dotfiles/autoload/assono-backup-nexttape.nu

47 lines
1.4 KiB
Nu

export def lumen-assono-backup-nexttape [dateinput: datetime]: nothing -> nothing {
print 'Next Required Tape:'
print $'($dateinput | get-backup-string 0)'
print ''
print 'Tapes after that:'
1..11 | each {|i|
print ($dateinput | get-backup-string $i)
} | ignore
}
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
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
}
def get-quarter []: datetime -> int {
(($in | format date '%m') | into int) / 3 | math ceil
}
def get-year []: datetime -> int {
$in | format date '%Y' | into int
}