author | Tero Marttila <terom@paivola.fi> |
Thu, 15 Mar 2012 18:33:59 +0200 | |
changeset 5 | 1eb454630f47 |
parent 1 | ea30c9b619b8 |
permissions | -rwxr-xr-x |
1
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
1 |
#!/usr/bin/env python |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
2 |
# vim: set ft=python : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
3 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
4 |
""" |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
5 |
Process zonefiles with template expansions. |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
6 |
""" |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
7 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
8 |
__version__ = '0.0.1-dev' |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
9 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
10 |
import optparse |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
11 |
import codecs |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
12 |
import os.path |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
13 |
from datetime import datetime |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
14 |
import logging |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
15 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
16 |
log = logging.getLogger() |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
17 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
18 |
# command-line options, global state |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
19 |
options = None |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
20 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
21 |
def parse_options (argv) : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
22 |
""" |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
23 |
Parse command-line arguments. |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
24 |
""" |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
25 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
26 |
parser = optparse.OptionParser( |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
27 |
prog = argv[0], |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
28 |
usage = '%prog: [options]', |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
29 |
version = __version__, |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
30 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
31 |
# module docstring |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
32 |
description = __doc__, |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
33 |
) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
34 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
35 |
# logging |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
36 |
general = optparse.OptionGroup(parser, "General Options") |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
38 |
general.add_option('-q', '--quiet', dest='loglevel', action='store_const', const=logging.ERROR, help="Less output") |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
39 |
general.add_option('-v', '--verbose', dest='loglevel', action='store_const', const=logging.INFO, help="More output") |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
40 |
general.add_option('-D', '--debug', dest='loglevel', action='store_const', const=logging.DEBUG, help="Even more output") |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
41 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
42 |
parser.add_option_group(general) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
43 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
44 |
parser.add_option('-c', '--input-charset', metavar='CHARSET', default='utf-8', |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
45 |
help="Encoding used for input files") |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
46 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
47 |
parser.add_option('-o', '--output', metavar='FILE', default='-', |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
48 |
help="Write to output file; default stdout") |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
49 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
50 |
parser.add_option('--output-charset', metavar='CHARSET', default='utf-8', |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
51 |
help="Encoding used for output files") |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
52 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
53 |
parser.add_option('--expand', metavar='NAME=VALUE', action='append', |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
54 |
help="Expand given template variable in zone") |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
55 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
56 |
parser.add_option('--serial', metavar='FILE', |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
57 |
help="Read/expand serial from given .serial file") |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
58 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
59 |
# defaults |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
60 |
parser.set_defaults( |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
61 |
loglevel = logging.WARN, |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
62 |
expand = [], |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
64 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
65 |
# parse |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
66 |
options, args = parser.parse_args(argv[1:]) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
67 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
68 |
# configure |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
69 |
logging.basicConfig( |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
70 |
format = '%(processName)s: %(name)s: %(levelname)s %(funcName)s : %(message)s', |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
71 |
level = options.loglevel, |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
72 |
) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
73 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
74 |
return options, args |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
75 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
76 |
def process_file (file, expansions) : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
77 |
""" |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
78 |
Process file, expanding lines. |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
79 |
""" |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
80 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
81 |
for line in file : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
82 |
line = line.format(**expansions) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
83 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
84 |
yield line |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
85 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
86 |
def write_lines (file, lines, suffix='\n') : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
87 |
for line in lines : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
88 |
file.write(line + suffix) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
89 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
90 |
def open_file (path, mode, charset) : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
91 |
""" |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
92 |
Open unicode-enabled file from path, with - using stdio. |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
93 |
""" |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
94 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
95 |
if path == '-' : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
96 |
# use stdin/out based on mode |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
97 |
stream, func = { |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
98 |
'r': (sys.stdin, codecs.getreader), |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
99 |
'w': (sys.stdout, codecs.getwriter), |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
100 |
}[mode[0]] |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
101 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
102 |
# wrap |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
103 |
return func(charset)(stream) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
104 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
105 |
else : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
106 |
# open |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
107 |
return codecs.open(path, mode, charset) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
108 |
|
5
1eb454630f47
expand-zone: remove serial update handling, just read
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
109 |
def process_serial (path) : |
1
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
110 |
""" |
5
1eb454630f47
expand-zone: remove serial update handling, just read
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
111 |
Use serial number from given file. |
1
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
112 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
113 |
Returns the new serial as a string. |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
114 |
""" |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
115 |
|
5
1eb454630f47
expand-zone: remove serial update handling, just read
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
116 |
if not os.path.exists(path) : |
1eb454630f47
expand-zone: remove serial update handling, just read
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
117 |
raise Exception("Given --serial does not exist: %s" % path) |
1
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
118 |
|
5
1eb454630f47
expand-zone: remove serial update handling, just read
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
119 |
return open(path).read().strip() |
1
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
120 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
121 |
def parse_expand (expand) : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
122 |
""" |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
123 |
Parse an --expand foo=bar to (key, value) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
124 |
""" |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
125 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
126 |
key, value = expand.split('=', 1) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
127 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
128 |
return key, value |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
129 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
130 |
def main (argv) : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
131 |
global options |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
132 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
133 |
options, args = parse_options(argv) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
134 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
135 |
# expands |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
136 |
expand = dict(parse_expand(expand) for expand in options.expand) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
137 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
138 |
# serial? |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
139 |
if options.serial : |
5
1eb454630f47
expand-zone: remove serial update handling, just read
Tero Marttila <terom@paivola.fi>
parents:
1
diff
changeset
|
140 |
serial = process_serial(options.serial) |
1
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
141 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
142 |
expand['serial'] = serial |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
143 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
144 |
# input |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
145 |
if args : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
146 |
# open files |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
147 |
input_files = [open_file(path, 'r', options.input_charset) for path in args] |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
148 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
149 |
else : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
150 |
# default to stdout |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
151 |
input_files = [open_file('-', 'r', options.input_charset)] |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
152 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
153 |
# process |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
154 |
lines = [] |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
155 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
156 |
for file in input_files : |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
157 |
log.info("Reading zone: %s", file) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
158 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
159 |
lines += list(process_file(file, expand)) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
160 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
161 |
# output |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
162 |
output = open_file(options.output, 'w', options.output_charset) |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
163 |
write_lines(output, lines, suffix='') |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
164 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
165 |
return 0 |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
166 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
167 |
if __name__ == '__main__': |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
168 |
import sys |
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
169 |
|
ea30c9b619b8
expand-zone: manage zone serials and expand template vars
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
170 |
sys.exit(main(sys.argv)) |