Merge pull request #77 from YunoHost/shellcheck

Fix shellcheck issues
This commit is contained in:
Salamandar 2024-03-14 11:31:40 +01:00 committed by GitHub
commit 39ce21010f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 58 additions and 49 deletions

16
.github/workflows/shellcheck.yml vendored Normal file
View file

@ -0,0 +1,16 @@
name: Run Shellcheck on push and PR
on:
push:
pull_request:
jobs:
shellcheck:
name: Shellcheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@master
with:
additional_files: 'deploy.sh ynh-dev'

View file

@ -1,9 +1,8 @@
#!/bin/bash #!/usr/bin/env bash
set -x set -x
git clone https://github.com/yunohost/ynh-dev git clone https://github.com/yunohost/ynh-dev
cd ./ynh-dev cd ./ynh-dev || exit 1
git clone https://github.com/YunoHost/moulinette git clone https://github.com/YunoHost/moulinette
git clone https://github.com/YunoHost/yunohost git clone https://github.com/YunoHost/yunohost
git clone https://github.com/YunoHost/yunohost-admin git clone https://github.com/YunoHost/yunohost-admin

86
ynh-dev
View file

@ -1,5 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC2155,SC2034,SC2164
function show_usage() { function show_usage() {
cat <<EOF cat <<EOF
@ -33,27 +35,27 @@ EOF
function main() function main()
{ {
local ACTION="$1" local ACTION="$1"
local ARGUMENTS="${@:2}" local ARGUMENTS=("${@:2}")
[ -z "$ACTION" ] && show_usage && exit 0 [ -z "$ACTION" ] && show_usage && exit 0
case "${ACTION}" in case "${ACTION}" in
help|-h|--help) show_usage $ARGUMENTS ;; help|-h|--help) show_usage "${ARGUMENTS[@]}" ;;
start|--start) start_ynhdev $ARGUMENTS ;; start|--start) start_ynhdev "${ARGUMENTS[@]}" ;;
attach|--attach) attach_ynhdev $ARGUMENTS ;; attach|--attach) attach_ynhdev "${ARGUMENTS[@]}" ;;
destroy|--destroy) destroy_ynhdev $ARGUMENTS ;; destroy|--destroy) destroy_ynhdev "${ARGUMENTS[@]}" ;;
rebuild|--rebuild) rebuild_ynhdev $ARGUMENTS ;; rebuild|--rebuild) rebuild_ynhdev "${ARGUMENTS[@]}" ;;
ip|--ip) show_vm_ip $ARGUMENTS ;; ip|--ip) show_vm_ip "${ARGUMENTS[@]}" ;;
use-git|--use-git) use_git $ARGUMENTS ;; use-git|--use-git) use_git "${ARGUMENTS[@]}" ;;
dev|--dev) dev $ARGUMENTS ;; dev|--dev) dev "${ARGUMENTS[@]}" ;;
test|--test) run_tests $ARGUMENTS ;; test|--test) run_tests "${ARGUMENTS[@]}" ;;
catalog|--catalog) catalog $ARGUMENTS ;; catalog|--catalog) catalog "${ARGUMENTS[@]}" ;;
rebuild-api-doc|--rebuild-api-doc) rebuild_api_doc $ARGUMENTS ;; rebuild-api-doc|--rebuild-api-doc) rebuild_api_doc "${ARGUMENTS[@]}" ;;
*) critical "Unknown action ${ACTION}." ;; *) critical "Unknown action ${ACTION}." ;;
esac esac
@ -118,9 +120,9 @@ function create_sym_link() {
local DEST=$1 local DEST=$1
local LINK=$2 local LINK=$2
# Remove current sources if not a symlink # Remove current sources if not a symlink
[ -L "$LINK" ] || rm -rf $LINK [ -L "$LINK" ] || rm -rf "$LINK"
# Symlink from Git repository # Symlink from Git repository
ln -sfn $DEST $LINK ln -sfn "$DEST" "$LINK"
} }
function prepare_cache_and_deps() { function prepare_cache_and_deps() {
@ -207,17 +209,17 @@ function start_ynhdev()
local YNH_BRANCH=${3:-unstable} local YNH_BRANCH=${3:-unstable}
local BOX=${2:-ynh-dev}-${DIST}-${YNH_BRANCH} local BOX=${2:-ynh-dev}-${DIST}-${YNH_BRANCH}
if ! incus info $BOX &>/dev/null if ! incus info "$BOX" &>/dev/null
then then
if ! incus image info $BOX-base &>/dev/null if ! incus image info "$BOX-base" &>/dev/null
then then
LXC_BASE="ynh-dev-$DIST-amd64-$YNH_BRANCH-base" LXC_BASE="ynh-dev-$DIST-amd64-$YNH_BRANCH-base"
incus launch yunohost:$LXC_BASE $BOX -c security.nesting=true -c security.privileged=true \ incus launch "yunohost:$LXC_BASE" "$BOX" -c security.nesting=true -c security.privileged=true \
|| critical "Failed to launch the container ?" || critical "Failed to launch the container ?"
else else
incus launch $BOX-base $BOX -c security.nesting=true -c security.privileged=true incus launch "$BOX-base" "$BOX" -c security.nesting=true -c security.privileged=true
fi fi
incus config device add $BOX ynhdev-shared-folder disk path=/ynh-dev source="$(readlink -f $(pwd))" incus config device add "$BOX" ynhdev-shared-folder disk path=/ynh-dev source="$(readlink -f "$(pwd)")"
info "Now attaching to the container" info "Now attaching to the container"
else else
info "Attaching to existing container" info "Attaching to existing container"
@ -232,8 +234,8 @@ function attach_ynhdev()
local DIST=${1:-bookworm} local DIST=${1:-bookworm}
local YNH_BRANCH=${3:-unstable} local YNH_BRANCH=${3:-unstable}
local BOX=${2:-ynh-dev}-${DIST}-${YNH_BRANCH} local BOX=${2:-ynh-dev}-${DIST}-${YNH_BRANCH}
incus start $BOX 2>/dev/null || true incus start "$BOX" 2>/dev/null || true
incus exec $BOX --cwd /ynh-dev -- /bin/bash incus exec "$BOX" --cwd /ynh-dev -- /bin/bash
} }
function destroy_ynhdev() function destroy_ynhdev()
@ -242,8 +244,8 @@ function destroy_ynhdev()
local DIST=${1:-bookworm} local DIST=${1:-bookworm}
local YNH_BRANCH=${3:-unstable} local YNH_BRANCH=${3:-unstable}
local BOX=${2:-ynh-dev}-${DIST}-${YNH_BRANCH} local BOX=${2:-ynh-dev}-${DIST}-${YNH_BRANCH}
incus stop $BOX incus stop "$BOX"
incus delete $BOX incus delete "$BOX"
} }
function rebuild_ynhdev() function rebuild_ynhdev()
@ -255,14 +257,14 @@ function rebuild_ynhdev()
local BOX=${2:-ynh-dev}-${DIST}-${YNH_BRANCH} local BOX=${2:-ynh-dev}-${DIST}-${YNH_BRANCH}
set -x set -x
incus info $BOX-rebuild >/dev/null && incus delete $BOX-rebuild --force incus info "$BOX-rebuild" >/dev/null && incus delete "$BOX-rebuild" --force
incus launch images:debian/$DIST/amd64 $BOX-rebuild -c security.nesting=true -c security.privileged=true incus launch "images:debian/$DIST/amd64" "$BOX-rebuild" -c security.nesting=true -c security.privileged=true
sleep 5 sleep 5
incus exec $BOX-rebuild -- apt install curl -y incus exec "$BOX-rebuild" -- apt install curl -y
INSTALL_SCRIPT="https://install.yunohost.org/$DIST" INSTALL_SCRIPT="https://install.yunohost.org/$DIST"
incus exec $BOX-rebuild -- /bin/bash -c "curl $INSTALL_SCRIPT | bash -s -- -a -d $YNH_BRANCH" incus exec "$BOX-rebuild" -- /bin/bash -c "curl $INSTALL_SCRIPT | bash -s -- -a -d $YNH_BRANCH"
incus stop $BOX-rebuild incus stop "$BOX-rebuild"
incus publish $BOX-rebuild --alias $BOX-base incus publish "$BOX-rebuild" --alias "$BOX-base"
set +x set +x
} }
@ -277,8 +279,7 @@ function use_git()
assert_inside_vm assert_inside_vm
local PACKAGES=("$@") local PACKAGES=("$@")
if [ "$PACKAGES" = "" ] if [ "${#PACKAGES[@]}" -eq 0 ]; then
then
PACKAGES=('moulinette' 'ssowat' 'yunohost' 'yunohost-admin') PACKAGES=('moulinette' 'ssowat' 'yunohost' 'yunohost-admin')
fi fi
@ -312,17 +313,14 @@ function use_git()
;; ;;
yunohost) yunohost)
for FILE in $(ls /ynh-dev/yunohost/bin/) for FILE in /ynh-dev/yunohost/bin/*; do
do
create_sym_link "/ynh-dev/yunohost/bin/$FILE" "/usr/bin/$FILE" create_sym_link "/ynh-dev/yunohost/bin/$FILE" "/usr/bin/$FILE"
done done
for FILE in $(ls /ynh-dev/yunohost/conf/metronome/modules/) for FILE in /ynh-dev/yunohost/conf/metronome/modules/*; do
do
create_sym_link "/ynh-dev/yunohost/conf/metronome/modules/$FILE" "/usr/lib/metronome/modules/$FILE" create_sym_link "/ynh-dev/yunohost/conf/metronome/modules/$FILE" "/usr/lib/metronome/modules/$FILE"
done done
for FILE in $(ls /ynh-dev/yunohost/share/) for FILE in /ynh-dev/yunohost/share/*; do
do
create_sym_link "/ynh-dev/yunohost/share/$FILE" "/usr/share/yunohost/$FILE" create_sym_link "/ynh-dev/yunohost/share/$FILE" "/usr/share/yunohost/$FILE"
done done
create_sym_link "/ynh-dev/yunohost/hooks" "/usr/share/yunohost/hooks" create_sym_link "/ynh-dev/yunohost/hooks" "/usr/share/yunohost/hooks"
@ -464,7 +462,7 @@ function dev()
journalctl --no-pager --no-hostname -u yunohost-api -u yunohost-portal-api -n 0 -f & journalctl --no-pager --no-hostname -u yunohost-api -u yunohost-portal-api -n 0 -f &
JOURNALCTL_PID=$! JOURNALCTL_PID=$!
trap "kill $JOURNALCTL_PID; exit" SIGINT trap 'kill $JOURNALCTL_PID; exit' SIGINT
while ! inotifywait -q -e modify /usr/lib/python3/dist-packages/{moulinette,yunohost}/{*.py,*/*.py} while ! inotifywait -q -e modify /usr/lib/python3/dist-packages/{moulinette,yunohost}/{*.py,*/*.py}
do do
@ -477,9 +475,8 @@ function dev()
function run_tests() function run_tests()
{ {
assert_inside_vm assert_inside_vm
local PACKAGES="$@" local PACKAGES=("$@")
for PACKAGE in $PACKAGES; for PACKAGE in "${PACKAGES[@]}"; do
do
TEST_FUNCTION=$(echo "$PACKAGE" | tr '/:' ' ' | awk '{print $3}') TEST_FUNCTION=$(echo "$PACKAGE" | tr '/:' ' ' | awk '{print $3}')
TEST_MODULE=$(echo "$PACKAGE" | tr '/:' ' ' | awk '{print $2}') TEST_MODULE=$(echo "$PACKAGE" | tr '/:' ' ' | awk '{print $2}')
PACKAGE=$(echo "$PACKAGE" | tr '/:' ' ' | awk '{print $1}') PACKAGE=$(echo "$PACKAGE" | tr '/:' ' ' | awk '{print $1}')
@ -492,8 +489,7 @@ function run_tests()
apt-get install python3-pip -y apt-get install python3-pip -y
pip3 install pytest pytest-sugar --break-system-packages pip3 install pytest pytest-sugar --break-system-packages
fi fi
for DEP in "pytest-mock requests-mock mock" for DEP in pytest-mock requests-mock mock; do
do
if [ -z "$(pip3 show $DEP)" ]; then if [ -z "$(pip3 show $DEP)" ]; then
info "Installing $DEP with pip3" info "Installing $DEP with pip3"
pip3 install $DEP --break-system-packages pip3 install $DEP --break-system-packages
@ -586,6 +582,4 @@ function rebuild_api_doc()
success "You should now open yunohost/doc/api.html using your favorite browser" success "You should now open yunohost/doc/api.html using your favorite browser"
} }
main "$@"
main $@