oh-my-batch 0.5.0__py3-none-any.whl → 0.5.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
oh_my_batch/combo.py CHANGED
@@ -1,5 +1,6 @@
1
1
  from itertools import product
2
2
  from string import Template
3
+ import traceback
3
4
  import random
4
5
  import json
5
6
  import os
@@ -92,7 +93,7 @@ class ComboMaker:
92
93
  return self
93
94
 
94
95
  def add_file_set(self, key: str, *path: str, format=None,
95
- sep=' ', abs=False, raise_invalid=False):
96
+ sep=' ', abs=False, raise_invalid=False):
96
97
  """
97
98
  Add a variable with files by glob pattern as one string
98
99
  Unlike add_files, this function joins the files with a delimiter.
@@ -163,7 +164,8 @@ class ComboMaker:
163
164
  self._broadcast_keys.append(key)
164
165
  return self
165
166
 
166
- def make_files(self, file: str, template: str, delimiter='@', mode=None, encoding='utf-8'):
167
+ def make_files(self, file: str, template: str, delimiter='@', mode=None, encoding='utf-8',
168
+ extra_vars_from_file=None, ignore_error=False):
167
169
  """
168
170
  Make files from template against each combo
169
171
  The template file can include variables with delimiter.
@@ -179,6 +181,8 @@ class ComboMaker:
179
181
  can be changed to other character, e.g $, $$, ...
180
182
  :param mode: File mode, e.g. 755, 644, ...
181
183
  :param encoding: File encoding
184
+ :param extra_vars_from_file: Load extra variables from json file, which can be used in template
185
+ :param ignore_error: If True, ignore error when making files
182
186
  """
183
187
  _delimiter = delimiter
184
188
 
@@ -187,16 +191,31 @@ class ComboMaker:
187
191
 
188
192
  combos = self._make_combos()
189
193
  for i, combo in enumerate(combos):
190
- _template = template.format(i=i, **combo)
191
- with open(_template, 'r') as f:
192
- template_text = f.read()
193
- text = _Template(template_text).safe_substitute(combo)
194
- _file = file.format(i=i, **combo)
195
- ensure_dir(_file)
196
- with open(_file, 'w', encoding=encoding) as f:
197
- f.write(text)
198
- if mode is not None:
199
- os.chmod(_file, mode_translate(str(mode)))
194
+ try:
195
+ _template = template.format(i=i, **combo)
196
+ with open(_template, 'r') as f:
197
+ template_text = f.read()
198
+
199
+ if extra_vars_from_file is not None:
200
+ _vars_file = extra_vars_from_file.format(i=i, **combo)
201
+ with open(_vars_file, 'r') as f:
202
+ extra_vars = json.load(f)
203
+ else:
204
+ extra_vars = {}
205
+ text = _Template(template_text).safe_substitute(combo, **extra_vars)
206
+ _file = file.format(i=i, **combo)
207
+ ensure_dir(_file)
208
+
209
+ with open(_file, 'w', encoding=encoding) as f:
210
+ f.write(text)
211
+ if mode is not None:
212
+ os.chmod(_file, mode_translate(str(mode)))
213
+ except Exception as e:
214
+ if ignore_error:
215
+ print(f"Error during making file, ignore: {e}")
216
+ traceback.print_exc()
217
+ else:
218
+ raise e
200
219
  return self
201
220
 
202
221
  def print(self, *line: str, file: str = '', mode=None, encoding='utf-8'):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: oh-my-batch
3
- Version: 0.5.0
3
+ Version: 0.5.2
4
4
  Summary:
5
5
  License: GPL
6
6
  Author: weihong.xu
@@ -4,12 +4,12 @@ oh_my_batch/assets/__init__.py,sha256=Exub46UbQaz2V2eXpQeiVfnThQpXaNeuyjlGY6gBSZ
4
4
  oh_my_batch/assets/functions.sh,sha256=LaiavZBu84D7C1r-dWhf91vPTuHXCMV1DQZUIPVQnjE,1001
5
5
  oh_my_batch/batch.py,sha256=1aVLP2KAbfNo0Asw7khh5HGCrh1PbYLNXLmiR-sWWcs,3988
6
6
  oh_my_batch/cli.py,sha256=Jyz8q2pUYke3mfJS6F_G9S9hApddgXxQw1BsN6Kfkjc,553
7
- oh_my_batch/combo.py,sha256=A5flYsjugcelj105P6Nq4M3kNGtdqh3c7QaSIL3hUcg,9954
7
+ oh_my_batch/combo.py,sha256=6WorlC25L0AbbvXoJm_3JxnbGWWdG2VCH5Gm5vopeh4,10796
8
8
  oh_my_batch/job.py,sha256=8qFYscHGzIQhX-HrAGxCCv7h2T8Ls1Fj0gmNEBdP5Go,7227
9
9
  oh_my_batch/misc.py,sha256=G_iOovRCrShBJJCc82QLN0CvMqW4adOefEoY1GedEiw,452
10
10
  oh_my_batch/util.py,sha256=5ve2QcviuF0UHFLrsXmjMTj0ogXJ4g05q1y-yWCFuOk,2409
11
- oh_my_batch-0.5.0.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
12
- oh_my_batch-0.5.0.dist-info/METADATA,sha256=PnmjPUSjhK9CocNBQDYqRGNsy9KITN0Hr93H-V9onTA,5174
13
- oh_my_batch-0.5.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
14
- oh_my_batch-0.5.0.dist-info/entry_points.txt,sha256=ZY2GutSoNjjSyJ4qO2pTeseKUFgoTYdvmgkuZZkwi68,77
15
- oh_my_batch-0.5.0.dist-info/RECORD,,
11
+ oh_my_batch-0.5.2.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
12
+ oh_my_batch-0.5.2.dist-info/METADATA,sha256=ol5L2beaEHsy8rQ6aLnorf-DtAnytL-a_rDodkMNOM0,5174
13
+ oh_my_batch-0.5.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
14
+ oh_my_batch-0.5.2.dist-info/entry_points.txt,sha256=ZY2GutSoNjjSyJ4qO2pTeseKUFgoTYdvmgkuZZkwi68,77
15
+ oh_my_batch-0.5.2.dist-info/RECORD,,