Project

General

Profile

1
#!/bin/bash -e
2
. "$(dirname "${BASH_SOURCE[0]}")"/util.sh
3

    
4
if self_not_included; then
5

    
6
### zip
7

    
8
zip()
9
{
10
	echo_func
11
	cmd_log_fd=1 try self "$@" || ignore 12 #"zip has nothing to do" (`man zip`)
12
}
13

    
14
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

    
25
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
	# -o is safe because -u only extracts newer files
28

    
29

    
30
### compression of individual files
31

    
32
compress()
33
{
34
	begin_target; : "${full_file:?}"; local zip_file="$full_file.zip"
35
	stdout="$zip_file" to_file compress__zip_and_test
36
}
37
compress__zip_and_test()
38
{
39
	zip -9 <"$full_file"
40
	unzip -t "$zip_file" # only if newly created
41
}
42

    
43
expand()
44
{
45
	begin_target; : "${full_file:?}"; local zip_file="$full_file.zip"
46
	stdout="$full_file" to_file unzip <"$zip_file"
47
}
48

    
49
fi
(1-1/11)