Как я могу запустить / адаптировать файл .sh к среде Windows - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть следующий файл конфигурации для проекта.

Он не работает в Windows как таковой.У меня установлен PowerShell, подсистема Linux, Docker запущен и т. Д.

Какие шаги я должен выполнить, чтобы проект работал на Windows?Я немного заблудился. Могу ли я запустить его без Cygwin?

#!/usr/bin/env bash
CYAN='\033[0;36m'
BLUE='\033[0;34m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color

yell() { echo "$0: $*" >&2; }
die() { yell "$*"; exit 111; }
try() { "$@" || die "cannot $*"; }

# Path to your hosts file
hostsFile="/etc/hosts"

# Default IP address for host
ip="127.0.0.1"

hostnames="api.foodmeup.local"

removeHost() {
    if [ -n "$(grep -p "[[:space:]]$1" /etc/hosts)" ]; then
        echo "$1 found in $hostsFile. Removing now...";
        try sudo sed -ie "/[[:space:]]$1/d" "$hostsFile";
    else
        yell "$1 was not found in $hostsFile";
    fi
}

addHost() {
    if [ -n "$(grep -p "[[:space:]]$1" /etc/hosts)" ]; then
        yell "$1, already exists: $(grep $1 $hostsFile)";
    else
        echo "Adding $1 to $hostsFile...";
        try printf "%s\t%s\n" "$ip" "$1" | sudo tee -a "$hostsFile" > /dev/null;

        if [ -n "$(grep $1 /etc/hosts)" ]; then
            echo "$1 was added succesfully:";
            echo "$(grep $1 /etc/hosts)";
        else
            die "Failed to add $1";
        fi
    fi
}

addLinuxSSL() {
    sudo mkdir -p /usr/local/share/ca-certificates/foodmeup.local
    sudo cp ./.docker/nginx/ssl/foodmeup-ca.cert.pem /usr/local/share/ca-certificates/foodmeup.local
    sudo update-ca-certificates
}

addMacSSL() {
    sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ./.docker/nginx/ssl/foodmeup-ca.cert.pem
}

addCygwinSSL() {
    echo "Unable to add SSL for CygWin platform";
    exit;
}

while true; do
    echo "Do you wish to init the FoodMeUp API project?";
    read -p "(Y/N) " yn
    case $yn in
        [Yy]* )
        echo "";

        echo -e "${BLUE}Setting local host names...${NC}";
        IFS=', '; array=($hostnames)
        for host in ${array[@]}; do addHost $host; done
        echo -e "${GREEN}Host names set!${NC}";
        echo "";
        echo "";

        echo -e "${BLUE}Prepping environment, please wait...${NC}";
        aws s3 cp s3://fmu-dev/ssl ./.docker/nginx/ssl/ --recursive --profile fmu

        unameOut="$(uname -s)"
        case "${unameOut}" in
            Linux*)     addLinuxSSL;;
            Darwin*)    addMacSSL;;
            CYGWIN*)    addCygwinSSL;;
            *)          exit;;
        esac

        rm ./.docker/nginx/ssl/foodmeup-ca.cert.pem

        aws s3 cp s3://fmu-dev/env-api-devel ./.env --profile fmu
        mkdir -p ./var/cache ./var/logs ./var/jwt ./var/cloud ./public/uploads
        aws s3 cp s3://fmu-dev/fmu-google-cloud.json ./var/cloud/FoodMeUp-dc2389a0a0cd.json --profile fmu
        JWT_PASSPHRASE=$(grep JWT_PASSPHRASE .env | cut -d '=' -f 2-)
        openssl genrsa -passout pass:${JWT_PASSPHRASE} -out ./var/jwt/private.pem -aes256 4096
        openssl rsa -passin pass:${JWT_PASSPHRASE} -pubout -in ./var/jwt/private.pem -out ./var/jwt/public.pem
        echo -e "${GREEN}Environment all set!${NC}";
        echo "";

        echo -e "${BLUE}Building Docker containers, please wait...${NC}";
        docker-compose up -d nginx;
        docker-compose up -d postgres;
        docker-compose up -d rabbitmq;
        echo -e "${GREEN}Docker containers built!${NC}";
        echo "";

        echo -e "${BLUE}Installing Composer dependencies, please wait...${NC}";
        docker exec -ti fmu_backend-php composer install --no-ansi --no-interaction --no-progress --no-suggest --optimize-autoloader;
        echo -e "${GREEN}Composer dependencies installed!!${NC}";
        echo "";

        echo -e "${BLUE}Generating assets, please wait...${NC}";
        docker exec -ti fmu_backend-php bin/console assets:install
        echo -e "${GREEN}Assets generated!${NC}";
        echo "";

        echo -e "${BLUE}Initializing application, please wait...${NC}";
        docker exec -ti fmu_backend-php /var/www/bin/phing init
        echo -e "${GREEN}Application initialized!${NC}";
        echo "";
        echo -e "${GREEN}[ALL DONE]${NC}";
        break;;
        [Nn]* ) exit;;
        * ) echo "Please answer yes or no.";;
    esac
done
echo -e "${GREEN}Project successfully installed${NC}";
...