Skip to content

Commit b5cab5a

Browse files
authored
Merge pull request #8 from YunoHost/shellcheck
Add shellcheck github workflow
2 parents fcc1c11 + 6cc3665 commit b5cab5a

File tree

8 files changed

+130
-90
lines changed

8 files changed

+130
-90
lines changed

.github/workflows/shellcheck.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Run Shellcheck on push and PR
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
shellcheck:
9+
name: Shellcheck
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v3
13+
- name: Run ShellCheck
14+
uses: ludeeus/action-shellcheck@master
15+
env:
16+
SHELLCHECK_OPTS: -x

config/config

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
#!/bin/bash
2+
# shellcheck disable=SC2155,SC2034
23

3-
readonly HOME_VINAIGRETTE=$(dirname $(dirname $(realpath ${BASH_SOURCE[0]})))
4+
readonly HOME_VINAIGRETTE=$(dirname "$(dirname "$(realpath "${BASH_SOURCE[0]}")")")
45

56
readonly GIT_REPOS="$HOME_VINAIGRETTE/gitrepos/"
67
readonly BUILD_DEB="$HOME_VINAIGRETTE/scripts/build_deb"
78

89
readonly REPO_URL="forge.yunohost.org"
910
readonly REPO_DIR="$HOME_VINAIGRETTE/../www/debian"
1011
readonly REPO_CONFIG=$HOME_VINAIGRETTE/config/distributions
11-
readonly REPO_ARCHS="$(grep "Architectures" $REPO_CONFIG | head -n 1 | awk -F: '{print $2}' | sed 's/source//g')"
12-
readonly REPO_DISTS="$(grep "^Codename" $REPO_CONFIG | awk '{print $2}')"
12+
readonly REPO_ARCHS="$(grep "Architectures" "$REPO_CONFIG" | head -n 1 | awk -F: '{print $2}' | sed 's/source//g')"
13+
readonly REPO_DISTS="$(grep "^Codename" "$REPO_CONFIG" | awk '{print $2}')"
1314

1415
readonly LAST_BUILDS_CACHE="$HOME_VINAIGRETTE/.last_builds/"
1516
readonly CHROOTS="$HOME_VINAIGRETTE/.chroots/"

rebuild-unstable

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
#!/bin/bash
2+
# shellcheck disable=SC2155
23

3-
readonly THISSCRIPT=$0
4-
readonly THISDIR=$(dirname $0)
4+
readonly THISDIR=$(dirname "$0")
55
readonly TIMETAG="$(date +%Y%m%d%H%M)"
66
readonly PACKAGES="moulinette SSOwat yunohost yunohost-admin yunohost-portal"
77
readonly FORCE="false"
88

9-
source $(dirname $THISSCRIPT)/config/config
10-
mkdir -p $LAST_BUILDS_CACHE
9+
source "$THISDIR/config/config"
10+
mkdir -p "$LAST_BUILDS_CACHE"
1111

