30 lines
492 B
Bash
Executable File
30 lines
492 B
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ $# -lt 3 ]; then
|
|
echo "usage: ./mkhaskalimg.sh <dir> <cmd> <out>"
|
|
fi
|
|
|
|
dir="$1"
|
|
cmd="$2"
|
|
out="$3"
|
|
|
|
(cd "$dir" && tar czf ../haskalimg.tar.gz *)
|
|
|
|
header=$(cat <<EOF
|
|
#!/bin/bash
|
|
extdir="/tmp/haskalimg-\$(whoami)-\$(head -c8 /dev/urandom | xxd -p)"
|
|
mkdir "\$extdir"
|
|
tail -n +11 "\$0" | tar xz -C "\$extdir"
|
|
function finish {
|
|
rm -rf "\$extdir"
|
|
}
|
|
trap finish EXIT
|
|
\$extdir/$2
|
|
exit
|
|
EOF
|
|
)
|
|
|
|
cat <(echo "$header") haskalimg.tar.gz > "$out"
|
|
rm haskalimg.tar.gz
|
|
chmod +x "$out"
|