From b835e215bbe07fad9556b72a77663aa12f8a216a Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Tue, 28 Jan 2025 21:38:33 +0100 Subject: [PATCH] chore(cleanup): shfmt and .editorconfig applied to all scripts --- .editorconfig | 10 ++++ forgejo-binary.sh | 40 +++++++--------- forgejo-dependencies.sh | 8 ++-- forgejo-lib.sh | 32 ++++++------- forgejo-runner.sh | 46 +++++++++--------- forgejo-test-helper.sh | 100 ++++++++++++++++++++-------------------- forgejo.sh | 56 ++++++++++++---------- 7 files changed, 151 insertions(+), 141 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..669640d --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*] +indent_style = space +indent_size = 4 +tab_width = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/forgejo-binary.sh b/forgejo-binary.sh index 73efd11..2832bff 100755 --- a/forgejo-binary.sh +++ b/forgejo-binary.sh @@ -3,19 +3,13 @@ set -e -SELF_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SELF_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source $SELF_DIR/forgejo-lib.sh : ${DIR:=/tmp/forgejo-binary} if ${VERBOSE:-false}; then set -x; fi -function maybe_sudo() { - if test $(id -u) != 0 ; then - SUDO=sudo - fi -} - function ensure_user() { local user=$1 @@ -28,7 +22,7 @@ function ensure_user() { function dependencies() { maybe_sudo - if ! which sudo curl daemon jq git-lfs ip sqlite3 envsubst unzip > /dev/null ; then + if ! which sudo curl daemon jq git-lfs ip sqlite3 envsubst unzip >/dev/null; then $SUDO apt-get update -qq $SUDO apt-get -q install -y -qq sudo curl daemon jq git-lfs iproute2 sqlite3 gettext-base unzip fi @@ -44,14 +38,14 @@ function cleanup_logs() { function download() { local url="$1" - if ! test -f $DIR/forgejo ; then - curl -sS $url > $DIR/forgejo.tmp - if file $DIR/forgejo.tmp | grep --quiet 'Zip archive' ; then - unzip $DIR/forgejo.tmp -d $DIR - rm -f $DIR/forgejo.tmp - else - mv $DIR/forgejo.tmp $DIR/forgejo - fi + if ! test -f $DIR/forgejo; then + curl -sS $url >$DIR/forgejo.tmp + if file $DIR/forgejo.tmp | grep --quiet 'Zip archive'; then + unzip $DIR/forgejo.tmp -d $DIR + rm -f $DIR/forgejo.tmp + else + mv $DIR/forgejo.tmp $DIR/forgejo + fi chmod +x $DIR/forgejo fi echo $DIR/forgejo --version @@ -68,10 +62,10 @@ function create_user() { fi $DIR/forgejocli admin user create --admin --username "$user" --password "$password" --email "$user@example.com" - $DIR/forgejocli admin user generate-access-token -u "$user" --raw --scopes all > $DIR/forgejo-token + $DIR/forgejocli admin user generate-access-token -u "$user" --raw --scopes all >$DIR/forgejo-token local url="http://$(cat $DIR/forgejo-ip):3000" - echo "$url" > $DIR/forgejo-url - echo "http://${user}:${password}@$(cat $DIR/forgejo-ip):3000" > $DIR/forgejo-auth-url + echo "$url" >$DIR/forgejo-url + echo "http://${user}:${password}@$(cat $DIR/forgejo-ip):3000" >$DIR/forgejo-auth-url retry forgejo-curl.sh --user "$user" --password "$password" --token @$DIR/forgejo-token login "$url" echo forgejo-curl.sh api_json $url/api/forgejo/v1/version forgejo-curl.sh api_json $url/api/forgejo/v1/version @@ -84,14 +78,14 @@ function myip() { function start_forgejo() { local work_path=$DIR/forgejo-work-path daemon --chdir=$DIR --unsafe --env="TERM=$TERM" --env="HOME=$HOME" --env="PATH=$PATH" --pidfile=$DIR/forgejo-pid --errlog=$DIR/forgejo-err.log --output=$DIR/forgejo-out.log -- $DIR/forgejo --config $work_path/app.ini --work-path $work_path - if ! retry grep --no-messages --quiet 'Starting server on' $work_path/log/forgejo.log ; then + if ! retry grep --no-messages --quiet 'Starting server on' $work_path/log/forgejo.log; then cat $DIR/*.log cat $work_path/log/*.log return 1 fi - echo "$DIR/forgejo --config $work_path/app.ini --work-path $work_path" '"$@"' > $DIR/forgejocli + echo "$DIR/forgejo --config $work_path/app.ini --work-path $work_path" '"$@"' >$DIR/forgejocli chmod +x $DIR/forgejocli - myip > $DIR/forgejo-ip + myip >$DIR/forgejo-ip } function reset_forgejo() { @@ -99,7 +93,7 @@ function reset_forgejo() { local work_path=$DIR/forgejo-work-path rm -fr $work_path mkdir -p $work_path - IP=$(myip) WORK_PATH=$work_path envsubst < $SELF_DIR/$config-app.ini > $work_path/app.ini + IP=$(myip) WORK_PATH=$work_path envsubst <$SELF_DIR/$config-app.ini >$work_path/app.ini } function teardown() { diff --git a/forgejo-dependencies.sh b/forgejo-dependencies.sh index cc4b1af..7733cb1 100755 --- a/forgejo-dependencies.sh +++ b/forgejo-dependencies.sh @@ -9,15 +9,15 @@ source $(dirname $0)/lxc-helpers-lib.sh function install_docker() { if ! systemctl is-active --quiet docker; then - lxc_install_docker_inside + lxc_install_docker_inside fi } function install_other() { local packages="sudo git" - if ! which $packages ; then - apt-get update -qq - apt-get install -y -qq $packages + if ! which $packages; then + apt-get update -qq + apt-get install -y -qq $packages fi } diff --git a/forgejo-lib.sh b/forgejo-lib.sh index ff4c3dc..dde57c3 100644 --- a/forgejo-lib.sh +++ b/forgejo-lib.sh @@ -11,8 +11,8 @@ function retry() { local tmp=/tmp rm -f $tmp/retry.out success=false - for delay in $RETRY_DELAYS ; do - if "$@" >> $tmp/retry.out 2>&1 ; then + for delay in $RETRY_DELAYS; do + if "$@" >>$tmp/retry.out 2>&1; then success=true break fi @@ -20,7 +20,7 @@ function retry() { echo waiting $delay sleep $delay done - if test $success = false ; then + if test $success = false; then cat $tmp/retry.out return 1 fi @@ -30,12 +30,12 @@ function stop_daemon() { local daemon=$1 local dir=${2:-.} - if test -f $dir/$daemon-pid ; then + if test -f $dir/$daemon-pid; then local pid=$(cat $dir/$daemon-pid) kill -TERM $pid pidwait $pid || true - for delay in 1 1 2 2 5 5 ; do - if ! test -f $dir/$daemon-pid ; then + for delay in 1 1 2 2 5 5; do + if ! test -f $dir/$daemon-pid; then break fi sleep $delay @@ -45,13 +45,13 @@ function stop_daemon() { } function dependency_go() { - go_version="1.21.4.linux-amd64" # Set the desired Go version here + go_version="1.21.4.linux-amd64" # Set the desired Go version here - if ! which wget tar > /dev/null ; then - apt-get install -y -qq wget tar + if ! which wget tar >/dev/null; then + apt-get install -y -qq wget tar fi - if ! which go > /dev/null ; then + if ! which go >/dev/null; then wget --quiet "https://go.dev/dl/go$go_version.tar.gz" tar zxf "go$go_version.tar.gz" export PATH="$(pwd)/go/bin:$PATH" @@ -70,12 +70,12 @@ function build_runner() { local tmp=$(mktemp -d) ( - cd $tmp - checkout "$git" - dependency_go - cd forgejo-runner - git checkout "$version" - make build + cd $tmp + checkout "$git" + dependency_go + cd forgejo-runner + git checkout "$version" + make build ) mv $tmp/forgejo-runner/forgejo-runner $dir $dir/forgejo-runner --version diff --git a/forgejo-runner.sh b/forgejo-runner.sh index 5662556..a910e60 100755 --- a/forgejo-runner.sh +++ b/forgejo-runner.sh @@ -4,15 +4,15 @@ set -e PS4='${BASH_SOURCE[0]}:$LINENO: ${FUNCNAME[0]}: ' -SELF_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SELF_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source $SELF_DIR/forgejo-lib.sh : ${FORGEJO_RUNNER_CONFIG:=$SELF_DIR/runner-config.yaml} : ${DIR:=$(pwd)} function dependencies() { - if ! which make curl daemon > /dev/null ; then - apt-get install -y -qq make curl daemon + if ! which make curl daemon >/dev/null; then + apt-get install -y -qq make curl daemon fi } @@ -20,35 +20,35 @@ function download() { local runner_repository="$1" local version="$2" - if ! which $DIR/forgejo-runner > /dev/null; then - if ! curl -L --fail -sS $runner_repository/releases/download/$version/forgejo-runner-${version#v}-linux-amd64 > $DIR/forgejo-runner ; then - # backward compatibility for for the naming scheme prior to 3.0.0 - curl -L --fail -sS $runner_repository/releases/download/$version/forgejo-runner-linux-amd64 > $DIR/forgejo-runner - fi - chmod 755 $DIR/forgejo-runner + if ! which $DIR/forgejo-runner >/dev/null; then + if ! curl -L --fail -sS $runner_repository/releases/download/$version/forgejo-runner-${version#v}-linux-amd64 >$DIR/forgejo-runner; then + # backward compatibility for for the naming scheme prior to 3.0.0 + curl -L --fail -sS $runner_repository/releases/download/$version/forgejo-runner-linux-amd64 >$DIR/forgejo-runner + fi + chmod 755 $DIR/forgejo-runner fi } function register() { local forgejo="$1" - mktemp -d > $DIR/forgejo-runner-home + mktemp -d >$DIR/forgejo-runner-home $DIR/forgejocli actions generate-runner-token | tee $DIR/forgejo-runner-token ( - cd $DIR - timeout --signal=KILL 30 $DIR/forgejo-runner register --no-interactive --instance "$forgejo" --name runner --token $(cat $DIR/forgejo-runner-token) \ - --labels docker:docker://code.forgejo.org/oci/node:20-bookworm,docker-bookworm:docker://code.forgejo.org/oci/node:20-bookworm,lxc-bookworm:lxc://debian:bookworm,ubuntu-latest:docker://code.forgejo.org/oci/node:20-bookworm,self-hosted:lxc://debian:bookworm,lxc-bullseye:lxc://debian:bullseye + cd $DIR + timeout --signal=KILL 30 $DIR/forgejo-runner register --no-interactive --instance "$forgejo" --name runner --token $(cat $DIR/forgejo-runner-token) \ + --labels docker:docker://code.forgejo.org/oci/node:20-bookworm,docker-bookworm:docker://code.forgejo.org/oci/node:20-bookworm,lxc-bookworm:lxc://debian:bookworm,ubuntu-latest:docker://code.forgejo.org/oci/node:20-bookworm,self-hosted:lxc://debian:bookworm,lxc-bullseye:lxc://debian:bullseye ) } function run() { rm -f $DIR/forgejo-runner.log daemon --chdir=$DIR --unsafe \ - --env="TERM=$TERM" --env="HOME=$(cat $DIR/forgejo-runner-home)" --env="PATH=$PATH" --env="USER=$USER" --env="TERM=dumb" --env="USERNAME=$USERNAME" --env="LANG=$LANG" \ - --pidfile=$DIR/forgejo-runner-pid --errlog=$DIR/forgejo-runner.log --output=$DIR/forgejo-runner.log -- \ - $DIR/forgejo-runner --config $FORGEJO_RUNNER_CONFIG daemon + --env="TERM=$TERM" --env="HOME=$(cat $DIR/forgejo-runner-home)" --env="PATH=$PATH" --env="USER=$USER" --env="TERM=dumb" --env="USERNAME=$USERNAME" --env="LANG=$LANG" \ + --pidfile=$DIR/forgejo-runner-pid --errlog=$DIR/forgejo-runner.log --output=$DIR/forgejo-runner.log -- \ + $DIR/forgejo-runner --config $FORGEJO_RUNNER_CONFIG daemon sleep 1 cat $DIR/forgejo-runner.log -} +} function reload() { teardown @@ -63,11 +63,11 @@ function setup() { local forgejo="${3:-$(cat $DIR/forgejo-url)}" dependencies - if [[ "$version" =~ ^@ ]] ; then - local branch=${version##@} - build_runner $runner_repository $branch $DIR + if [[ "$version" =~ ^@ ]]; then + local branch=${version##@} + build_runner $runner_repository $branch $DIR else - download $runner_repository $version + download $runner_repository $version fi register $forgejo run @@ -75,8 +75,8 @@ function setup() { function teardown() { stop_daemon forgejo-runner $DIR - if test -f $DIR/forgejo-runner-home ; then - rm -fr $(cat $DIR/forgejo-runner-home) + if test -f $DIR/forgejo-runner-home; then + rm -fr $(cat $DIR/forgejo-runner-home) fi } diff --git a/forgejo-test-helper.sh b/forgejo-test-helper.sh index 91727af..befcec4 100755 --- a/forgejo-test-helper.sh +++ b/forgejo-test-helper.sh @@ -3,7 +3,7 @@ set -ex -SELF_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SELF_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source $SELF_DIR/forgejo-lib.sh : ${LOOPS:=80} @@ -18,8 +18,8 @@ function branch_tip() { local repo="$2" local branch="$3" - forgejo.sh retry forgejo-curl.sh api_json $url/api/v1/repos/$repo/branches/$branch >& /dev/null - forgejo-curl.sh api_json $url/api/v1/repos/$repo/branches/$branch | jq --raw-output .commit.id + forgejo.sh retry forgejo-curl.sh api_json $url/api/v1/repos/$repo/branches/$branch >&/dev/null + forgejo-curl.sh api_json $url/api/v1/repos/$repo/branches/$branch | jq --raw-output .commit.id } function get_status() { @@ -37,15 +37,15 @@ function check_status() { local expected_status="$4" local expected_description="$5" - get_status $url $repo $sha > /tmp/status.json - local status="$(jq --raw-output .state < /tmp/status.json)" - local description="$(jq --raw-output .statuses[0].description < /tmp/status.json)" + get_status $url $repo $sha >/tmp/status.json + local status="$(jq --raw-output .state SHA + cd $dir + git init + git checkout -b main + git config user.email root@example.com + git config user.name username + git add . + git commit -m 'initial commit' + git remote add origin $url/$owner/$project + git push --force -u origin main + sha=$(git rev-parse HEAD) + echo $sha >SHA ) } @@ -124,8 +124,8 @@ function push_workflow() { local token="$6" if test -z "$token"; then - echo missing token argument - return 1 + echo missing token argument + return 1 fi push "$directory" "$url" "$owner" "$project" "$self_action" "$token" @@ -144,8 +144,8 @@ function run_workflow() { } function clear_runner_cache() { - if test -f $DIR/forgejo-runner-home ; then - rm -fr $(cat $DIR/forgejo-runner-home)/.cache/act + if test -f $DIR/forgejo-runner-home; then + rm -fr $(cat $DIR/forgejo-runner-home)/.cache/act fi } @@ -161,24 +161,24 @@ function push_self_action() { git diff --exit-code git clone . $dir ( - cd $dir - rm -fr .forgejo .git - git init - git checkout -b main - git remote add origin "$url/$owner/$self_action" - git config user.email root@example.com - git config user.name username - git add . - git commit -m 'initial commit' - git push --force origin main - git tag --force $tag HEAD - git push --force origin $tag + cd $dir + rm -fr .forgejo .git + git init + git checkout -b main + git remote add origin "$url/$owner/$self_action" + git config user.email root@example.com + git config user.name username + git add . + git commit -m 'initial commit' + git push --force origin main + git tag --force $tag HEAD + git push --force origin $tag ) } function dependencies() { - if ! which jq curl > /dev/null ; then - apt-get -qq install -y jq curl + if ! which jq curl >/dev/null; then + apt-get -qq install -y jq curl fi } diff --git a/forgejo.sh b/forgejo.sh index b2bf535..aae1614 100755 --- a/forgejo.sh +++ b/forgejo.sh @@ -3,7 +3,7 @@ set -e -SELF_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SELF_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source $SELF_DIR/forgejo-lib.sh if ${VERBOSE:-false}; then set -x; fi @@ -15,27 +15,27 @@ function run() { local version="$2" if test "$version" != "1.19" && dpkg --compare-versions "$version" "lt" "1.19.0-3"; then - actions_unit="actions.actions" + actions_unit="actions.actions" else - actions_unit="repo.actions" + actions_unit="repo.actions" fi docker run --restart unless-stopped --name ${CONTAINER} \ - -e "RUN_MODE=dev" \ - -e "FORGEJO__security__INSTALL_LOCK=true" \ - -e "FORGEJO__log__LEVEL=trace" \ - -e "FORGEJO__actions__ENABLED=true" \ - -e "FORGEJO__queue__TYPE=immediate" \ - -e "FORGEJO__queue.push_update__TYPE=immediate" \ - -e "FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true" \ - -e "FORGEJO__repository__DEFAULT_PUSH_CREATE_PRIVATE=false" \ - -e "FORGEJO__repository__DEFAULT_REPO_UNITS=repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages,$actions_unit" \ - -d $image:$version + -e "RUN_MODE=dev" \ + -e "FORGEJO__security__INSTALL_LOCK=true" \ + -e "FORGEJO__log__LEVEL=trace" \ + -e "FORGEJO__actions__ENABLED=true" \ + -e "FORGEJO__queue__TYPE=immediate" \ + -e "FORGEJO__queue.push_update__TYPE=immediate" \ + -e "FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true" \ + -e "FORGEJO__repository__DEFAULT_PUSH_CREATE_PRIVATE=false" \ + -e "FORGEJO__repository__DEFAULT_REPO_UNITS=repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages,$actions_unit" \ + -d $image:$version local ip="$(docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" ${CONTAINER})" - echo 'docker exec --user 1000 '${CONTAINER}' forgejo "$@"' > $DIR/forgejocli + echo 'docker exec --user 1000 '${CONTAINER}' forgejo "$@"' >$DIR/forgejocli chmod +x $DIR/forgejocli - echo $ip > $DIR/forgejo-ip - echo "http://$(cat $DIR/forgejo-ip):3000" > $DIR/forgejo-url + echo $ip >$DIR/forgejo-ip + echo "http://$(cat $DIR/forgejo-ip):3000" >$DIR/forgejo-url docker exec ${CONTAINER} sed -i -e "s|localhost|$ip|" /data/gitea/conf/app.ini docker restart ${CONTAINER} } @@ -49,27 +49,33 @@ function setup() { run $image $version sleep 5 # for some reason trying to run "forgejo admin" while forgejo is booting will permanently break everything - if $DIR/forgejocli admin user list --admin | grep "$user" ; then - $DIR/forgejocli admin user change-password --username "$user" --password "$password" + if $DIR/forgejocli admin user list --admin | grep "$user"; then + $DIR/forgejocli admin user change-password --username "$user" --password "$password" else - retry $DIR/forgejocli admin user create --admin --username "$user" --password "$password" --email "$user@example.com" + retry $DIR/forgejocli admin user create --admin --username "$user" --password "$password" --email "$user@example.com" fi # # The 'sudo' scope was removed in Forgejo v1.20 and is ignored # - echo "http://${user}:${password}@$(cat $DIR/forgejo-ip):3000" > $DIR/forgejo-auth-url - $DIR/forgejocli admin user generate-access-token -u $user --raw --scopes 'all,sudo' > $DIR/forgejo-token + echo "http://${user}:${password}@$(cat $DIR/forgejo-ip):3000" >$DIR/forgejo-auth-url + $DIR/forgejocli admin user generate-access-token -u $user --raw --scopes 'all,sudo' >$DIR/forgejo-token retry forgejo-curl.sh --user "$user" --password "$password" --token @$DIR/forgejo-token login http://$(cat $DIR/forgejo-ip):3000 # # Redundant with forgejo-curl.sh, kept around for backward compatibility 09/2023 # - ( echo -n 'Authorization: token ' ; cat $DIR/forgejo-token ) > $DIR/forgejo-header - ( echo "#!/bin/sh" ; echo 'curl -sS -H "Content-Type: application/json" -H @'$DIR/forgejo-header' "$@"' ) > $DIR/forgejo-api && chmod +x $DIR/forgejo-api + ( + echo -n 'Authorization: token ' + cat $DIR/forgejo-token + ) >$DIR/forgejo-header + ( + echo "#!/bin/sh" + echo 'curl -sS -H "Content-Type: application/json" -H @'$DIR/forgejo-header' "$@"' + ) >$DIR/forgejo-api && chmod +x $DIR/forgejo-api } function teardown() { - docker stop ${CONTAINER} >& /dev/null || true - docker rm -f ${CONTAINER} >& /dev/null || true + docker stop ${CONTAINER} >&/dev/null || true + docker rm -f ${CONTAINER} >&/dev/null || true } "$@"