mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-25 11:33:11 +00: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.
		
			
				
	
	
		
			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
 |