Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.2 KiB
126 lines
3.2 KiB
#!/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
|
|
|