#!/bin/bash set -eu WORKDIR=/home/oscarzhou/source/github.com/portainer GLOBAL_VOLUME=/home/oscarzhou/volumes 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 choose_repo() { read -p "Choose the working project EE/(CE)/(k8s)/(agent):" REPO if [ -z "$REPO" ]; then REPO="EE"; fi if [[ "${REPO}" == "ee" || "${REPO}" == "EE" ]]; then cd ${WORKDIR}/portainer-ee elif [[ "${REPO}" == "ce" || "${REPO}" == "CE" ]]; then cd ${WORKDIR}/portainer elif [[ "${REPO}" == "k8s" || "${REPO}" == "ks" ]]; then cd ${WORKDIR}/k8s elif [[ "${REPO}" == "ag" || "${REPO}" == "agent" ]]; then cd ${WORKDIR}/agent 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 choose_export_volume() { read -p "Choose the volume EE/CE/Temp-data(TD):" DEST if [ -z "$DEST" ]; then DEST="EE"; fi if [[ "${DEST}" == "ee" || "${DEST}" == "EE" ]]; then VOLUME=~/volumes/portainer-ee-data elif [[ "${DEST}" == "ce" || "${DEST}" == "CE" ]]; then VOLUME=~/volumes/portainer-ce-data elif [[ "${DEST}" == "td" || "${DEST}" == "TD" ]]; then VOLUME=~/volumes/temp-data fi export PORTAINER_DATA=${VOLUME} printf "${HIGHLIGHT_COLOR}export PORTAINER_DATA=${PORTAINER_DATA}${NO_COLOR}\n" } function cleanup_temporary_volume() { printf "${HIGHLIGHT_COLOR}Clean temporary data${NO_COLOR}\n" local VOLUME=~/volumes/temp-data if [ -d ${VOLUME} ]; then printf "The current volume is ${VOLUME}. " read -p "Do you want to clean up the existing data N/(Y)?" CLEAN_DATA if [[ "${CLEAN_DATA}" == "y" || "${CLEAN_DATA}" == "Y" ]]; then rm -rvf ${VOLUME}/* fi else mkdir ${VOLUME} fi } function build_portainer_frontend_without_prompt() { printf "${HIGHLIGHT_COLOR}Build Portainer Frontend${NO_COLOR}\n" yarn 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() { choose_repo if ! check_branch; then exit; fi build_portainer_frontend_without_prompt } function build_portainer_backend() { choose_repo choose_export_volume if ! check_branch; then exit; fi build_portainer_backend_without_prompt } function build_portainer_agent() { choose_repo if ! check_branch; then exit; fi ./dev.sh compile } function build_portainer_all() { printf "${HIGHLIGHT_COLOR}Build Portainer all${NO_COLOR}\n" choose_repo choose_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" choose_repo if ! check_branch; then exit; fi yarn printf "${HIGHLIGHT_COLOR}yarn format${NO_COLOR}\n" yarn format printf "${HIGHLIGHT_COLOR}yarn lint${NO_COLOR}\n" yarn lint } function run_before_commit_k8s() { printf "${HIGHLIGHT_COLOR}Run before commit${NO_COLOR}\n" choose_repo if ! check_branch; then exit; fi printf "${HIGHLIGHT_COLOR}chart-testing ct lint${NO_COLOR}\n" docker run --rm -it -w /repo -v `pwd`:/repo quay.io/helmpack/chart-testing ct lint --all --config=.ci/ct-config.yaml } function menu() { PS3='Please select the option: ' OPTIONS=( 'Build Portainer EE/CE All' 'Build Portainer EE/CE Frontend' 'Build Portainer EE/CE Backend' 'Run Before Commit [Portainer EE/CE]' 'Run Before Commit [k8s]' 'Build Portainer Agent' 'Cleanup Temporary Volume' 'Quit' ) select opt in "${OPTIONS[@]}" do case $opt in 'Build Portainer EE/CE All') build_portainer_all ;; 'Build Portainer EE/CE Frontend') build_portainer_frontend ;; 'Build Portainer EE/CE Backend') build_portainer_backend ;; 'Run Before Commit [Portainer EE/CE]') run_before_commit ;; 'Run Before Commit [k8s]') run_before_commit_k8s ;; 'Build Portainer Agent') build_portainer_agent ;; 'Cleanup Temporary Volume') cleanup_temporary_volume ;; 'Quit') break ;; esac done } # check if the function exists (bash specific) if [ "$#" -eq 0 ]; then menu else "$@" fi