node-red-themes.sh 3.6 KB

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