#!/bin/bash set -eu WORKDIR=/home/oscarzhou/source/github.com/portainer TRUE=0; FALSE=1; # PORTAINER_FLAGS= # PORTAINER_FLAGS=--enable-init true ERROR_COLOR='\033[0;31m'; HIGHLIGHT_COLOR='\033[0;32m'; NO_COLOR='\033[0m'; function is_ce_project() { read -p "Choose the working project EE/(CE):" REPO if [ -z "$REPO" ]; then REPO="EE"; fi if [[ "${REPO}" == "ee" || "${REPO}" == "EE" ]]; then return $FALSE; elif [[ "${REPO}" == "ce" || "${REPO}" == "CE" ]]; then return $TRUE; fi } function is_root() { if [ "$EUID" -ne 0 ]; then printf "${HIGHLIGHT_COLOR}Please run as root${NO_COLOR}\n" exit; fi } function check_branch() { printf "Your current checkout branch \n$(git branch)\n" read -p "Continue N/(Y)?" CORRECT_BRANCH if [ -z "$CORRECT_BRANCH" ]; then CORRECT_BRANCH="N"; fi if [[ "${CORRECT_BRANCH}" == "N" || "${CORRECT_BRANCH}" == "n" ]]; then printf "${ERROR_COLOR}Exit.\n"; return $FALSE; fi return $TRUE; } function export_volume() { local VOLUME=~/volumes/portainer-ee-data if is_ce_project; then VOLUME=~/volumes/portainer-ce-data cd ${WORKDIR}/portainer else cd ${WORKDIR}/portainer-ee fi export PORTAINER_DATA=${VOLUME} printf "${HIGHLIGHT_COLOR}export PORTAINER_DATA=${PORTAINER_DATA}${NO_COLOR}\n" } function build_portainer_frontend_without_prompt() { printf "${HIGHLIGHT_COLOR}Build Portainer Frontend${NO_COLOR}\n" yarn start:client } function build_portainer_backend_without_prompt() { printf "${HIGHLIGHT_COLOR}Build Portainer Backend${NO_COLOR}\n" if [ -z dist/portainer ]; then rm dist/portainer; fi yarn start:server } function build_portainer_frontend() { export_volume if ! check_branch; then exit; fi build_portainer_frontend_without_prompt } function build_portainer_backend() { export_volume if ! check_branch; then exit; fi build_portainer_backend_without_prompt } function build_portainer_all() { printf "${HIGHLIGHT_COLOR}Build Portainer all${NO_COLOR}\n" export_volume if ! check_branch; then exit; fi build_portainer_backend_without_prompt build_portainer_frontend_without_prompt } function run_before_commit() { printf "${HIGHLIGHT_COLOR}Run before commit${NO_COLOR}\n" if is_ce_project; then cd ${WORKDIR}/portainer else cd ${WORKDIR}/portainer-ee fi if ! check_branch; then exit; fi printf "${HIGHLIGHT_COLOR}yarn format${NO_COLOR}\n" yarn format printf "${HIGHLIGHT_COLOR}yarn lint${NO_COLOR}\n" yarn lint } function menu() { PS3='Please select the option: ' OPTIONS=( 'Build Portainer All' 'Build Portainer Frontend' 'Build Portainer Backend' 'Run Before Commit' 'Quit' ) select opt in "${OPTIONS[@]}" do case $opt in 'Build Portainer All') build_portainer_all ;; 'Build Portainer Frontend') build_portainer_frontend ;; 'Build Portainer Backend') build_portainer_backend ;; 'Run Before Commit') run_before_commit ;; 'Quit') break ;; esac done } # check if the function exists (bash specific) if [ "$#" -eq 0 ]; then menu else "$@" fi