46
46
default: None
47
47
required: True
48
48
type: str
49
+ whitespace:
50
+ description:
51
+ - Whether whitespace characters should be used around equal signs
52
+ default: True
53
+ required: False
54
+ type: bool
49
55
author: Sam Yaple
50
56
'''
51
57
67
73
68
74
class OverrideConfigParser (iniparser .BaseParser ):
69
75
70
- def __init__ (self ):
76
+ def __init__ (self , whitespace = True ):
71
77
self ._cur_sections = collections .OrderedDict ()
72
78
self ._sections = collections .OrderedDict ()
73
79
self ._cur_section = None
80
+ self ._whitespace = ' ' if whitespace else ''
74
81
75
82
def assignment (self , key , value ):
76
83
if self ._cur_section is None :
@@ -107,12 +114,20 @@ def write(self, fp):
107
114
def write_key_value (key , values ):
108
115
for v in values :
109
116
if not v :
110
- fp .write ('{} =\n ' .format (key ))
117
+ fp .write ('{key}{ws}=\n ' .format (
118
+ key = key , ws = self ._whitespace ))
111
119
for index , value in enumerate (v ):
112
120
if index == 0 :
113
- fp .write ('{} = {}\n ' .format (key , value ))
121
+ fp .write ('{key}{ws}={ws}{value}\n ' .format (
122
+ key = key ,
123
+ ws = self ._whitespace ,
124
+ value = value ))
114
125
else :
115
- fp .write ('{} {}\n ' .format (len (key ) * ' ' , value ))
126
+ indent_size = len (key ) + len (self ._whitespace ) * 2 + 1
127
+ ws_indent = ' ' * indent_size
128
+ fp .write ('{ws_indent}{value}\n ' .format (
129
+ ws_indent = ws_indent ,
130
+ value = value ))
116
131
117
132
def write_section (section ):
118
133
for key , values in section .items ():
@@ -158,7 +173,8 @@ def run(self, tmp=None, task_vars=None):
158
173
if not isinstance (sources , list ):
159
174
sources = [sources ]
160
175
161
- config = OverrideConfigParser ()
176
+ config = OverrideConfigParser (
177
+ whitespace = self ._task .args .get ('whitespace' , True ))
162
178
163
179
for source in sources :
164
180
self .read_config (source , config )
@@ -179,6 +195,7 @@ def run(self, tmp=None, task_vars=None):
179
195
180
196
new_task = self ._task .copy ()
181
197
new_task .args .pop ('sources' , None )
198
+ new_task .args .pop ('whitespace' , None )
182
199
183
200
new_task .args .update (
184
201
dict (
0 commit comments