From c53148e89bf00cccb8cd57dfe62e801753d8a0e3 Mon Sep 17 00:00:00 2001 From: silvernode Date: Thu, 15 Mar 2018 08:50:31 -0700 Subject: [PATCH] New Script: vpu.sh : easily install from void-packages Former-commit-id: 1b17969aac7eaff49cb58346681c86ac3fedb56e --- vpu.sh | 208 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100755 vpu.sh diff --git a/vpu.sh b/vpu.sh new file mode 100755 index 0000000..dedabba --- /dev/null +++ b/vpu.sh @@ -0,0 +1,208 @@ +#!/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 \ No newline at end of file