From b4d725e7dc2fa4eba5f66ec623b7d79ba6878087 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Tue, 9 Sep 2025 21:49:40 -0500 Subject: adding compress function --- dotfiles/system/.profile.d/compress.sh | 75 ++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 dotfiles/system/.profile.d/compress.sh (limited to 'dotfiles') diff --git a/dotfiles/system/.profile.d/compress.sh b/dotfiles/system/.profile.d/compress.sh new file mode 100644 index 0000000..0a9a7db --- /dev/null +++ b/dotfiles/system/.profile.d/compress.sh @@ -0,0 +1,75 @@ +#!/bin/sh +# Craig Jennings +# convenience compression function + +compress () { + if [ $# -ne 2 ]; then + echo "Usage: compress " + echo "Formats: tar.bz2, tar.gz, bz2, tar, tbz2, tgz, zip, gz, Z" + return 1 + fi + + format="$1" + target="$2" + + if [ ! -e "$target" ]; then + echo "Error: '$target' does not exist" + return 1 + fi + + basename=$(basename "$target") + + # Determine output filename first + case "$format" in + tar.bz2|tbz2) output="${basename}.tar.bz2" ;; + tar.gz|tgz) output="${basename}.tar.gz" ;; + bz2) output="${target}.bz2" ;; + gz) output="${target}.gz" ;; + tar) output="${basename}.tar" ;; + zip) output="${basename}.zip" ;; + Z) output="${target}.Z" ;; + *) + echo "Error: Unknown format '$format'" + return 1 + ;; + esac + + # Check if output file already exists + if [ -e "$output" ]; then + printf "Warning: '%s' already exists. Overwrite? (y/N): " "$output" + read -r response + case "$response" in + [yY]|[yY][eE][sS]) + rm -f "$output" + ;; + *) + echo "Aborted." + return 1 + ;; + esac + fi + + # perform the compression + case "$format" in + tar.bz2|tbz2) tar -cjf "$output" "$target" ;; + tar.gz|tgz) tar -czf "$output" "$target" ;; + bz2) + [ -d "$target" ] && echo "Error: bz2 only works on files" && return 1 + bzip2 -k "$target" + ;; + gz) + [ -d "$target" ] && echo "Error: gz only works on files" && return 1 + gzip -k "$target" + ;; + tar) tar -cf "$output" "$target" ;; + zip) + [ -d "$target" ] && zip -r "$output" "$target" || zip "$output" "$target" + ;; + Z) + [ -d "$target" ] && echo "Error: Z only works on files" && return 1 + compress -c "$target" > "$output" + ;; + esac + + [ $? -eq 0 ] && echo "✓ Created $output" || echo "✗ Compression failed" +} -- cgit v1.2.3