Project

General

Profile

1 9015 aaronmk
#!/bin/bash -e
2
. "$(dirname "${BASH_SOURCE[0]}")"/util.sh
3
4
if self_not_included; then
5
6
### zip
7
8 9074 aaronmk
zip()
9 9015 aaronmk
{
10 9215 aaronmk
	echo_func
11 9537 aaronmk
	cmd_log_fd=1 try self "$@" || ignore 12 #"zip has nothing to do" (`man zip`)
12 9015 aaronmk
}
13
14 12986 aaronmk
unzip()
15
{
16
	echo_func
17
	local piping="$(test "$1" = -p; exit2bool)"
18
19
	cmd_log_fd="$(if test ! "$piping"; then echo 1; fi)" try self "$@"
20
		# cmd_log_fd: don't filter stdout if piping extracted data to it
21
	if test "$piping"; then ignore_e 1; fi # unzip exits 1 on SIGPIPE
22
	end_try
23
}
24 9015 aaronmk
25 9249 aaronmk
zip_newer()   { echo_func; set_inv force; zip   ${no_force:+-u }"$@"; }
26
unzip_newer() { echo_func; set_inv force; unzip ${no_force:+-u }-o "$@"; }
27 9015 aaronmk
	# -o is safe because -u only extracts newer files
28
29 14533 aaronmk
30
### compression of individual files
31
32
compress()
33
{
34
	begin_target; : "${full_file:?}"; local zip_file="$full_file.zip"
35 14541 aaronmk
	zip_newer -9 "$zip_file" "$full_file"
36 14533 aaronmk
	unzip -t "$zip_file" # only if newly created
37
}
38
39
expand()
40
{
41
	begin_target; : "${full_file:?}"; local zip_file="$full_file.zip"
42
	stdout="$full_file" to_file unzip <"$zip_file"
43
}
44
45 9015 aaronmk
fi