mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	* 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.
		
			
				
	
	
		
			127 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			127 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
 |