node-red-themes.sh 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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. if [ $opt = '' ]; then
  45. exit;
  46. else
  47. case $opt in
  48. 1) clear;
  49. option_picked "Installing Default Theme";
  50. THEME=
  51. JS=//
  52. break;
  53. ;;
  54. 2) clear;
  55. option_picked "Installing Dark Theme";
  56. THEME=dark
  57. break;
  58. ;;
  59. 3) clear;
  60. option_picked "Installing Dracula Theme";
  61. THEME=dracula
  62. break;
  63. ;;
  64. 4) clear;
  65. option_picked "Installing Midnight-Red Theme";
  66. THEME=midnight-red
  67. break;
  68. ;;
  69. 5) clear;
  70. option_picked "Installing Oled Theme";
  71. THEME=oled
  72. break;
  73. ;;
  74. 6) clear;
  75. option_picked "Installing Solarized-Dark Theme";
  76. THEME=solarized-dark
  77. break;
  78. ;;
  79. 7) clear;
  80. option_picked "Installing Solarized-Light Theme";
  81. THEME=solarized-light
  82. break;
  83. ;;
  84. x)exit;
  85. ;;
  86. \n)exit;
  87. ;;
  88. *)clear;
  89. option_picked "Please choose a theme from the menu";
  90. show_menu;
  91. ;;
  92. esac
  93. fi
  94. done
  95. echo -en "${GN} Installing ${THEME} Theme... "
  96. cd /root/.node-red
  97. if [ "${THEME}" = "" ]; then
  98. echo -e "${CM}${CL} \r"
  99. else
  100. npm install @node-red-contrib-themes/${THEME} &>/dev/null
  101. echo -e "${CM}${CL} \r"
  102. fi
  103. echo -en "${GN} Writing Settings... "
  104. cat <<EOF > /root/.node-red/settings.js
  105. module.exports = { uiPort: process.env.PORT || 1880,
  106. mqttReconnectTime: 15000,
  107. serialReconnectTime: 15000,
  108. debugMaxLength: 1000,
  109. functionGlobalContext: {
  110. },
  111. exportGlobalContextKeys: false,
  112. // Configure the logging output
  113. logging: {
  114. console: {
  115. level: "info",
  116. metrics: false,
  117. audit: false
  118. }
  119. },
  120. // Customising the editor
  121. editorTheme: {
  122. ${JS}theme: "${THEME}"
  123. },
  124. projects: {
  125. // To enable the Projects feature, set this value to true
  126. enabled: false
  127. }
  128. }
  129. EOF
  130. echo -e "${CM}${CL} \r"
  131. echo -en "${GN} Restarting Node-Red... "
  132. echo -e "${CM}${CL} \r"
  133. node-red-restart
  134. echo -en "${GN} Finished... ${CL} \n"
  135. exit