git-publish
Publish local directories to remote servers with ease using git + ssh.
#!/bin/sh
# This is a simple install script for git-publish.
# It prompts the user to chose a directory on their $PATH and then copies the
# git-publish script to it. It then copies the git-publish manpage to it's
# corresponsing directory.
#
# Copyright (C) 2022 Rex McKinnon
#
# NR <= 9 && NR != 1 { printf " (%d) %s\n", NR, $1 }; \
# Prompt user for installation directory
echo "Select an install directory on your \$PATH:"
echo "$PATH" | \
awk -- 'BEGIN {RS = ":"}; \
NR <= 9 { printf " "}; \
NR == 1 { printf "(1) %s [default]\n", $1}; \
NR >= 2 { printf "(%d) %s\n", NR, $1 }'
read -p "Input a number (enter for default): " PATH_FIELD
INSTALL_DIR="$(echo $PATH | cut -d: -f${PATH_FIELD:=1})"
# Check if install directory exists and if its writeable
if [ -d "$INSTALL_DIR" ] && [ ! -w "$INSTALL_DIR" ]; then
echo "Error: You do not have permission to install to: $INSTALL_DIR"
echo "Error: Re-run as root or choose a different install directory."
exit 1
fi
# Copy git-publish script to install directory and mark it executable
echo -n "Installing 'git-publish' to '$INSTALL_DIR' -- "
cp git-publish "$INSTALL_DIR"
RET=$?
chmod --silent a+x "$INSTALL_DIR/git-publish"
RET="$(( $RET + $? ))"
if [ $RET -eq 0 ]; then
echo "success"
else
echo "FAIL: $RET"
echo -e "Aborting installation...\n"
exit 1
fi
# Find where man pages are stored. Right now we just take the first path of the
# 'manpath' command output. I don't know how portable the 'manpath' command is.
MAN_TEST="$(manpath | cut -d: -f1)"
MANPATH_RET=$?
if [ $MANPATH_RET -ne 0 ]; then
echo "Warn: 'manpath' command not found, so the man page was not installed."
echo "Warn: Install it yourself by copying git-publish.1 to the correct man directory."
elif [ ! -d "$MAN_TEST" ]; then
echo "Warn: Man page directory not found, so the man page was not installed."
echo "Warn: Install it yourself by copying git-publish.1 to the correct man directory."
else
MAN_DIR="$MAN_TEST"
fi
# Check if the directory we found is writeable.
if [ -w "$MAN_DIR" ]; then
echo -n "Installing 'docs/git-publish.1' to '$MAN_DIR' -- "
mkdir -p "$MAN_DIR/man1"
RET=$?
cp docs/git-publish.1 "$MAN_DIR/man1/"
RET="$(( $RET + $? ))"
if [ $RET -eq 0 ]; then
echo "success"
else
echo "FAIL: $RET"
echo "Warn: Man page not installed!"
echo "Warn: Install it yourself by copying git-publish.1 to the correct man directory."
fi
else
echo "Warn: You do not have permission to install man pages to: '$MAN_DIR'"
echo "Warn: Re-run as root or manually copy 'docs/git-publish.1' to the directory."
fi
echo -e "\nSuccessfully installed git-publish."