create-mskpec.sh: INI parsing -> ini-tools.sh

Push ini-parsing from create-mkspec.sh into ini-tools.sh.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2015-05-26 09:57:38 +00:00
commit 024b629859
2 changed files with 59 additions and 57 deletions

View file

@ -1,56 +1,19 @@
#!/bin/sh #!/bin/sh
descr=$1 inifile=$1
dir=`dirname $0`
. $dir/ini-tools.sh
_cat() _cat()
{ {
sed 's/^ *|//' 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() #t()
#{ #{
# echo '--------------' # echo '--------------'
# echo $1: `value $1` # echo $1: `ini_value $1`
#} #}
# #
#t global.group #t global.group
@ -60,7 +23,7 @@ escape()
_cat << EOT _cat << EOT
|echo "Name: \$NAME" |echo "Name: \$NAME"
|echo "Summary: `value summary`" |echo "Summary: `ini_value summary`"
|echo "Version: \$VERSION" |echo "Version: \$VERSION"
|echo "Release: \$RELEASE" |echo "Release: \$RELEASE"
|echo "License: Jannet IT Services proprietary license" |echo "License: Jannet IT Services proprietary license"
@ -71,30 +34,30 @@ escape()
|echo "BuildRoot: /var/tmp/%{name}-buildroot" |echo "BuildRoot: /var/tmp/%{name}-buildroot"
|echo "" |echo ""
|echo "%description" |echo "%description"
|echo "`value description`" |echo "`ini_value description`"
|echo "" |echo ""
EOT EOT
value global.subpackages | grep -q run && _cat << EOT ini_value global.subpackages | grep -q run && _cat << EOT
|# --------------------------------------- |# ---------------------------------------
|echo "%package -n \$NAME-run" |echo "%package -n \$NAME-run"
|echo "Summary: `value summary`" |echo "Summary: `ini_value summary`"
|echo "Group: `value global.group`" |echo "Group: `ini_value global.group`"
|[ "\$REQUIRES_RUN" ] && echo "Requires: \$REQUIRES_RUN" |[ "\$REQUIRES_RUN" ] && echo "Requires: \$REQUIRES_RUN"
|echo "%description -n \$NAME-run" |echo "%description -n \$NAME-run"
|echo "Runtime package" |echo "Runtime package"
|echo "" |echo ""
EOT EOT
value global.subpackages | grep -q devel && _cat << EOT ini_value global.subpackages | grep -q devel && _cat << EOT
|# --------------------------------------- |# ---------------------------------------
|echo "%package -n \$NAME-devel" |echo "%package -n \$NAME-devel"
|echo "Summary: `value summary`, development package" |echo "Summary: `ini_value summary`, development package"
|echo "Group: `value global.group`" |echo "Group: `ini_value global.group`"
|[ "\$REQUIRES_DEVEL" ] && echo "Requires: \$REQUIRES_DEVEL" |[ "\$REQUIRES_DEVEL" ] && echo "Requires: \$REQUIRES_DEVEL"
|echo "%description -n \$NAME-devel" |echo "%description -n \$NAME-devel"
|echo "Development package" |echo "Development package"
|echo "" |echo ""
EOT EOT
value global.subpackages | grep -q run && _cat << EOT ini_value global.subpackages | grep -q run && _cat << EOT
|# --------------------------------------- |# ---------------------------------------
|echo "%prep -n \$NAME-run" |echo "%prep -n \$NAME-run"
|echo "" |echo ""
@ -120,12 +83,12 @@ _cat << EOT
|echo " grep -e '/include/\|devel\|/lib.*\.a\$\|/make\(/\|$\)' | sort -u > \$INSTALL_LOG.\$NAME-devel" |echo " grep -e '/include/\|devel\|/lib.*\.a\$\|/make\(/\|$\)' | sort -u > \$INSTALL_LOG.\$NAME-devel"
|echo "" |echo ""
EOT EOT
value global.subpackages | grep -q run && _cat << EOT ini_value global.subpackages | grep -q run && _cat << EOT
|echo "%post -n \$NAME-run" |echo "%post -n \$NAME-run"
EOT EOT
section pckg.run.post | grep -q . && { ini_section pckg.run.post | grep -q . && {
echo "cat << EOT" echo "cat << EOT"
section pckg.run.post | escape ini_section pckg.run.post | ini_escape
echo "EOT" echo "EOT"
} }
_cat << EOT _cat << EOT
@ -133,13 +96,13 @@ _cat << EOT
|echo "%clean" |echo "%clean"
|#echo 'rm -rf \$RPM_BUILD_ROOT' |#echo 'rm -rf \$RPM_BUILD_ROOT'
EOT 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" |echo "%files -n \$NAME-run -f \$INSTALL_LOG.\$NAME-run"
EOT 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" |echo "%files -n \$NAME-devel -f \$INSTALL_LOG.\$NAME-devel"
EOT EOT
section pckg.devel.post ini_section pckg.devel.post
else else
_cat << EOT _cat << EOT
|echo "%exclude /opt/\$NAME/make/*.mk" |echo "%exclude /opt/\$NAME/make/*.mk"

39
scripts/ini-tools.sh Normal file
View file

@ -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
'
}