1212
function main()
1313
{
@@ -19,7 +19,7 @@ function main()
1919
echo "-------------------------------------"
2020
echo "Looking for update in ${PACKAGE} for ${DISTRIB}... "
2121

22-
build_if_needed $PACKAGE $DISTRIB
22+
build_if_needed "$PACKAGE" "$DISTRIB"
2323
done
2424
done
2525
echo "-------------------------------------"
@@ -45,25 +45,25 @@ function build_if_needed()
4545
fi
4646
fi
4747

48-
cd $GIT_REPOS/$PACKAGE
48+
cd "$GIT_REPOS/$PACKAGE" || exit 1
4949

5050
git fetch origin >/dev/null 2>/dev/null
5151

52-
git checkout $BRANCH_NIGHTLY >/dev/null 2>/dev/null
53-
git pull origin $BRANCH_NIGHTLY >/dev/null 2>/dev/null
54-
git reset --hard origin/$BRANCH_NIGHTLY
52+
git checkout "$BRANCH_NIGHTLY" >/dev/null 2>/dev/null
53+
git pull origin "$BRANCH_NIGHTLY" >/dev/null 2>/dev/null
54+
git reset --hard "origin/$BRANCH_NIGHTLY"
5555

5656
# Check if build is needed
5757

58-
if [ -e $LAST_BUILD_FOR_THIS_PACKAGE ]
58+
if [ -e "$LAST_BUILD_FOR_THIS_PACKAGE" ]
5959
then
60-
TIMESTAMP_LASTBUILD=$(stat -c %Y $LAST_BUILD_FOR_THIS_PACKAGE)
60+
TIMESTAMP_LASTBUILD=$(stat -c %Y "$LAST_BUILD_FOR_THIS_PACKAGE")
6161
else
6262
TIMESTAMP_LASTBUILD=0
6363
fi
6464
TIMESTAMP_HEAD=$(git show -s --format=%ct HEAD)
6565

66-
if [ $TIMESTAMP_HEAD -lt $TIMESTAMP_LASTBUILD ]
66+
if [ "$TIMESTAMP_HEAD" -lt "$TIMESTAMP_LASTBUILD" ]
6767
then
6868
if ! "$FORCE";
6969
then
@@ -94,31 +94,31 @@ function build_if_needed()
9494
# Launch the build using build_deb script
9595
build
9696

97-
touch $LAST_BUILD_FOR_THIS_PACKAGE
97+
touch "$LAST_BUILD_FOR_THIS_PACKAGE"
9898

9999
# Restore changelog
100100
echo "> Restoring previous changelog"
101-
cd $GIT_REPOS/$PACKAGE
101+
cd "$GIT_REPOS/$PACKAGE" || exit 1
102102
cp debian/changelog.old debian/changelog
103103
rm debian/changelog.old
104104

105105
}
106106

107107
function build()
108108
{
109-
# Create temporary folder
110-
TMP_FOLDER=$(mktemp -d)
111-
112-
# Move files to a tmp folder
113-
echo "> Exporting in $TMP_FOLDER ... "
114-
git ls-files | xargs tar -czf archive.tar.gz
115-
cat archive.tar.gz | tar -xz -C $TMP_FOLDER
116-
rm archive.tar.gz
117-
118-
# Build Debian package
119-
echo "> Starting build ..."
120-
cd $TMP_FOLDER
121-
$BUILD_DEB $DISTRIB "unstable" .
109+
# Create temporary folder
110+
TMP_FOLDER=$(mktemp -d)
111+
112+
# Move files to a tmp folder
113+
echo "> Exporting in $TMP_FOLDER ... "
114+
git ls-files | xargs tar -czf archive.tar.gz
115+
tar xzf archive.tar.gz -C "$TMP_FOLDER"
116+
rm archive.tar.gz
117+
118+
# Build Debian package
119+
echo "> Starting build ..."
120+
cd "$TMP_FOLDER" || exit 1
121+
$BUILD_DEB "$DISTRIB" "unstable" .
122122
}
123123

124124
main

scripts/build_deb

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
#!/bin/bash
2+
# shellcheck disable=SC2155
23

34
readonly THISSCRIPT=$0
4-
readonly THISDIR=$(dirname $0)
5+
readonly THISDIR=$(dirname "$0")
56
readonly DISTRIB=$1
67
readonly BRANCH=$2
78
readonly FOLDER=$3
89
readonly ARCHS=$4
910

10-
source $THISDIR/../config/config
11-
source $THISDIR/common.sh
11+
# shellcheck source=config/config
12+
source "$THISDIR/../config/config"
13+
# shellcheck source=scripts/common.sh
14+
source "$THISDIR/common.sh"
1215

1316
# ##### #
1417
# Usage #
@@ -32,13 +35,13 @@ EOF
3235

