at main 1.2 kB view raw
1# From https://github.com/nushell/nu_scripts/blob/main/modules/data_extraction/ultimate_extractor.nu 2 3# Function to extract archives with different extensions. 4export def extract [name:string] { 5 let handlers = [ [extension command]; 6 ['tar\.bz2|tbz|tbz2' 'tar xvjf'] 7 ['tar\.gz|tgz' 'tar xvzf'] 8 ['tar\.xz|txz' 'tar xvf'] 9 ['tar\.Z' 'tar xvZf'] 10 ['bz2' 'bunzip2'] 11 ['deb' 'ar x'] 12 ['gz' 'gunzip'] 13 ['pkg' 'pkgutil --expand'] 14 ['rar' 'unrar x'] 15 ['tar' 'tar xvf'] 16 ['xz' 'xz --decompress'] 17 ['zip|war|jar|nupkg' 'unzip'] 18 ['Z' 'uncompress'] 19 ['7z' '7za x'] 20 ] 21 let maybe_handler = ($handlers | where $name =~ $'\.(($it.extension))$') 22 if ($maybe_handler | is-empty) { 23 error make { msg: "unsupported file extension" } 24 } else { 25 let handler = ($maybe_handler | first) 26 nu -c ($handler.command + ' ' + $name) 27 } 28}