Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 127192
b: refs/heads/master
c: 8e54701
h: refs/heads/master
v: v3
  • Loading branch information
Andi Kleen authored and Sam Ravnborg committed Jan 7, 2009
1 parent 9ada1b4 commit d39f6e9
Show file tree
Hide file tree
Showing 2 changed files with 151 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4f628248a578585472e19e4cba2c604643af8c6c
refs/heads/master: 8e54701ea85b0ab0971637825a628f5aa2b678a4
150 changes: 150 additions & 0 deletions trunk/scripts/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
#!/bin/bash
# Manipulate options in a .config file from the command line

usage() {
cat >&2 <<EOL
Manipulate options in a .config file from the command line.
Usage:
config options command ...
commands:
--enable|-e option Enable option
--disable|-d option Disable option
--module|-m option Turn option into a module
--state|-s option Print state of option (n,y,m,undef)
--enable-after|-E beforeopt option
Enable option directly after other option
--disable-after|-D beforeopt option
Disable option directly after other option
--module-after|-M beforeopt option
Turn option into module directly after other option
commands can be repeated multiple times
options:
--file .config file to change (default .config)
config doesn't check the validity of the .config file. This is done at next
make time.
The options need to be already in the file before they can be changed,
but sometimes you can cheat with the --*-after options.
EOL
exit 1
}

checkarg() {
ARG="$1"
if [ "$ARG" = "" ] ; then
usage
fi
case "$ARG" in
CONFIG_*)
ARG="${ARG/CONFIG_/}"
;;
esac
ARG="`echo $ARG | tr a-z A-Z`"
}

replace() {
sed -i -e "$@" $FN
}

if [ "$1" = "--file" ]; then
FN="$2"
if [ "$FN" = "" ] ; then
usage
fi
shift
shift
else
FN=.config
fi

while [ "$1" != "" ] ; do
CMD="$1"
shift
case "$CMD" in
--enable|-e)
checkarg "$1"
replace "s/# CONFIG_$ARG is not set/CONFIG_$ARG=y/"
shift
;;

--disable|-d)
checkarg "$1"
replace "s/CONFIG_$ARG=[my]/# CONFIG_$ARG is not set/"
shift
;;

--module|-m)
checkarg "$1"
replace "s/CONFIG_$ARG=y/CONFIG_$ARG=m/" \
-e "s/# CONFIG_$ARG is not set/CONFIG_$ARG=m/"
shift
;;

--state|-s)
checkarg "$1"
if grep -q "# CONFIG_$ARG is not set" $FN ; then
echo n
else
V="$(grep "^CONFIG_$ARG=" $FN)"
if [ $? != 0 ] ; then
echo undef
else
V="${V/CONFIG_$ARG=/}"
V="${V/\"/}"
echo "$V"
fi
fi
shift
;;

--enable-after|-E)
checkarg "$1"
A=$ARG
checkarg "$2"
B=$ARG
replace "/CONFIG_$A=[my]/aCONFIG_$B=y" \
-e "/# CONFIG_$ARG is not set/a/CONFIG_$ARG=y" \
-e "s/# CONFIG_$ARG is not set/CONFIG_$ARG=y/"
shift
shift
;;

--disable-after|-D)
checkarg "$1"
A=$ARG
checkarg "$2"
B=$ARG
replace "/CONFIG_$A=[my]/a# CONFIG_$B is not set" \
-e "/# CONFIG_$ARG is not set/a/# CONFIG_$ARG is not set" \
-e "s/CONFIG_$ARG=[my]/# CONFIG_$ARG is not set/"
shift
shift
;;

--module-after|-M)
checkarg "$1"
A=$ARG
checkarg "$2"
B=$ARG
replace "/CONFIG_$A=[my]/aCONFIG_$B=m" \
-e "/# CONFIG_$ARG is not set/a/CONFIG_$ARG=m" \
-e "s/CONFIG_$ARG=y/CONFIG_$ARG=m/" \
-e "s/# CONFIG_$ARG is not set/CONFIG_$ARG=m/"
shift
shift
;;

# undocumented because it ignores --file (fixme)
--refresh)
yes "" | make oldconfig
;;

*)
usage
;;
esac
done

0 comments on commit d39f6e9

Please sign in to comment.