|
|
- #!/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
|