3336
function main()
3437
{
35-
grep -q "^Codename: $DISTRIB$" $REPO_CONFIG || critical "Invalid distribution $DISTRIB"
36-
grep -q "^Components: .*$BRANCH.*$" $REPO_CONFIG || critical "Invalid branch $BRANCH"
38+
grep -q "^Codename: $DISTRIB$" "$REPO_CONFIG" || critical "Invalid distribution $DISTRIB"
39+
grep -q "^Components: .*$BRANCH.*$" "$REPO_CONFIG" || critical "Invalid branch $BRANCH"
3740
[[ -n "$FOLDER" ]] || critical "Need a folder in which to build"
3841

39-
readonly PKG_DIR=$(readlink -fn $FOLDER)
40-
readonly ROOT_DIR=$(readlink -fn ${PKG_DIR}/../)
41-
cd $PKG_DIR
42+
readonly PKG_DIR=$(readlink -fn "$FOLDER")
43+
readonly ROOT_DIR=$(readlink -fn "$PKG_DIR/../")
44+
cd "$PKG_DIR" || exit 1
4245

4346
readonly PACKAGE=$(dpkg-parsechangelog | awk '/^Source: / {print $2}')
4447
readonly VERSION=$(dpkg-parsechangelog | awk '/^Version: / {print $2}')
@@ -47,10 +50,10 @@ function main()
4750

4851
if [[ -n "$ARCHS" ]]
4952
then
50-
archs="$(echo $ARCHS | tr ',' ' ')"
53+
archs="$(echo "$ARCHS" | tr ',' ' ')"
5154
# Architecture-agnostic packages have 'architecture: all' in their control files
5255
# others have 'architecture: any'
53-
elif grep -q "Architecture: all" $PKG_DIR/debian/control
56+
elif grep -q "Architecture: all" "$PKG_DIR/debian/control"
5457
then
5558
archs="all"
5659
else
@@ -60,7 +63,7 @@ function main()
6063
for arch in $archs
6164
do
6265
sendxmpppy "🏗️ Starting build for ${PACKAGE}/${VERSION} for $DISTRIB/$BRANCH/$arch ..."
63-
if ! build $arch
66+
if ! build "$arch"
6467
then
6568
sendxmpppy "❌ Failed build for ${PACKAGE}/${VERSION} for $DISTRIB/$BRANCH/$arch ?!"
6669
critical "Failed to build ${PACKAGE}/${VERSION} for $DISTRIB/$BRANCH/$arch"
@@ -73,7 +76,7 @@ function main()
7376
changearch=$arch
7477
fi
7578

76-
if reprepro --waitforlock 6 -b $REPO_DIR -C $BRANCH include $DISTRIB ${ROOT_DIR}/${PACKAGE}_${VERSION}_$changearch.changes
79+
if reprepro --waitforlock 6 -b "$REPO_DIR" -C "$BRANCH" include "$DISTRIB" "${ROOT_DIR}/${PACKAGE}_${VERSION}_$changearch.changes"
7780
then
7881
sendxmpppy "✔️ Completed build for ${PACKAGE}/${VERSION} for $DISTRIB/$BRANCH/$arch."
7982
else
@@ -87,25 +90,29 @@ function build()
8790
{
8891
local arch=$1
8992

90-
local opts=""
93+
local opts=()
9194

92-
opts+=" -d $DISTRIB"
93-
opts+=" --no-run-lintian"
94-
opts+=" --no-run-piuparts"
95-
opts+=" --no-run-autopkgtest"
95+
opts+=(-d "$DISTRIB")
96+
opts+=(--no-run-lintian)
97+
opts+=(--no-run-piuparts)
98+
opts+=(--no-run-autopkgtest)
9699

97100
if [[ "$arch" != "all" ]]
98101
then
99-
opts+=" --host=$arch"
102+
opts+=( --host="$arch" )
100103
fi
101104

102105
if [[ -n "$DEBUG" ]]
103106
then
104-
opts+=" --anything-failed-commands='%s'"
107+
opts+=(--anything-failed-commands='%s')
105108
fi
106109

107-
sbuild $opts
110+
sbuild "${opts[@]}"
108111
}
109112

113+
if [[ "$1" =~ ^-h|--help$ ]]; then
114+
usage
115+
exit
116+
fi
110117

111-
[[ "$1" =~ ^-h|--help$ ]] && (usage; exit 0) || main
118+
main

scripts/common.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
#!/bin/bash
2+
# shellcheck disable=SC2155,SC2034
3+
14
readonly NORMAL=$(printf '\033[0m')
25
readonly BOLD=$(printf '\033[1m')
36
readonly faint=$(printf '\033[2m')
@@ -23,7 +26,7 @@ function info()
2326
}
2427

