Was supposed to be a linux distribution, now just a collection of build scripts for packages on top of (ideally) any distribution.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
2.8 KiB

#!/bin/sh -e
# This is a very hacky script to generate satellites.
# A honestly shitty attempt to auto-generate satellites.
astronaut="$(dirname "$0")/astronaut"
[ ! -f "$astronaut" ] && astronaut="astronaut"
# TODO: These variables won't always be valid
dir_build="$PWD/build"
dir_source="$PWD/source"
dir_install="$PWD/install"
tempdir="/tmp/internaut"
rm -rf "$tempdir"
mkdir -p "$tempdir"
intshell() {
# This is the most hacky part in the script, so bear with me.
# Why this is even a thing, is because I need two things:
# - Run some commands on start
# - Capture all input
# I'm sure "tee ouput | bash --rcfile filewithcommands" would effectively do the same thing, but fuck bash.
echo "Entering shell..."
cmdfifo="$tempdir/cmdfifo"
waitfifo="$tempdir/waitfifo"
mkfifo "$cmdfifo" 2> /dev/null || true
mkfifo "$waitfifo" 2> /dev/null || true
sh -s < "$cmdfifo" "$pkgfile" &
shpid=$!
echo ". \"$astronaut\"; set +e; echo \$PWD > \"$waitfifo\"; cat \"$waitfifo\"" > "$cmdfifo"
while ps -p $shpid > /dev/null; do
printf "$(cat "$waitfifo")> "
read cmd
case "$cmd" in
exit) ;;
!*) cmd="$(echo "$cmd" | cut -c 2-)" ;;
*) echo "$cmd" >> "$pkgfile" ;;
esac
echo "$cmd" > "$cmdfifo"
echo "echo \$PWD > \"$waitfifo\"; cat \"$waitfifo\"" > "$cmdfifo"
printf '' > "$waitfifo"
done
rm -f "$waitfifo" "$cmdfifo"
echo 'End shell.'
}
# The rest of this script is your olde gather info stuff.
printf 'Package name: '
read pkgname
pkgfile="$PWD/$pkgname.sat"
echo "# Generated with internaut. Please revise and edit." > "$pkgfile"
echo >> "$pkgfile"
printf 'Software name [enter for same as package]: '
read name
if [ "$name" ]; then
echo "name=$name" >> "$pkgfile"
else
echo "name=$pkgname" >> "$pkgfile"
fi
printf 'Version: '
read version
echo "version=$version" >> "$pkgfile"
printf 'Update URL: '
read update_url
echo "update_url=\"$update_url\"" >> "$pkgfile"
echo >> "$pkgfile"
# Now we ask the user to fetch the files they need.
echo '=> Header'
intshell
# Generate the md5sums, append them to the satellite, for manual inspection.
for file in $(find "$dir_source" -type f); do
printf '# ' >> "$pkgfile"
md5sum "$file" >> "$pkgfile"
done
printf 'header_end\n\n' >> "$pkgfile"
# Now we ask the user to build and install the program in question.
echo '=> Build'
intshell
# Replacing all the instances of the name and the version with the variable.
#sed -i -e "s/$name/\$name/g" -e "s/$version/\$version/g" -e "s/name=\$name/name=$name/g" -e "s/version=\$version/version=$version/g" "$pkgfile"
# TODO: Why dun dis shit work?
# The usual vim config line.
printf '\n# vim:set tabstop=4 shiftwidth=4 syntax=sh et:\n' >> "$pkgfile"
rm -rf "$tempdir"