mirror of
https://github.com/go-gitea/gitea
synced 2025-07-22 18:28:37 +00:00
snap-packaging for gitea (#2568)
* Modify tbraeutigam/gogs-snap for gitea * Fix building on 16.04 (manually build go-bindata). -> add _source.tar.bz2 to .gitignore (used by snapcraft cleanbuild) * Streamline Snap packaging: - Take advantage of install-hooks (snapd 2.27) - Use snapctl configuration storage for unchanging values * Move to using Snap Hooks for configuration * Missed re-adding daemon statement * Fix two warnings from Codacy.
This commit is contained in:
126
snap/helpers/configuration.sh
Executable file
126
snap/helpers/configuration.sh
Executable file
@@ -0,0 +1,126 @@
|
||||
#!/bin/bash
|
||||
if snapctl get gitea.snap.custom; then
|
||||
cdir=$(snapctl get gitea.snap.custom)
|
||||
else
|
||||
cdir=$SNAP_COMMON
|
||||
fi
|
||||
|
||||
cfg="$cdir/conf/app.ini"
|
||||
bak="$cdir/conf/app.ini.bak-$(date -Ins)"
|
||||
basecfg="$SNAP/snap/helpers/app.ini"
|
||||
smp="$SNAP/gitea/custom/conf/app.ini.sample"
|
||||
|
||||
function toSnap() {
|
||||
OIFS=$IFS
|
||||
IFS='
|
||||
'
|
||||
category="none"
|
||||
src="$cfg"
|
||||
[[ "$1" = "init" ]] && src="$smp"
|
||||
[[ "$1" = "snap" ]] && src="$basecfg"
|
||||
|
||||
for l in $(sed 's_;\([A-Z]*\)_\1_g' $src | grep -v -e '^;' -e '^$'); do
|
||||
if echo $l | grep -q '^[[]'; then
|
||||
category=$(CatToSnap "$l")
|
||||
elif echo $l | grep -q '^[A-Z]'; then
|
||||
option=$(OptToSnap "$l")
|
||||
value=$(ValToSnap "$l")
|
||||
if [[ $category = "none" ]]; then
|
||||
snapctl set "$option=$value"
|
||||
else
|
||||
snapctl set "$category.$option=$value"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
IFS=$OIFS
|
||||
}
|
||||
|
||||
function toIni() {
|
||||
OIFS=$IFS
|
||||
IFS='
|
||||
'
|
||||
category="none"; option="none"; catUnset=true
|
||||
src=$smp
|
||||
[[ -f $cfg ]] && src="$cfg"
|
||||
tmpIni="$cfg.tmp"
|
||||
[[ -f $src ]] && cp "$src" "$tmpIni"
|
||||
cp $tmpIni $bak
|
||||
echo '' > $cfg
|
||||
for l in $(grep -v -e '^;' -e '^$' $tmpIni); do
|
||||
if echo $l | grep -q '^[[]'; then
|
||||
category=$(CatToSnap "$l")
|
||||
catUnset=true
|
||||
elif echo $l | grep -q '^[A-Z]'; then
|
||||
option=$(OptToSnap "$l")
|
||||
if [[ $category = "none" ]]; then
|
||||
value=$(snapctl get $option)
|
||||
echo $(OptToIni "$option") = $value >> $cfg
|
||||
else
|
||||
value=$(snapctl get $category.$option)
|
||||
if $catUnset; then
|
||||
echo "" >> $cfg
|
||||
echo "[$(CatToIni "$category")]" >> $cfg
|
||||
catUnset=false
|
||||
fi
|
||||
echo $(OptToIni "$option") = $value >> $cfg
|
||||
fi
|
||||
fi
|
||||
done;
|
||||
IFS=$OIFS
|
||||
}
|
||||
|
||||
function CatToSnap {
|
||||
ret=$(echo "$1" \
|
||||
| grep -oP '[A-Za-z0-9._]+' \
|
||||
| sed 's|\.|-|g' \
|
||||
| sed 's|_|99|g')
|
||||
echo $ret
|
||||
}
|
||||
function OptToSnap {
|
||||
ret=$(echo "$1" \
|
||||
| grep -oP '^[A-Z_]+' \
|
||||
| tr '[:upper:]' '[:lower:]' \
|
||||
| sed 's|_|-|g')
|
||||
echo $ret
|
||||
}
|
||||
function ValToSnap {
|
||||
ret=$(echo "$1" \
|
||||
| grep -oP '=.*$' \
|
||||
| sed 's_^= __g' \
|
||||
| sed 's_^=__g' \
|
||||
| sed "s|SNAP_DIR_DATA|$SDATA|g" \
|
||||
| sed "s|SNAP_DIR_COMMON|$SCOMMON|g" \
|
||||
| sed 's|{}||g')
|
||||
echo $ret
|
||||
}
|
||||
|
||||
function CatToIni {
|
||||
ret=$(echo "$1" \
|
||||
| sed 's|-|.|g' \
|
||||
| sed 's|\ |_|g' \
|
||||
| sed 's|99|_|g')
|
||||
echo $ret
|
||||
}
|
||||
function OptToIni {
|
||||
ret=$(echo "$1" \
|
||||
| tr '[:lower:]' '[:upper:]' \
|
||||
| sed 's|-|_|g')
|
||||
echo $ret
|
||||
}
|
||||
|
||||
[[ "$1" = "configure" ]] \
|
||||
&& toIni \
|
||||
&& exit 0
|
||||
|
||||
[[ "$1" = "install" ]] \
|
||||
&& echo "Initial Configuration..." \
|
||||
&& mkdir -p $SNAP_COMMON/conf \
|
||||
&& toSnap init \
|
||||
&& toSnap snap \
|
||||
&& toIni sample \
|
||||
&& exit 0
|
||||
|
||||
[[ "$1" = "save" ]] \
|
||||
&& echo "Saving current config..." \
|
||||
&& toSnap \
|
||||
&& exit 0
|
Reference in New Issue
Block a user