source: lmd-client/trunk/fuentes/install/usr/bin/ltsmerger @ 512

Last change on this file since 512 was 512, checked in by mabarracus, 5 years ago

copy trusty code

  • Property svn:executable set to *
File size: 2.0 KB
Line 
1#!/usr/bin/env python
2
3import ConfigParser
4import sys
5
6
7if len(sys.argv)!=3:
8        print "USAGE:"
9        print "\tltsmerger global_ltsconf local_ltsconf"
10        sys.exit(0)
11
12
13def is_inside_tuple(tuple_list,value):
14       
15        pos=0
16        for t in tuple_list:
17                if value in t:
18                        return [True,pos]
19                pos+=1
20               
21        return [False,None]
22       
23#def is_inside_tuple
24
25
26try:
27
28        global_cfg = ConfigParser.ConfigParser()
29        global_cfg.optionxform=str
30        global_cfg.read(sys.argv[1])
31
32        local_cfg = ConfigParser.ConfigParser()
33        local_cfg.optionxform=str
34        local_cfg.read(sys.argv[2])
35
36        for section in local_cfg.sections():
37                for item in local_cfg.items(section):
38                        k,v=item
39                        if global_cfg.has_section(section) and global_cfg.has_option(section,k):
40                                global_cfg.remove_option(section,k)
41                               
42
43        new_cfg={}
44        new_cfg["Default"]=[]
45
46        cfg_list=[global_cfg,local_cfg]
47
48
49        for cfg in cfg_list:
50
51                if len(cfg.defaults())>0:
52                        defaults=cfg.defaults().items()
53                        for option in defaults:
54                                ret,pos=is_inside_tuple(new_cfg["Default"],option[0])
55                                if ret:
56                                        new_cfg["Default"][pos]=(new_cfg["Default"][pos][0],option[1])
57                                else:
58                                        new_cfg["Default"].append(option)
59                                       
60                                # ConfgParser DEFAULT values appear in every section.
61                                # In our case, we don't want them in other sections
62                               
63                                cfg.remove_option("DEFAULT",option[0])
64                       
65                for section in cfg.sections():
66                        if section not in new_cfg and section.lower()!="default":
67                                new_cfg[section]=[]
68                               
69                        for option in cfg.items(section):
70                                if section.lower()=="default":
71                                        section="Default"
72               
73                                ret,pos=is_inside_tuple(new_cfg[section],option[0])
74                                if ret:
75                                        new_cfg[section][pos]=(new_cfg[section][pos][0],option[1])
76                                else:
77                                        new_cfg[section].append(option)
78
79
80
81        print "[Default]"
82        for option in new_cfg["Default"]:
83                print "%s = %s"%(option[0],option[1])
84       
85        for section in new_cfg:
86                if section.lower() != "default":
87                        print "[%s]"%section
88                        for option in new_cfg[section]:
89                                print "%s = %s"%(option[0],option[1])
90                       
91except Exception as e:
92       
93        print "# Exception when merging lts.conf files"
94        print "# Exception: ", str(e).strip('\n')
95        print "[Default]"
96       
Note: See TracBrowser for help on using the repository browser.