From cac43a9ef2de01fe250f2bf636d3d5a2aa5d262b Mon Sep 17 00:00:00 2001 From: Zen Date: Wed, 16 Mar 2022 19:49:55 -0600 Subject: [PATCH] updating autonomy for posix compatibility --- ingredients/copper | 2 +- recipes/ao.sh | 214 ++++++++++++++++++++++----------------------- 2 files changed, 106 insertions(+), 110 deletions(-) diff --git a/ingredients/copper b/ingredients/copper index aa34fe5..00ecd3e 100644 --- a/ingredients/copper +++ b/ingredients/copper @@ -78,7 +78,7 @@ initialize_nginx() { install_if_needed nginx # Making sure this version of NGINX supports sites-enabled - if [ -z $(sudo cat /etc/nginx/nginx.conf | grep sites-enabled) ]; then + if [ -z "$(sudo cat /etc/nginx/nginx.conf | grep sites-enabled)" ]; then sudo mkdir -p /etc/nginx/sites-available sudo mkdir -p /etc/nginx/sites-enabled sudo cp resources/nginx/base.nginx.conf /etc/nginx/nginx.conf diff --git a/recipes/ao.sh b/recipes/ao.sh index 6d8a38b..15106db 100755 --- a/recipes/ao.sh +++ b/recipes/ao.sh @@ -9,39 +9,39 @@ source ingredients/iron source ingredients/gold clear -echo '' -echo ' d8888 .d88888b. 8888888 888 888 888 ' -echo ' d88888 d88P" "Y88b 888 888 888 888 ' -echo ' d88P888 888 888 888 888 888 888 ' -echo ' d88P 888 888 888 888 88888b. .d8888b 888888 8888b. 888 888 .d88b. 888d888 ' -echo ' d88P 888 888 888 888 888 "88b 88K 888 "88b 888 888 d8P Y8b 888P" ' -echo ' d88P 888 888 888 888 888 888 "Y8888b. 888 .d888888 888 888 88888888 888 ' -echo ' d8888888888 Y88b. .d88P 888 888 888 X88 Y88b. 888 888 888 888 Y8b. 888 ' -echo 'd88P 888 "Y88888P" 8888888 888 888 88888P" "Y888 "Y888888 888 888 "Y8888 888 ' -echo '' +say '' +say ' d8888 .d88888b. 8888888 888 888 888 ' +say ' d88888 d88P" "Y88b 888 888 888 888 ' +say ' d88P888 888 888 888 888 888 888 ' +say ' d88P 888 888 888 888 88888b. .d8888b 888888 8888b. 888 888 .d88b. 888d888 ' +say ' d88P 888 888 888 888 888 "88b 88K 888 "88b 888 888 d8P Y8b 888P" ' +say ' d88P 888 888 888 888 888 888 "Y8888b. 888 .d888888 888 888 88888888 888 ' +say ' d8888888888 Y88b. .d88P 888 888 888 X88 Y88b. 888 888 888 888 Y8b. 888 ' +say 'd88P 888 "Y88888P" 8888888 888 888 88888P" "Y888 "Y888888 888 888 "Y8888 888 ' +say '' # ------------------- Step 1 - Baseline Setup ------------------- -echo -e "${BOLD}Hiya!${RESET} We're going to get you set up with your very own Autonomous Engine." -echo "" -echo -e "This script is designed to ask you just enough questions to keep you involved in the process," -echo -e "while making it as easy as possible for you to get it going." -echo "" -echo -e "${BLUE}press enter to continue${RESET}" +say "${BOLD}Hiya!${RESET} We're going to get you set up with your very own Autonomous Engine." +say "" +say "This script is designed to ask you just enough questions to keep you involved in the process," +say "while making it as easy as possible for you to get it going." +say "" +say "${BLUE}press enter to continue${RESET}" read if [ "$EUID" -eq 0 ]; then - echo -e "${RED}Woah there!${RESET} Seems you're running this script as a superuser." - echo "" - echo "That might cause some issues with permissions and whatnot. Run this script as your default user (without sudo) and I'll ask you when I need superuser permissions" - echo "" + say "${RED}Woah there!${RESET} Seems you're running this script as a superuser." + say "" + say "That might cause some issues with permissions and whatnot. Run this script as your default user (without sudo) and I'll ask you when I need superuser permissions" + say "" exit 1 fi # TODO: dependencies should not be frontloaded, they should be installed as needed -echo -e "Making sure we've got the basics..." -echo -e "(you'll probably need to input ${BLUE}your 'sudo' password${RESET} here)" +say "Making sure we've got the basics..." +say "(you'll probably need to input ${BLUE}your 'sudo' password${RESET} here)" case $DISTRO in "debian") # Note -- I'm not sure if these are all needed but I'm not in the mood to check @@ -65,109 +65,107 @@ case $DISTRO in python python3 python3-mako pkg-config fakeroot devscripts ;; esac -echo "" +say "" # ------------------- Step 2 - AO Environment Setup ------------------- if [ ! -z $AO ]; then - echo "You're currently using ao-$AO" - echo -en "Would you like to re-install? ${BLUE}(y/n): ${RESET}" - read reinstall_ao - echo "" + say "You're currently using ao-$AO" + ask_for reinstall_ao "Would you like to re-install? ${BLUE}(y/n): ${RESET}" + say "" case $reinstall_ao in "Y" | "y") forget AO ;; *) - echo "Okay, we'll keep using this version of AO" + say "Okay, we'll keep using this version of AO" ;; esac fi if [ -z $AO ]; then AO='' - echo -e "${BOLD}Hey!${RESET} I was wondering which ${BLUE}version of AO${RESET} you wanted to install. \n" - echo -e "${BOLD}1.${RESET} ao-3 (Vue)" - echo -e "${BOLD}2.${RESET} ao-react (React)" + say "${BOLD}Hey!${RESET} I was wondering which ${BLUE}version of AO${RESET} you wanted to install. \n" + say "${BOLD}1.${RESET} ao-3 (Vue)" + say "${BOLD}2.${RESET} ao-react (React)" fi while [[ -z $AO ]]; do - echo -en "${BLUE}(number):${RESET} " - read -n1 ao_select - echo "" - echo "" + ask_for ao-select "${BLUE}(number):${RESET} " + say "" + say "" case $ao_select in "1") - echo -e "Minimalism, I like it! Proceeding with ${BLUE}ao-3${RESET} installation" + say "Minimalism, I like it! Proceeding with ${BLUE}ao-3${RESET} installation" AO='3' ;; "2") - echo -e "It's got community! Proceeding with ${BLUE}ao-react${RESET} installation" + say "It's got community! Proceeding with ${BLUE}ao-react${RESET} installation" AO='react' ;; *) - echo "that aint no AO i ever heard of, try again" + say "that aint no AO i ever heard of, try again" ;; esac done; remember "AO=${AO}" -echo "" +say "" if [ $AO = "3" ] || [ $AO = 'react' ]; then if [ -z $NVM_DIR ]; then install_nvm source ingredients/iron else - echo -e "${BLUE}Node${RESET} already installed!" + say "${BLUE}Node${RESET} already installed!" fi - echo -e "Setting Node to ${BLUE}v16.13.0${RESET} for compatibility" + say "Setting Node to ${BLUE}v16.13.0${RESET} for compatibility" set_node_to v16.13.0 - echo "" - echo -e "${GREEN}Done!${RESET}" - echo "" + say "" + say "${GREEN}Done!${RESET}" + say "" fi if [ $AO = "3" ] || [ $AO = 'react' ]; then - echo -e "${BOLD}Installing Bitcoin Ecosystem${RESET}" - echo "" + say "${BOLD}Installing Bitcoin Ecosystem${RESET}" + say "" if ! check_for bitcoind; then - echo -e "Building bitcoind from source... might take a while!" + say "Building bitcoind from source... might take a while!" install_bitcoin fi if ! check_for lightningd; then - echo -e "Building lightningd from source... here we go again" + say "Building lightningd from source... here we go again" install_lightning fi configure_bitcoin configure_lightning fi -echo '' +say '' if [ $AO = "3" ] || [ $AO = 'react' ]; then - echo -e "${BOLD}Installing and configuring Tor${RESET}\n" + say "${BOLD}Installing and configuring Tor${RESET}\n" install_if_needed tor configure_tor - echo "" + say "" fi # ------------------- Step 3 - AO Installation ------------------- -echo -e "${BOLD}Configuring AO Core${RESET}\n" +say "${BOLD}Configuring AO Core${RESET}\n" mkdir -p $HOME/.ao if [ -f $HOME/.ao/key ]; then - echo 'We already have a private key for this AO, sweet!' + say 'We already have a private key for this AO, sweet!' else node scripts/createPrivateKey.js >> $HOME/.ao/key - echo -e "Just made a fresh private key and put it in ${GREEN}~/.ao${RESET}" + say "Just made a fresh private key and put it in ${GREEN}~/.ao${RESET}" fi -echo "" +say "" # TODO this is really janky/fragile, it would be better to store this in ~/.ao CONFIG_FILE=$HOME/ao-$AO/configuration.js @@ -190,11 +188,11 @@ read case $AO in "3") if [ ! -d ~/ao-3 ]; then - echo -e "Installing ${BLUE}ao-3${RESET}" + say "Installing ${BLUE}ao-3${RESET}" git clone 'https://github.com/AutonomousOrganization/ao-3.git' ~/ao-3 fi if [ -f "$CONFIG_FILE" ]; then - echo configuration.js already exists + say configuration.js already exists else cp resources/ao-config $CONFIG_FILE sed -i "s#SQLITE_DATABASE#${HOME}/.ao/database.sqlite3#" $CONFIG_FILE @@ -204,7 +202,7 @@ case $AO in sed -i "s#MEMES_DIR#${HOME}/.ao/memes#" $CONFIG_FILE fi - echo "" + say "" pushd ~/ao-3 npm install npm run build @@ -214,12 +212,12 @@ case $AO in NODE_PARAMS='' ;; "react") - echo -e "Installing ${BLUE}ao-react${RESET}" + say "Installing ${BLUE}ao-react${RESET}" if [ ! -d ~/ao-react ]; then git clone 'https://github.com/coalition-of-invisible-colleges/ao-react.git' ~/ao-react fi if [ -f "$CONFIG_FILE" ]; then - echo configuration.js already exists + say configuration.js already exists else cp resources/ao-config $CONFIG_FILE sed -i "s#SQLITE_DATABASE#${HOME}/.ao/database.sqlite3#" $CONFIG_FILE @@ -229,7 +227,7 @@ case $AO in sed -i "s#MEMES_DIR#${HOME}/.ao/memes#" $CONFIG_FILE fi - echo "" + say "" pushd ~/ao-react npm install @@ -242,35 +240,33 @@ esac # ------------------- Step 4 - NGINX Setup ------------------- - echo "" - echo -en "You still there? I might need your input here! \n\n${BLUE}(enter)${RESET}" - read + say "" + ask_for nothing "You still there? I might need your input here! \n\n${BLUE}(enter)${RESET}" initialize_nginx make_site ao "FILE_ROOT=${HOME}/ao-${AO}/dist" - echo "" + say "" configure_domain_for_site ao enable_ssl - echo -e "Excellent! We've configured this computer to serve your AO from ${BLUE}${ACCESS_POINT}${RESET}" + say "Excellent! We've configured this computer to serve your AO from ${BLUE}${ACCESS_POINT}${RESET}" # ------------------- Step 7 - Systemd Setup ------------------- READY='' -echo -e "\n${BOLD}Alright, almost there!${RESET} Now we just need to set up the system daemons for Tor, Bitcoin, Lightning, and the AO so that everything opens on startup." -while [[ -z $READY ]]; do - echo -en "${BLUE}You ready? (y/n):${RESET} " - read -n1 ao_select - echo "" - echo "" +say "\n${BOLD}Alright, almost there!${RESET} Now we just need to set up the system daemons for Tor, Bitcoin, Lightning, and the AO so that everything opens on startup." +while [[ -z "$READY" ]]; do + ask_for ready "${BLUE}You ready? (y/n):${RESET} " + say "" + say "" - case $ao_select in + case $ready in "y" | "Y") - echo -e "Nice, let's do it.\n" + say "Nice, let's do it.\n" READY=1 ;; *) - echo -e "wrong answer, fren\n" + say "wrong answer, fren\n" ;; esac done @@ -285,71 +281,71 @@ sudo chmod 770 $HOME/.tor activate_service tor -echo "" +say "" build_service_from_template bitcoin "BITCOIND=`which bitcoind`" activate_service bitcoin -echo "" +say "" build_service_from_template lightning "LIGHTNINGD=`which lightningd`" activate_service lightning -echo "" +say "" build_service_from_template ao "NODE=`which node`" "AO=$AO" "NODE_PARAMS=$NODE_PARAMS" activate_service ao -echo "this should be nginx" +say "this should be nginx" activate_service nginx # ------------------- Step 8 - Port Testing ------------------- -echo "" -echo -e "${BOLD}One more thing!${RESET} We need to make sure that your ports are open." -echo "" +say "" +say "${BOLD}One more thing!${RESET} We need to make sure that your ports are open." +say "" check_ports # ------------------- Step 9 - Health Check ------------------- - echo '*********************************************************' - echo -e "* ${BOLD}Version Information${RESET} *" - echo '*********************************************************' + say '*********************************************************' + say "* ${BOLD}Version Information${RESET} *" + say '*********************************************************' - echo ' ' - echo 'make Version' - echo '*********************************************************' + say ' ' + say 'make Version' + say '*********************************************************' make --version - echo ' ' - echo 'node Version' - echo '*********************************************************' + say ' ' + say 'node Version' + say '*********************************************************' node --version - echo ' ' - echo 'sqlite3 Version' - echo '*********************************************************' + say ' ' + say 'sqlite3 Version' + say '*********************************************************' sqlite3 --version - echo ' ' - echo 'tor Version' - echo '*********************************************************' + say ' ' + say 'tor Version' + say '*********************************************************' tor --version - echo ' ' - echo 'bitcoind Version' - echo '*********************************************************' + say ' ' + say 'bitcoind Version' + say '*********************************************************' bitcoind --version - echo ' ' - echo 'lightningd Version' - echo '*********************************************************' + say ' ' + say 'lightningd Version' + say '*********************************************************' lightningd --version - echo ' ' - echo 'clboss Version' - echo '*********************************************************' + say ' ' + say 'clboss Version' + say '*********************************************************' clboss --version -echo "" -echo -e "$BOLD\nOkay, well that's everything!${RESET}\n\nAs long as everything worked properly, \ +say "" +say "$BOLD\nOkay, well that's everything!${RESET}\n\nAs long as everything worked properly, \ you should be ready to continue your journey\ntowards autonomy by opening ${BLUE}$ACCESS_POINT${RESET} in your browser." -echo -e "The default login is ${BLUE}dctrl/dctrl${RESET}, have fun!" +say "The default login is ${BLUE}dctrl/dctrl${RESET}, have fun!" exit 0