mid-kid
10 years ago
commit
578a7a1cdd
2 changed files with 104 additions and 0 deletions
@ -0,0 +1,93 @@ |
|||
#!/bin/sh |
|||
|
|||
set -e |
|||
|
|||
# Paths |
|||
dir_build="$PWD/build" |
|||
dir_source="$PWD/source" |
|||
dir_install="$PWD/install" |
|||
|
|||
show_help() { |
|||
echo "This astronaut will help you build some satellites. |
|||
Just describe what he's got to do in a satellite file. |
|||
Usage: $0 [-s <dir>] [-b <dir>] [-i <dir>] <satellite> |
|||
|
|||
-s Set source directory |
|||
-b Set build directory |
|||
-i Set install directory" |
|||
} |
|||
|
|||
# Gather info |
|||
while getopts "h?s:b:i:" opt; do |
|||
case "$opt" in |
|||
h|\?) |
|||
show_help |
|||
exit 0 |
|||
;; |
|||
s) |
|||
dir_source=$(realpath "$OPTARG") |
|||
;; |
|||
b) |
|||
dir_build=$(realpath "$OPTARG") |
|||
;; |
|||
i) |
|||
dir_install=$(realpath "$OPTARG") |
|||
;; |
|||
esac |
|||
done |
|||
|
|||
shift $((OPTIND-1)) |
|||
[ "$1" = "--" ] && shift |
|||
|
|||
if [ ! "$1" ]; then |
|||
show_help |
|||
exit 1 |
|||
fi |
|||
|
|||
satellite=$(realpath "$1") |
|||
|
|||
# Tools for the astronaut |
|||
msg() { |
|||
echo "=> $@" |
|||
} |
|||
|
|||
download() { |
|||
local name=$(basename "$1") |
|||
local path="$dir_source/$name" |
|||
if [ ! -f "$path" ]; then |
|||
msg "Downloading $name" |
|||
if [ "$2" ]; then |
|||
local cmd="$(echo "$2" | sed -e 's@{dst}@'"$path"'@g' -e 's@{source}@'"$1"'@g')" |
|||
$cmd |
|||
else |
|||
curl -#L -o "$path" "$1" |
|||
fi |
|||
fi |
|||
} |
|||
|
|||
extract() { |
|||
msg "Extracting $1" |
|||
if [ "$2" ]; then |
|||
local cmd="$(echo "$2" | sed -e 's@{src}@'"$dir_source/$1"'@g')" |
|||
$cmd |
|||
else |
|||
tar xf "$dir_source/$1" |
|||
fi |
|||
} |
|||
|
|||
dlextract() { |
|||
download "$1" |
|||
extract "$(basename ""$1"")" |
|||
} |
|||
|
|||
extrafile() { |
|||
cp "$(dirname ""$satellite"")/$1" "$dir_build/$1" |
|||
} |
|||
|
|||
# Create the satellite |
|||
mkdir -p "$dir_source" |
|||
mkdir -p "$dir_build" |
|||
mkdir -p "$dir_install" |
|||
|
|||
cd "$dir_build" |
|||
. "$satellite" |
@ -0,0 +1,11 @@ |
|||
# Example of a satellite file, which is just a shell script with a cool name. |
|||
|
|||
name=hello |
|||
version=2.9 |
|||
|
|||
dlextract "http://ftp.gnu.org/pub/gnu/$name/$name-$version.tar.gz" |
|||
|
|||
cd "$name-$version" |
|||
./configure |
|||
make |
|||
make DESTDIR="$dir_install" install |
Loading…
Reference in new issue