14f16d6c2e
* 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.
126 lines
3.2 KiB
Bash
Executable file
126 lines
3.2 KiB
Bash
Executable file
#!/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
|