Advertisement
Guest User

Untitled

a guest
Feb 17th, 2020
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.72 KB | None | 0 0
  1. #! /bin/bash
  2.  
  3. # define bash directory
  4. BASH_DIR="${HOME}"/scripts/bash/
  5.  
  6. #decide on packages
  7. # get os
  8. if [[ $(uname -s) == "Darwin" ]]
  9. then
  10.     OS="macos"
  11. elif [[ $(uname -s) == "Linux" ]]
  12. then
  13.     if [[ -f /etc/arch-release ]]
  14.     then
  15.         OS="arch"
  16.     elif [[ -f /etc/debian_version ]]
  17.     then
  18.         OS="debian"
  19.     fi
  20. else
  21.     exit 1
  22. fi
  23.  
  24. case $OS in
  25.     macos)
  26.         GHI="ghi"
  27.         FD="fd"
  28.         ;;
  29.     arch)
  30.         GHI="ghi"
  31.         FD="fd"
  32.         ;;
  33.     debian)
  34.         GHI="ghi"
  35.         FD="fd-find" #command is fdfind
  36.         ;;
  37. esac
  38.  
  39.  
  40.  
  41. # Check if brew exists; if not, which package manager
  42. if command -v brew > /dev/null 2>&1
  43. then
  44.     PACMAN='brew install'
  45.     PACSEARCH='brew list'
  46. else
  47.     declare -A osInfo;
  48.     osInfo[/etc/redhat-release]='sudo yum install'
  49.     osInfo[/etc/arch-release]='sudo pacman -S'
  50.     osInfo[/etc/gentoo-release]='sudo emerge'
  51.     osInfo[/etc/SuSE-release]='sudo zypper in'
  52.     osInfo[/etc/debian_version]='sudo apt install -y'
  53.  
  54.     declare -A osSearch;
  55.     osInfo[/etc/redhat-release]='yum list installed'
  56.     osInfo[/etc/arch-release]='sudo pacman -Q'
  57.     osSearch[/etc/gentoo-release]="cd /var/db/pkg/ && ls -d */*| sed 's/\/$//'"
  58.     osSearch[/etc/SuSE-release]='rpm -qa'
  59.     osSearch[/etc/debian_version]='apt list --installed'
  60.  
  61.     for f in "${!osInfo[@]}"
  62.     do
  63.         if [[ -f $f ]];then
  64.             PACMAN="${osInfo[$f]}"
  65.         fi
  66.     done
  67.  
  68.     for s in "${!osSearch[@]}"
  69.     do
  70.         if [[ -f $s ]];then
  71.             PACSEARCH="${osSearch[$s]}"
  72.         fi
  73.     done
  74. fi
  75.  
  76. # Ensure jq is installed
  77. if ! command -v jq > /dev/null 2>&1
  78. then
  79.     echo -e "\u001b[1;38mInstalling \`jq\`...\u001b[0;38m" && \
  80.     $PACMAN jq && \
  81.     echo -e "\u001b[1;38;5;2m\`jq\` installed successfully\u001b[0;38m"
  82. fi
  83.  
  84.  
  85. # Parse json colours to bash
  86. jq -r 'to_entries|map("\(.key)=\(.value|tostring)")|.[]' ${BASH_DIR}/colours/textcolours.json | \
  87. sed -e 's/=\([^" >][^ >]*\)/="\1"/g' >> \
  88. ${BASH_DIR}/textcolours.txt && source ${BASH_DIR}/textcolours.txt
  89.  
  90.  
  91. # Clean up
  92. clean-exit() {
  93.     [[ -f ${BASH_DIR}/textcolours.txt ]] && \
  94.     rm ${BASH_DIR}/textcolours.txt
  95.     exit $?
  96. }
  97.  
  98.  
  99.  
  100. brew_install() {
  101.     PACINSTALL=false
  102.     for i in "${@}"; #previously @:2
  103.     do
  104.         if ! command -v "${i}" > /dev/null 2>&1
  105.         then
  106.             PACINSTALL=true
  107.             $PACMAN "${i}"
  108.         fi
  109.     done
  110.     if [ "${PACINSTALL}" = true ]
  111.     then
  112.         return 0
  113.     else
  114.         return 1
  115.     fi
  116. }
  117.  
  118. is-command-then-install() {
  119.     #install deps if command is not found
  120.     for i in "${@}"
  121.     do
  122.         brew_install "${i}"
  123.     done
  124. }
  125.  
  126. # get script dependencies
  127. is-command-then-install "${GHI}"
  128.  
  129.  
  130. # Clean up
  131. clean-exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement