node-red-themes.sh 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #!/usr/bin/env bash
  2. # bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/node-red-themes.sh)"
  3. set -o errexit
  4. show_menu(){
  5. YW=`echo "\033[33m"`
  6. RD=`echo "\033[01;31m"`
  7. BL=`echo "\033[36m"`
  8. CM='\xE2\x9C\x94\033'
  9. GN=`echo "\033[1;92m"`
  10. CL=`echo "\033[m"`
  11. echo -e "${RD} Backup your Node-Red flows before running this script!!${CL} \n "
  12. while true; do
  13. read -p "This will Install Node-Red Themes. Proceed(y/n)?" yn
  14. case $yn in
  15. [Yy]* ) break;;
  16. [Nn]* ) exit;;
  17. * ) echo "Please answer yes or no.";;
  18. esac
  19. done
  20. clear
  21. echo -e "${RD} Backup your Node-Red flows before installing any theme!!${CL} \n "
  22. printf "\n${BL}*********************************************${CL}\n"
  23. printf "${BL}**${YW} 1)${GN} Default Theme ${CL}\n"
  24. printf "${BL}**${YW} 2)${GN} Dark Theme ${CL}\n"
  25. printf "${BL}**${YW} 3)${GN} Dracula Theme ${CL}\n"
  26. printf "${BL}**${YW} 4)${GN} Midnight-Red Theme ${CL}\n"
  27. printf "${BL}**${YW} 5)${GN} Oled Theme ${CL}\n"
  28. printf "${BL}**${YW} 6)${GN} Solarized-Dark Theme ${CL}\n"
  29. printf "${BL}**${YW} 7)${GN} Solarized-Light Theme ${CL}\n"
  30. printf "${BL}*********************************************${CL}\n"
  31. printf "Please choose a theme from the menu and enter or ${RD}x to exit. ${CL}"
  32. read opt
  33. }
  34. option_picked(){
  35. msgcolor=`echo "\033[01;31m"`
  36. normal=`echo "\033[00;00m"`
  37. message=${@:-"${CL}Error: No message passed"}
  38. printf "${RD}${message}${CL}\n"
  39. }
  40. clear
  41. show_menu
  42. while [ "$opt" != " " ]
  43. do
  44. case $opt in
  45. 1) clear;
  46. option_picked "Installing Default Theme";
  47. THEME=
  48. JS=//
  49. break;
  50. ;;
  51. 2) clear;
  52. option_picked "Installing Dark Theme";
  53. THEME=dark
  54. break;
  55. ;;
  56. 3) clear;
  57. option_picked "Installing Dracula Theme";
  58. THEME=dracula
  59. break;
  60. ;;
  61. 4) clear;
  62. option_picked "Installing Midnight-Red Theme";
  63. THEME=midnight-red
  64. break;
  65. ;;
  66. 5) clear;
  67. option_picked "Installing Oled Theme";
  68. THEME=oled
  69. break;
  70. ;;
  71. 6) clear;
  72. option_picked "Installing Solarized-Dark Theme";
  73. THEME=solarized-dark
  74. break;
  75. ;;
  76. 7) clear;
  77. option_picked "Installing Solarized-Light Theme";
  78. THEME=solarized-light
  79. break;
  80. ;;
  81. x)exit;
  82. ;;
  83. \n)exit;
  84. ;;
  85. *)clear;
  86. option_picked "Please choose a theme from the menu";
  87. show_menu;
  88. ;;
  89. esac
  90. done
  91. echo -en "${GN} Installing ${THEME} Theme... "
  92. cd /root/.node-red
  93. if [ "${THEME}" = "" ]; then
  94. echo -e "${CM}${CL} \r"
  95. else
  96. npm install @node-red-contrib-themes/${THEME} &>/dev/null
  97. echo -e "${CM}${CL} \r"
  98. fi
  99. echo -en "${GN} Writing Settings... "
  100. cat <<EOF > /root/.node-red/settings.js
  101. module.exports = { uiPort: process.env.PORT || 1880,
  102. mqttReconnectTime: 15000,
  103. serialReconnectTime: 15000,
  104. debugMaxLength: 1000,
  105. functionGlobalContext: {
  106. },
  107. exportGlobalContextKeys: false,
  108. // Configure the logging output
  109. logging: {
  110. console: {
  111. level: "info",
  112. metrics: false,
  113. audit: false
  114. }
  115. },
  116. // Customising the editor
  117. editorTheme: {
  118. ${JS}theme: "${THEME}"
  119. },
  120. projects: {
  121. // To enable the Projects feature, set this value to true
  122. enabled: false
  123. }
  124. }
  125. EOF
  126. echo -e "${CM}${CL} \r"
  127. echo -en "${GN} Restarting Node-Red... "
  128. echo -e "${CM}${CL} \r"
  129. node-red-restart
  130. echo -en "${GN} Finished... ${CL} \n"
  131. exit