Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 6ec0acd in mainline for tools/config.py


Ignore:
Timestamp:
2010-12-05T12:56:04Z (11 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master
Children:
01e7043
Parents:
421250e
Message:

Fix two-level profiles.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/config.py

    r421250e r6ec0acd  
    413413        return list
    414414
    415 ## Choose a profile and load configuration presets.
    416 #
    417 def load_presets(root, fname, screen, config):
     415## Ask user to choose a configuration profile.
     416#
     417def profile_choose(root, fname, screen, config):
    418418        options = []
    419419        opt2path = {}
     
    436436                                        subprofile = True
    437437                                        options.append("%s (%s)" % (name, subname))
    438                                         opt2path[cnt] = (canon, subcanon)
     438                                        opt2path[cnt] = [name, subname]
    439439                                        cnt += 1
    440440                       
    441441                        if not subprofile:
    442442                                options.append(name)
    443                                 opt2path[cnt] = (canon, None)
     443                                opt2path[cnt] = [name]
    444444                                cnt += 1
    445445       
     
    449449                return None
    450450       
    451         read_config(opt2path[value][0], config)
    452         if opt2path[value][1] != None:
    453                 read_config(opt2path[value][1], config)
     451        return opt2path[value]
     452
     453## Read presets from a configuration profile.
     454#
     455# @param profile        Profile to load from (a list of string components)
     456# @param config         Output configuration
     457#
     458def presets_read(profile, config):
     459        path = os.path.join(PRESETS_DIR, profile[0], MAKEFILE)
     460        read_config(path, config)
     461
     462        if len(profile) > 1:
     463                path = os.path.join(PRESETS_DIR, profile[0], profile[1], MAKEFILE)
     464                read_config(path, config)
     465
     466## Parse profile name (relative OS path) into a list of components.
     467#
     468# @param profile_name   Relative path (using OS separator)
     469# @return               List of components
     470#
     471def parse_profile_name(profile_name):
     472        profile = []
     473
     474        head, tail = os.path.split(profile_name)
     475        if head != '':
     476                profile.append(head)
     477
     478        profile.append(tail)
     479        return profile
    454480
    455481def main():
    456         cfgfile_in = None
     482        profile = None
    457483        config = {}
    458484        rules = []
     
    464490        # otherwise configuration from previous run is used.
    465491        if len(sys.argv) >= 4:
    466                 cfgfile_in = sys.argv[3]
    467         else:
    468                 cfgfile_in = MAKEFILE
    469        
    470         # Read configuration file
    471         if os.path.exists(cfgfile_in):
    472                 read_config(cfgfile_in, config)
     492                profile = parse_profile_name(sys.argv[3])
     493                presets_read(profile, config)
     494        elif os.path.exists(MAKEFILE):
     495                read_config(MAKEFILE, config)
    473496       
    474497        # Default mode: only check values and regenerate configuration files
     
    547570                       
    548571                        if value == 0:
    549                                 load_presets(PRESETS_DIR, MAKEFILE, screen, config)
     572                                profile = profile_choose(PRESETS_DIR, MAKEFILE, screen, config)
     573                                if profile != None:
     574                                        presets_read(profile, config)
    550575                                position = 1
    551576                                continue
Note: See TracChangeset for help on using the changeset viewer.