author | Tero Marttila <terom@paivola.fi> |
Mon, 09 Mar 2015 23:31:13 +0200 | |
changeset 738 | 3104fdf7ea26 |
parent 709 | 4e0450dc57a9 |
permissions | -rw-r--r-- |
627 | 1 |
### Command execution |
2 |
## Execute command, possibly logging its execution. |
|
3 |
# |
|
4 |
# cmd $cmd... |
|
5 |
# |
|
6 |
# Fails if the command returns an error exit code. |
|
7 |
function cmd { |
|
8 |
log_cmd "$@" |
|
9 |
||
10 |
"$@" || die "Failed: $@" |
|
11 |
} |
|
12 |
||
13 |
## Execute command as a test, logging its execution at log_cmd |
|
14 |
# |
|
15 |
# cmd_test $cmd... && ... || ... |
|
16 |
# |
|
17 |
# Fails if the command returns an error exit code. |
|
18 |
function cmd_test { |
|
19 |
log_cmd "$@" |
|
20 |
||
21 |
"$@" |
|
22 |
} |
|
709
4e0450dc57a9
lib/pvl/cmd: cmd_sudo
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
23 |
|
627 | 24 |
## Execute command, prefixing its output on stdout with given indent prefix. |
25 |
# |
|
26 |
# indent " " $cmd... |
|
27 |
# |
|
28 |
# Output is kept on stdout, exit status is that of the given command. |
|
29 |
function cmd_indent () { |
|
30 |
local indent="$1"; shift |
|
31 |
||
32 |
"$@" | sed "s/^/$indent/" |
|
33 |
||
34 |
return ${PIPESTATUS[0]} |
|
35 |
} |
|
709
4e0450dc57a9
lib/pvl/cmd: cmd_sudo
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
36 |
|
4e0450dc57a9
lib/pvl/cmd: cmd_sudo
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
37 |
## Execute a command as root, using sudo if required. |
4e0450dc57a9
lib/pvl/cmd: cmd_sudo
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
38 |
function cmd_sudo { |
4e0450dc57a9
lib/pvl/cmd: cmd_sudo
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
39 |
if [ $UID -eq 0 ]; then |
4e0450dc57a9
lib/pvl/cmd: cmd_sudo
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
40 |
cmd "$@" |
4e0450dc57a9
lib/pvl/cmd: cmd_sudo
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
41 |
else |
4e0450dc57a9
lib/pvl/cmd: cmd_sudo
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
42 |
cmd sudo "$@" |
4e0450dc57a9
lib/pvl/cmd: cmd_sudo
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
43 |
fi |
4e0450dc57a9
lib/pvl/cmd: cmd_sudo
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
44 |
} |