Created
April 8, 2018 08:01
-
-
Save silvernode/3ee6b9edd4ea7500c44904989b1d4d8d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/bash | |
# Colors | |
RED='\033[0;31m' | |
LRED="\033[1;31m" | |
BLUE="\033[0;34m" | |
LBLUE="\033[1;34m" | |
GREEN="\033[0;32m" | |
LGREEN="\033[1;32m" | |
YELLOW="\033[1;33m" | |
CYAN="\033[0;36m" | |
LCYAN="\033[1;36m" | |
PURPLE="\033[0;35m" | |
LPURPLE="\033[1;35m" | |
BWHITE="\e[1m" | |
NC='\033[0m' # No Color | |
# Environment Vars | |
adminCmd="su -c" | |
packageRepoUrl="https://github.com/voidlinux/void-packages.git" | |
packageRepoDir="/home/${USER}/.repos" | |
repoPath="${packageRepoDir}/void-packages" | |
package="$2" | |
autoPull="False" | |
debugOn="False" | |
function devInfo(){ | |
local gitBinPath=$(which git) | |
printf "${LPURPLE}Git binary path: ${LCYAN}${gitBinPath}${NC}\n" | |
printf "${LPURPLE}Repo Storage Directory: ${LCYAN}${packageRepoDir}${NC}\n" | |
printf "${LPURPLE}void-packages location: ${LCYAN}${repoPath}${NC}\n" | |
printf "${LPURPLE}Restricted settings config: ${LCYAN}${repoPath}/etc/conf${NC}\n\n" | |
} | |
function checkSetup() { | |
# Path & file checks | |
printf "${LCYAN}Running environment requirement checks...${NC}\n" | |
# Check Dependencies and handle admin rights method | |
local setAllowRestricted="XBPS_ALLOW_RESTRICTED=yes" | |
local checkAllowRestricted=$(cat ${repoPath}/etc/conf) | |
if [ -f /usr/bin/sudo ];then | |
adminCmd="sudo" | |
printf "${YELLOW}Setting admin command to 'sudo'...${NC}\n" | |
fi | |
if [ ! -f /usr/bin/git ];then | |
if [ "${adminCmd}" = "su -c" ];then | |
printf "${LRED}Enter password for user 'root'${NC}\n" | |
$adminCmd 'xbps-install -S git' | |
else | |
$adminCmd xbps-install -S git | |
fi | |
if [ ! -f /usr/bin/git ];then | |
printf "${LPURPLE}Git installed: ${LRED}[check failed] ${NC}\n" | |
gitCheck="Failed" | |
fi | |
elif [ -f /usr/bin/git ];then | |
printf "${LPURPLE}Git installed: ${LGREEN}[check passed]...${NC}\n" | |
gitCheck="Passed" | |
fi | |
# Check for the default repo storage location and create it if we need to | |
if [ ! -d ${packageRepoDir} ];then | |
mkdir ${packageRepoDir} | |
if [ ! -d ${packageRepoDir} ];then | |
printf "${LRED}${packageRepoDir} failed to be created, please check permissions...[check failed]" | |
repoStorageCheck="Failed" | |
fi | |
elif [ -d ${packageRepoDir} ];then | |
printf "${LPURPLE}Repo storage directory: ${LGREEN}[check passed]...${NC}\n" | |
repoStorageCheck="Passed" | |
fi | |
# Get a copy of void-packages if it doesn't already exist | |
if [ ! -d ${repoPath} ];then | |
git clone ${packageRepoUrl} ${packageRepoDir}/void-packages | |
if [ ! -d ${repoPath} ];then | |
printf "${LRED}void-packages could not be created in ${packageRepoDir}, check permissions...[check failed]${NC}\n" | |
repoCloneCheck="Failed" | |
fi | |
elif [ -d ${repoPath} ];then | |
printf "${LPURPLE}Repository cloned: ${LGREEN}[check passed]...${NC}\n" | |
repoCloneCheck="Passed" | |
fi | |
if [ "${checkAllowRestricted}" != "${setAllowRestricted}" ];then | |
echo "${setAllowRestricted}" > ${repoPath}/etc/conf | |
if [ "${checkAllowRestricted}" != "${setAllowRestricted}" ];then | |
printf "${LRED} Could enable restricted software building...[check failed]${NC}\n" | |
restrictedCheck="Failed" | |
fi | |
elif [ "${checkAllowRestricted}" = "${setAllowRestricted}" ];then | |
printf "${LPURPLE}Enable restricted software building: ${LGREEN}[check passed]${NC}\n" | |
restrictedCheck="Passed" | |
fi | |
if [ "${checkBootstrap}" = "" ];then | |
local checkBootstrap=$(${repoPath}/xbps-src list) | |
${repoPath}/xbps-src binary-bootstrap | |
local checkBootstrap=$(${repoPath}/xbps-src list) | |
if [ "${checkBootstrap}" = "" ];then | |
printf "${LPURPLE} Binary bootstrap ${LRED}[Check Failed]${NC}\n" | |
bootstrapCheck="Failed" | |
elif [ "${checkBootstrap}" != "" ];then | |
printf "${LPURPLE}Chroot Bootstrap: ${LGREEN}[check passed]...${NC}\n" | |
bootstrapCheck="Passed" | |
fi | |
elif [ "${checkBootstrap}" != "" ];then | |
${repoPath}/xbps-src bootstrap-update | |
printf "${LPURPLE}Chroot Bootstrap: ${LGREEN}[check passed]...${NC}\n" | |
bootstrapCheck="Passed" | |
fi | |
if [ "${bootstrapCheck}" = "Passed" ] && [ "${gitCheck}" = "Passed" ] && [ "${repoStorageCheck}" = "Passed" ] && [ "${repoCloneCheck}" = "Passed" ] && [ "${restrictedCheck}" = "Passed" ];then | |
allChecksPassed="True" | |
else | |
allChecksPassed="False" | |
if [ "${debugOn}" = "True" ];then | |
printf "\n${YELLOW}** DEBUG INFO **${NC}\n" | |
devInfo | |
read -n 1 -p "[ PRESS ANY KEY TO CONTINUE... ] " | |
fi | |
fi | |
if [ "${allChecksPassed}" = "True" ];then | |
printf "${LGREEN}All checks passed!${NC}\n" | |
if [ "${debugOn}" = "True" ];then | |
printf "\n${YELLOW}** DEBUG INFO **${NC}\n" | |
devInfo | |
read -n 1 -p "[ PRESS ANY KEY TO CONTINUE... ] " | |
fi | |
elif [ "${allChecksPassed}" = "False" ];then | |
printf "${LRED}Checks failed! Please make sure you have rights to this machine. Otherwise, please submit a bug report.${NC}\n" | |
if [ "${debugOn}" = "True" ];then | |
printf "\n${YELLOW}** DEBUG INFO **${NC}\n" | |
devInfo | |
read -n 1 -p "[ PRESS ANY KEY TO CONTINUE... ] " | |
fi | |
printf "${LRED}Exiting due to check failures${NC}\n" | |
fi | |
} | |
case "${1}" in | |
install| -i | i ) | |
${repoPath}/xbps-src pkg ${package} | |
if [ -f /usr/bin/sudo ];then | |
adminCmd="sudo" | |
printf "${YELLOW}Setting admin command to 'sudo'...${NC}\n" | |
fi | |
${adminCmd} xbps-install -R ${repoPath}/hostdir/binpkgs/nonfree ${package} | |
;; | |
check | -ck | ck) | |
checkSetup | |
;; | |
clean | -c | c ) | |
${repoPath}/xbps-src clean | |
;; | |
zap | -z | z ) | |
${repoPath}/xbps-src zap | |
;; | |
swoop | -sw | sw ) | |
checkSetup | |
${repoPath}/xbps-src pkg ${package} | |
${repoPath}/xbps-src clean | |
${repoPath}/xbps-src zap | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment