From 024b629859b0f45d5d81a9d865723dff41b8ffe1 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Tue, 26 May 2015 09:57:38 +0000 Subject: [PATCH] create-mskpec.sh: INI parsing -> ini-tools.sh Push ini-parsing from create-mkspec.sh into ini-tools.sh. Signed-off-by: Jan Lindemann --- scripts/create-mkspec.sh | 77 +++++++++++----------------------------- scripts/ini-tools.sh | 39 ++++++++++++++++++++ 2 files changed, 59 insertions(+), 57 deletions(-) create mode 100644 scripts/ini-tools.sh diff --git a/scripts/create-mkspec.sh b/scripts/create-mkspec.sh index 76e72a0c..c368a17e 100644 --- a/scripts/create-mkspec.sh +++ b/scripts/create-mkspec.sh @@ -1,56 +1,19 @@ #!/bin/sh -descr=$1 +inifile=$1 +dir=`dirname $0` + +. $dir/ini-tools.sh _cat() { sed 's/^ *|//' } -section() -{ - local sec="$1" - cat "$descr" | - cut -d\# -f1 | - tr -s '\n' '\n' | - sed -n "/\[$sec\]/,/\[/ p" | - grep -v '\[' -} - -value() -{ - local path=$1 - local sec=`echo $1 | sed 's/\.[^.]\+$//'` - local key=`echo $1 | sed 's/.*\.//'` - -# echo "path=>$path<" -# echo "sec=>$sec<" -# echo "key=>$key<" - - if [ "$key" = "$path" ]; then - section $path - return 0 - fi - - section $sec | sed " - /^ *$key *=/ !d - s/^ *$key *= *// - s/ *$// - " -} - -escape() -{ - cat | sed ' - s/\$/\\$/g - s/`/\\\`/g - ' -} - #t() #{ # echo '--------------' -# echo $1: `value $1` +# echo $1: `ini_value $1` #} # #t global.group @@ -60,7 +23,7 @@ escape() _cat << EOT |echo "Name: \$NAME" - |echo "Summary: `value summary`" + |echo "Summary: `ini_value summary`" |echo "Version: \$VERSION" |echo "Release: \$RELEASE" |echo "License: Jannet IT Services proprietary license" @@ -71,30 +34,30 @@ escape() |echo "BuildRoot: /var/tmp/%{name}-buildroot" |echo "" |echo "%description" - |echo "`value description`" + |echo "`ini_value description`" |echo "" EOT -value global.subpackages | grep -q run && _cat << EOT +ini_value global.subpackages | grep -q run && _cat << EOT |# --------------------------------------- |echo "%package -n \$NAME-run" - |echo "Summary: `value summary`" - |echo "Group: `value global.group`" + |echo "Summary: `ini_value summary`" + |echo "Group: `ini_value global.group`" |[ "\$REQUIRES_RUN" ] && echo "Requires: \$REQUIRES_RUN" |echo "%description -n \$NAME-run" |echo "Runtime package" |echo "" EOT -value global.subpackages | grep -q devel && _cat << EOT +ini_value global.subpackages | grep -q devel && _cat << EOT |# --------------------------------------- |echo "%package -n \$NAME-devel" - |echo "Summary: `value summary`, development package" - |echo "Group: `value global.group`" + |echo "Summary: `ini_value summary`, development package" + |echo "Group: `ini_value global.group`" |[ "\$REQUIRES_DEVEL" ] && echo "Requires: \$REQUIRES_DEVEL" |echo "%description -n \$NAME-devel" |echo "Development package" |echo "" EOT -value global.subpackages | grep -q run && _cat << EOT +ini_value global.subpackages | grep -q run && _cat << EOT |# --------------------------------------- |echo "%prep -n \$NAME-run" |echo "" @@ -120,12 +83,12 @@ _cat << EOT |echo " grep -e '/include/\|devel\|/lib.*\.a\$\|/make\(/\|$\)' | sort -u > \$INSTALL_LOG.\$NAME-devel" |echo "" EOT -value global.subpackages | grep -q run && _cat << EOT +ini_value global.subpackages | grep -q run && _cat << EOT |echo "%post -n \$NAME-run" EOT - section pckg.run.post | grep -q . && { + ini_section pckg.run.post | grep -q . && { echo "cat << EOT" - section pckg.run.post | escape + ini_section pckg.run.post | ini_escape echo "EOT" } _cat << EOT @@ -133,13 +96,13 @@ _cat << EOT |echo "%clean" |#echo 'rm -rf \$RPM_BUILD_ROOT' EOT -value global.subpackages | grep -q run && _cat << EOT +ini_value global.subpackages | grep -q run && _cat << EOT |echo "%files -n \$NAME-run -f \$INSTALL_LOG.\$NAME-run" EOT -if value global.subpackages | grep -q devel; then _cat << EOT +if ini_value global.subpackages | grep -q devel; then _cat << EOT |echo "%files -n \$NAME-devel -f \$INSTALL_LOG.\$NAME-devel" EOT -section pckg.devel.post +ini_section pckg.devel.post else _cat << EOT |echo "%exclude /opt/\$NAME/make/*.mk" diff --git a/scripts/ini-tools.sh b/scripts/ini-tools.sh new file mode 100644 index 00000000..3a1f76f1 --- /dev/null +++ b/scripts/ini-tools.sh @@ -0,0 +1,39 @@ +ini_section() +{ + local sec="$1" + cat "$inifile" | + cut -d\# -f1 | + tr -s '\n' '\n' | + sed -n "/\[$sec\]/,/\[/ p" | + grep -v '\[' +} + +ini_value() +{ + local path=$1 + local sec=`echo $1 | sed 's/\.[^.]\+$//'` + local key=`echo $1 | sed 's/.*\.//'` + +# echo "path=>$path<" +# echo "sec=>$sec<" +# echo "key=>$key<" + + if [ "$key" = "$path" ]; then + ini_section $path + return 0 + fi + + ini_section $sec | sed " + /^ *$key *=/ !d + s/^ *$key *= *// + s/ *$// + " +} + +ini_escape() +{ + cat | sed ' + s/\$/\\$/g + s/`/\\\`/g + ' +}