Skip to content
This repository was archived by the owner on Oct 24, 2025. It is now read-only.

Commit 42ea0b6

Browse files
authored
Merge pull request #8 from SuadeLabs/master
Add stdout/err iterator ability, and add machine_readable option to build function
2 parents d238543 + 02714cc commit 42ea0b6

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

packer.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ class Packer(object):
1111
"""
1212

1313
def __init__(self, packerfile, exc=None, only=None, vars=None,
14-
var_file=None, exec_path=DEFAULT_PACKER_PATH):
14+
var_file=None, exec_path=DEFAULT_PACKER_PATH, out_iter=None,
15+
err_iter=None):
1516
"""
1617
:param string packerfile: Path to Packer template file
1718
:param list exc: List of builders to exclude
@@ -29,20 +30,33 @@ def __init__(self, packerfile, exc=None, only=None, vars=None,
2930
self.only = self._validate_argtype(only or [], list)
3031
self.vars = self._validate_argtype(vars or {}, dict)
3132

33+
kwargs = dict()
34+
if out_iter is not None:
35+
kwargs["_out"] = out_iter
36+
kwargs["_out_bufsize"] = 1
37+
if err_iter is not None:
38+
kwargs["_err"] = err_iter
39+
kwargs["_out_bufsize"] = 1
40+
3241
self.packer = sh.Command(exec_path)
42+
self.packer = self.packer.bake(**kwargs)
3343

34-
def build(self, parallel=True, debug=False, force=False):
44+
def build(
45+
self, parallel=True, debug=False, force=False,
46+
machine_readable=False):
3547
"""Executes a `packer build`
3648
3749
:param bool parallel: Run builders in parallel
3850
:param bool debug: Run in debug mode
3951
:param bool force: Force artifact output even if exists
52+
:param bool machine_readable: Make output machine-readable
4053
"""
4154
self.packer_cmd = self.packer.build
4255

4356
self._add_opt('-parallel=true' if parallel else None)
4457
self._add_opt('-debug' if debug else None)
4558
self._add_opt('-force' if force else None)
59+
self._add_opt('-machine-readable' if machine_readable else None)
4660
self._append_base_arguments()
4761
self._add_opt(self.packerfile)
4862

0 commit comments

Comments
 (0)