diff --git a/lookup_plugins/jq.py b/lookup_plugins/jq.py new file mode 100644 index 0000000..ec68c95 --- /dev/null +++ b/lookup_plugins/jq.py @@ -0,0 +1,30 @@ +from ansible.errors import AnsibleError +from ansible.plugins.lookup import LookupBase + +import json +import sys +import subprocess + +try: + from __main__ import display +except ImportError: + from ansible.utils.display import Display + display = Display() + + +UNDEFINED = object() + + +class LookupModule(LookupBase): + + def run(self, args, variables): + i = json.dumps(args[0]) + c = ["jq", args[1]] + p = subprocess.Popen(c, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) + o, e = p.communicate(i) + r = p.wait() + if r != 0 or e: + assert 0, e + raise subprocess.CalledProcessError(r, c, o, e) + r = json.loads(o) + return r