Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
freckles-cli / plugins / freckles_cli_plugin_stdin.py
Size: Mime:
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function

import logging

import click
from ruamel.yaml import YAML

from freckles_cli.freckles_base_cli import run_frecklet, handle_exception

yaml = YAML(typ="safe")

log = logging.getLogger("freckles")


@click.command()
@click.pass_context
def read_stdin(ctx):
    """
    Reads frecklet data from stdin, then executes.

    Either pipe in your frecklet data ala:

        echo '[{"debug-var":{"var": "ansible_facts"}}]' | freckles read-stdin

    Or type it in manually after starting 'freckles read-stdin'.
    In the latter case, press Ctrl-d three times to indicate you
    are finished.
    """

    frecklet_data = []

    stream = click.get_text_stream("stdin", encoding="utf-8")
    for line in stream:
        frecklet_data.append(line)

    frecklet_data = "".join(frecklet_data)

    freckles_context = ctx.obj["context"]
    run_config = ctx.obj["run_config"]
    extra_vars = ctx.obj["extra_vars"]

    try:

        frecklet, frecklet_name = freckles_context.load_frecklet(
            frecklet_data, validate=True
        )

        run_frecklet(
            ctx=ctx,
            frecklet=frecklet,
            freckles_context=freckles_context,
            run_config=run_config,
            vars=extra_vars,
            dump_frecklet=False,
        )
    except (Exception) as e:
        handle_exception(e)