aJesus37
7/27/2017 - 4:19 AM

Tool de atualização Kurupira

Tool de atualização Kurupira

#!/bin/bash

#Teste para o atualizador/baixador das ferramentas da uname para o Kurupira OS

echo -e "\nSeja bem-vindo à tool de download/update para as ferramentas da Uname"
echo -e "Corporation."

help()
{
  echo -e "\nAjuda do programa:\n"
  echo -e "-h | --help        Este menu de ajuda"
  echo -e "-d | --download    Menu de download de ferramentas"
}

error()
{
  echo -e "\nOpa, parece que você digitou um comando inválido...\n";
}

download()
{
  count=0;
  repo=`curl -s https://github.com/unamecorporation | fgrep '<h3>' -A 5 \
  | egrep '<a href=".*">' \
  | sed 's@ itemprop=.*>@@g; s@<a href="/unamecorporation/@@g' \
  | tr -d ' "'  2>/dev/null`;

  echo -e "\nSegue a lista das ferramentas no repositório:\n";

  #echo "$repo" |
  while read -r line
  do
    ((++count));
    echo "$count - $line"
  done <<< $(echo "$repo")

  echo -e "\nEscolha um dos números listados acima para começar o download ou";
  echo -e "pressione 0 para sair:\n"

  read chosen;
  if [[ "$chosen" == "0" ]]; then
    {
      exit 0;
    }
  fi

  if [[ "$chosen" == "" ]]; then
    echo "Você precisa escolher um número."
  else
  while [[ ! $chosen =~ ^[0-"$count"]$ ]]; do
    echo -e "\n\nVocê precisa escolher um valor listado acima\n";
    read chosen
  done
fi

cnt=0;
for i in $(echo $repo)
do
  ((++cnt));
  if [[ "$cnt" == "$chosen" ]]; then
    chosen=`echo $i`;
  fi
done

if [[ -d /usr/share/UnameCorp/$chosen ]]; then
  echo -e "A ferramenta escolhida já encontra-se instalada.";
  echo -e "Deseja sobrescrevê-la com a versão do repositório? (y/N)";
  read swrite; swrite=`echo $swrite | tr A-Z a-z 2>/dev/null`
  if [[ "$swrite" == "" ]]; then
    swrite=n; exit 0;
  elif [[ "$swrite" == "y" ]]; then
  cd /usr/share/UnameCorp/$chosen; ls > /tmp/swrite-$chosen.txt; file="";
  while read  file
  do
    cab=`head -1 $file`;
    if [[ "$cab" =~ ^#\!/.*$ ]]; then       #Testa se um arquivo é uma tool (shebang)
      sudo rm -f /usr/bin/$file 2>/dev/null
    fi

    if [[ "$file" =~ ^.*\.bc$ ]]; then    #Testa se o arquivo é um bash_completion
      existebc=`sudo ls /etc/bash_completion.d/$file`
      if [[ ! -z "$existebc" ]]; then
        sudo rm -f /etc/bash_completion.d/$file 2>/dev/null
      fi
    fi
  done < /tmp/swrite-$chosen.txt
  rm /tmp/swrite-$chosen.txt
  else
    while [[ ! "$swrite" =~ ^[y|n]?$ ]]
    do
      read swrite; swrite=`echo $swrite | tr A-Z a-z 2>/dev/null`
    done
  fi
fi


echo "Selecione o diretório onde o diretório $chosen será criado:"
echo -e "Caminho atual:"
cd ; pwd;
read dir;



cd `echo $dir` 2>/dev/null;
if [[ "$?" != "0" ]]; then
  echo -e "\nOpa, parece que aconteceu algo de errado ..."
  echo -e "Você digitou um caminho válido e tem permissões?\nSaindo..."
fi
echo -e ""
git clone https://github.com/unamecorporation/$chosen

if [[ "$?" != 0 ]]; then
  exit;
fi

echo -e "";
cd $chosen;

ls > /tmp/filesondir.txt

echo -e "A seguir se dará o processo de instalação do programa selecionado."
echo -e "Para tal, acesso administrativo é necessário."

while read  file
do
  cab=`head -1 $file`;
  if [[ "$cab" =~ ^#\!/.*$ ]]; then       #Testa se um arquivo é uma tool (shebang)
    if [[ ! -d /usr/share/UnameCorp ]]; then
      sudo mkdir /usr/share/UnameCorp
    fi
    if [[ ! -d "/usr/share/UnameCorp/$chosen" ]]; then
    sudo mkdir /usr/share/UnameCorp/$chosen
    fi
    sudo cp $file /usr/share/UnameCorp/$chosen/
    sudo chmod +x /usr/share/UnameCorp/$chosen/$file
    sudo ln -s /usr/share/UnameCorp/$chosen/$file /usr/bin
  fi

  if [[ "$file" =~ ^.*\.bc$ ]]; then    #Testa se o arquivo é um bash_completion
    existebc=`sudo ls /etc/bash_completion.d/$file`
    if [[ -z "$existebc" ]]; then
      sudo cp $file /etc/bash_completion.d/
      sudo cp $file /usr/share/UnameCorp/$chosen
    fi
  fi
done < /tmp/filesondir.txt
rm /tmp/filesondir.txt

if [[ "$dir" =~ ^/.*$ ]]; then
  rm -r $dir;
elif [[ "$dir" == "" ]]; then
  rm -rf /home/$USER/$chosen
else
  rm -rf /home/$USER/$dir
fi

}

if [ "$*" == "-h" ] || [ "$*" == "--help" ] || [ "$*" == "" ]; then
    help;
  else
    case "$1" in
    -d | --download       ) download;            ;;
    -h | --help           ) help;                ;;
    *                     ) error; exit 1;       ;;
    esac
fi