2528
function boxed()
26-
{
29+
{
2730
local msg=${1}
2831
echo "$msg" | boxes -d stone
2932
}

scripts/make-chroots

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
#!/bin/bash
22

3+
# shellcheck source=config/config
34
source ../config/config
45

56
DIST=$1
67
PREINSTALL="eatmydata,ccache,build-essential,perl-openssl-defaults,debhelper,cmake,wget,devscripts,git,aptitude,debhelper,dh-python,python3-all,python3-yaml,python3-jinja2,python3-setuptools,python3-psutil,lua5.1,liblua5.1-0-dev,libidn11-dev,libssl-dev,txt2man,quilt"
78

8-
mkdir -p $CHROOTS
9+
mkdir -p "$CHROOTS"
910

10-
sbuild-createchroot --include=$PREINSTALL $DIST $CHROOTS/$DIST-all
11+
sbuild-createchroot --include=$PREINSTALL "$DIST" "$CHROOTS/$DIST-all"

scripts/ynh-custom-builds

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
#!/bin/bash
2+
# shellcheck disable=SC2155,SC2034
23

34
readonly THISSCRIPT=$0
4-
readonly THISDIR=$(dirname $0)
5+
readonly THISDIR=$(dirname "$0")
56
readonly PACKAGE=$1
67
readonly BRANCH=$2
78
readonly DISTRIB="bookworm"
89
readonly DISTRIB_N="12"
910

10-
source $THISDIR/../config/config
11-
source $THISDIR/common.sh
11+
# shellcheck source=config/config
12+
source "$THISDIR/../config/config"
13+
# shellcheck source=scripts/common.sh
14+
source "$THISDIR/common.sh"
1215

1316
# ##### #
1417
# Usage #
@@ -31,8 +34,8 @@ EOF
3134
function main()
3235
{
3336
validate_arguments
34-
cd $GIT_REPOS/$PACKAGE
35-
tweak_$PACKAGE
37+
cd "$GIT_REPOS/$PACKAGE" || exit 1
38+
"tweak_$PACKAGE"
3639
build
3740
}
3841

@@ -79,9 +82,9 @@ function tweak_metronome()
7982
function build()
8083
{
8184
# SVERSION is VERSION without the -1 at the end ...
82-
local SVERSION=$(echo $VERSION | tr '-' ' ' | awk '{print $1}')
85+
local SVERSION=$(echo "$VERSION" | tr '-' ' ' | awk '{print $1}')
8386

84-
cd $GIT_REPOS/$PACKAGE
87+
cd "$GIT_REPOS/$PACKAGE" || exit 1
8588

8689
# Tweak the changelog temporarily
8790
info "Setting version in changelog to ${VERSION}"
@@ -101,21 +104,26 @@ function build()
101104
# Extract git archive a desired tag
102105
info "Exporting in $TMP_FOLDER ... "
103106
git ls-files | xargs tar -czf archive.tar.gz
104-
cat archive.tar.gz | tar -xz -C $TMP_FOLDER
107+
tar xzf archive.tar.gz -C "$TMP_FOLDER"
105108
# For some reason, these wants archive named
106109
# e.g. metronome_x.y.z+stuff.orig.tar.gz
107110
# in the parent folder...
108-
mv archive.tar.gz $TMP_FOLDER/../${PACKAGE}_${SVERSION}.orig.tar.gz
111+
mv archive.tar.gz "$TMP_FOLDER/../${PACKAGE}_${SVERSION}.orig.tar.gz"
109112

110113
# Build Debian package
111-
cd $TMP_FOLDER
112-
$BUILD_DEB $DISTRIB $BRANCH .
114+
cd "$TMP_FOLDER" || exit 1
115+
$BUILD_DEB $DISTRIB "$BRANCH" .
113116

114117
# Restore changelog
115118
info "Restoring previous changelog"
116-
cd $GIT_REPOS/$PACKAGE
119+
cd "$GIT_REPOS/$PACKAGE" || exit 1
117120
cp debian/changelog.old debian/changelog
118121
rm debian/changelog.old
119122
}
120123

121-
[[ "$1" =~ ^-h|--help$ ]] && (usage; exit 0) || main
124+
if [[ "$1" =~ ^-h|--help$ ]]; then
125+
usage
126+
exit
127+
fi
128+
129+
main

0 commit comments

Comments
 (0)