From d11a27924b83c8b795d445eb2ace9fddc3041a42 Mon Sep 17 00:00:00 2001 From: Sitaram Chamarty Date: Wed, 12 May 2010 22:09:51 +0530 Subject: [PATCH] (big-config) compile: fragments in big-config Since it is possible to do all sorts of shenanigans with wildcards and repo groups, we - allow only a fragment called "foo" to set permissions for a group called "@foo", in addition to a repo called "foo" - forbid defining any groups within a fragment conf. All "@foo = bar baz" must be done in the main config file now. If this proves too limiting for anyone I'll worry about it then. --- src/gl-compile-conf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gl-compile-conf b/src/gl-compile-conf index 9dbb6fb..5c02160 100755 --- a/src/gl-compile-conf +++ b/src/gl-compile-conf @@ -173,6 +173,8 @@ sub parse_conf_file # user or repo groups if (/^(@\S+) = (.*)/) { + die "$ABRT defining groups is not allowed inside fragments\n" + if $GL_BIG_CONFIG and $fragment ne 'master'; # store the members of each group as hash key. Keep track of when # the group was *first* created by using $fragment as the *value* do { $groups{$1}{$_} ||= $fragment } for ( expand_list( split(' ', $2) ) ); @@ -239,6 +241,8 @@ sub parse_conf_file # fragment is also called 'foo' (you're allowed to have a # fragment that is only concerned with one repo) ( $fragment eq $repo ) or + # same thing in big-config-land; foo is just @foo now + ( $GL_BIG_CONFIG and "\@$fragment" eq $repo ) or # fragment is called "bar" and "@bar = foo" has been # defined in the master config ( ($groups{"\@$fragment"}{$repo} || '') eq 'master' )