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.
		
		
		
		
		
			
		
			
				
					
					
						
							106 lines
						
					
					
						
							2.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							106 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"
							 | 
						|
								
							 |