Replace special rule by a module-list.mask file which enumerates all

patterns matching the files which should not figure in module-list.nix.

svn path=/nixos/branches/modular-nixos/; revision=15941
This commit is contained in:
Nicolas Pierron
2009-06-11 17:59:47 +00:00
parent 4001b66c88
commit 6cee6e9d87
3 changed files with 25 additions and 9 deletions

View File

@@ -30,19 +30,31 @@ is_module(){
" | nix-instantiate - --eval-only
}
find_mask(){
local maskfile="$1"
if test -r "${maskfile}"; then
cat "${maskfile}"
echo
echo "./module-list.nix"
else
echo "./module-list.nix"
fi | \
sed -ne 's/[ ]*#.*//; /^[ ]*$/ d; s/\(.*\)/-wholename '"'\1'"' -or /p' | tr -d '\n'
}
generate_index(){
local path="$1"
cd "$path"
echo -n "$path: " 1>&2
{ echo "[ # This file has been generated by $(basename $prog)";
for file in : $(find ./ -wholename '*.impl[./]*' -or -wholename './module-list.nix' -or -type f -name '*.nix' -print | sort); do
for file in : $(eval find ./ $(find_mask ./module-list.mask) -type f -name "'*.nix'" -print | sort); do
[ "$file" = ':' ] && continue;
echo -n . 1>&2
if test "$(is_module "$file" 2> /dev/null)" = "Bool(True)"; then
echo " $file"
else
echo "##### $file"
is_module "$file" 2>&1 | sed 's/^/# /'
is_module "$file" 2>&1 | sed "s/^/# /; s,$(pwd),.,"
fi
done
echo ']';