Advertisement
dawciobiel

scripts for Derox

Jan 22nd, 2023 (edited)
1,103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.79 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # add2path.bash
  4. # Script is adding current folder or folder passed as text argument to user environment variable.
  5. #
  6. # Autor: Dawid
  7. # Date: 16.01.2023
  8. # Version: 0.94
  9. #
  10.  
  11. # Usage and installation:
  12. # 1. Create file app2path.bash
  13. #   cd ~/
  14. #   touch ./app2path.bash
  15. #
  16. # 2. Paste code inside this file.
  17. #
  18. # 3. Change file privilege to allow execute
  19. #   chmod 774 ./app2path.bash      # 7 - full access, 4 - only read
  20. #
  21. # 4. Execute the script with proper parameters
  22. #   ./app2path.bash --help
  23. #   ./app2path.bash -add-current
  24.  
  25. # Okresla wartosc zmiennej srodowiskowej PATH
  26. USER_PROFILE_FILE=/home/$USER/tmp
  27. # USER_PROFILE_FILE=/home/$USER/.bashrc
  28. # USER_PROFILE_FILE=/etc/enviroment
  29. # USER_PROFILE_FILE=/etc/profile
  30.  
  31.  
  32. ### Kod funkcji skryptu
  33.  
  34. checkIfStringContainsOtherString()
  35. {
  36.     if [[ $PATH == *"$(pwd)"* ]]; then
  37.             return 1
  38.         else
  39.             return 0
  40.     fi
  41. }
  42.  
  43. checkIfStringContainsOtherString_passedAsArgument()
  44. {
  45.         if [[ $PATH == *"$2"* ]]; then
  46.                     return 1
  47.                 else
  48.                     return 0
  49.         fi
  50. }
  51.  
  52. function addDirToVariable()
  53. {
  54.     CURRENT_DIR=$(pwd)
  55.     NEW_PATH_VALUE_AFTER_ADD=$PATH:$CURRENT_DIR
  56. }
  57.  
  58.  
  59. function addDirToVariable_passedArgument()
  60. {
  61.         CURRENT_DIR=$2
  62.         NEW_PATH_VALUE_AFTER_ADD=$PATH:$CURRENT_DIR
  63. }
  64.  
  65. function removeDirFromVariable()
  66. {
  67.     # Wytnij ze stringa wartosc zmiennej $(pwd)
  68.     NEW_PATH_VALUE_AFTER_REMOVE=$(echo $PATH | sed "s/$(pwd)/ /")
  69.     # rezultatem jest wartosc nowej zmiennej NEW_PATH_VALUE_AFTER_REMOVE
  70. }
  71.  
  72. function removeDirFromVariable_passedArgument()
  73. {
  74.     # Wytnij ze stringa wartosc zmiennej $2
  75.     NEW_PATH_VALUE_AFTER_REMOVE=$(echo $PATH | sed "s/$2/ /")
  76.     # rezultatem jest wartosc nowej zmiennej NEW_PATH_VALUE_AFTER_REMOVE   
  77. }
  78.  
  79. function expandRelativePathToAbsolute()
  80. {
  81.     # readlink - print resolved symbolic links or canonical file names
  82.     # realpath - return the canonicalised absolute pathname
  83.     EXPANDED_PATH=$(realpath $PASSED_ARG)
  84. }
  85.  
  86. function setNewPathVariableInSystem()
  87. {
  88.     # sed -i 's/old-text/new-text/g'
  89.     echo DEBUG: sed -i 's/$PATH/$NEW_PATH_VALUE_AFTER_ADD/g' $USER_PROFILE_FILE
  90.     sed -i 's/$PATH/$NEW_PATH_VALUE_AFTER_ADD/g' $USER_PROFILE_FILE
  91.     echo "New path variable has been set in the user system environment variable."
  92. }
  93.  
  94. function setNewPathVariableInSystem_afterRemove()
  95. {
  96.         # sed -i 's/old-text/new-text/g'
  97.         echo DEBUG: sed -i 's/$PATH/$NEW_PATH_VALUE_AFTER_REMOVE/g' $USER_PROFILE_FILE
  98.         sed -i 's/$PATH/$NEW_PATH_VALUE_AFTER_REMOVE/g' $USER_PROFILE_FILE
  99.         echo "New path variable has been set in the user system environment variable."
  100. }
  101.  
  102.  
  103. function printApplicationUsage()
  104. {
  105.     echo -e "
  106. \033[1mAplication path2add usage:\033[0m
  107.     -add-current \t\t Add current directory if it doesn`t already exist
  108.     -remove-current \t Remove current directory if it doesn`t already exist
  109.     -add-argument \t\t [DIR or PATH NAME] Remove current directory if it doesn`t already exist
  110.     -remove-argument \t [DIR or PATH NAME] Remove directory passed as launch argument if it doesn`t exist
  111.    
  112.     --help \t\t\t Print application usage
  113.  
  114.     \033[1mExamples of usage:\033[0m
  115.         add2path \t\t  -add-current
  116.         add2path \t\t  -add-argument /home/YOUR-ACCOUNT-NAME/testing
  117. "
  118. }
  119.  
  120.  
  121. ### Kod skryptu
  122.  
  123. case ${1} in
  124. -add-current) # Dodaj folder w ktorym uzytkownik sie obecnie znajduje do zmiennej srodowiskowej PATH
  125.     # Sprawdz czy katalog w ktorym uzytkownik sie obecnie znajduje jest juz dodany do zmiennej srodowiskowej $PATH
  126.     dirAlreadyAdded=$(checkIfStringContainsOtherString)
  127.     # Jeżeli folder nie jest jeszcze dodany to ...
  128.     if [[ $dirAlreadyAdded -eq 0 ]]; then
  129.             # ... dodaj taki folder do tymczasowej zmiennej
  130.             $(addDirToVariable)
  131.  
  132.             # Wartosc tymczasowej zmiennej dodaj do zmiennej PATH w systemie.
  133.             setNewPathVariableInSystem
  134.     fi
  135. ;;
  136.  
  137. -remove-current) # Usun folder w ktorym uzytkownik obecnie sie znajduje ze zmiennej srodowiskowej PATH
  138.     # Sprawdz czy katalog w ktorym uzytkownik obecnie sie znajduje jest juz dodany do zmiennj PATH
  139.     dirAlreadyAdded=$(checkIfStringContainsOtherString_passedAsArgument)
  140.     if [[ $dirAlreadyAdded -eq 1 ]]; then
  141.             $(removeDirFromVariable)
  142.             setNewPathVariableInSystem
  143.     fi
  144. ;;
  145.  
  146. -add-argument) # Dodaj folder przekazany jako drugi argument uruchomienia aplikacji do zmiennej srodowiskowej PATH
  147.     PASSED_ARG=${2}
  148.     if [[ -d $PASSED_ARG ]]; then
  149.         expandRelativePathToAbsolute #  # Zmienna PASSED_ARG jest ustawiona i przechowuje folder podany przez uzytkownika
  150.        
  151.         # Sprawdz czy katalog przekazany jako drugi argument urch. app. juz sie znajduje w zmiennj PATH
  152.             dirAlreadyAdded=$(checkIfStringContainsOtherString_passedAsArgument)
  153.             if [[ $dirAlreadyAdded -eq 0 ]]; then
  154.                     $(addDirToVariable_passedArgument)
  155.             setNewPathVariableInSystem
  156.         else
  157.             printApplicationUsage
  158.         fi
  159.     fi
  160. ;;
  161.  
  162. -remove-argument) # Usun folder przekazany jako drugi argument uruchomienia aplikacji ze zmiennej srodowiskowej PATH.
  163.     PASSED_ARG=${2}
  164.     if [ -d $PASSED_ARG ]; then
  165.         expandRelativePathToAbsolute # Zmienna PASSED_ARG jest ustawiona i przechowuje folder podany przez uzytkownika
  166.         dirAlreadyAdded=$(checkIfStringContainsOtherString_passedAsArgument)
  167.         if [[ $dirAlreadyAdded -eq 1 ]]; then
  168.             $(removeDirFromVariable_passedArgument)
  169.             setNewPathVariableInSystem
  170.         else
  171.             printApplicationUsage
  172.         fi
  173.     fi
  174. ;;
  175. --help) # Wyswietl mozliwe parametry startu alikacji.
  176.         printApplicationUsage
  177.         exit 0 # Zakonczenie aplikacji z kodem bledu "0", czyli brak bledow.
  178. ;; 
  179.  
  180. *) # Ten przypadek jest wykonywany w przypadku gdy zaden z powyzszych parametrow nie zostal przez uzytkownika podany. Czyli uzytkownik nie podal parametru badz podal je blednie.
  181.     printApplicationUsage
  182.     exit 1 # Zakonczenie aplikacji i ustawienie kodu jej zakonczenia roznego o "0". Gdzie kod "0" oznacza brak bledu.
  183. ;;
  184.  
  185. esac
  186.  
  187.  
Tags: BASH
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement