コード例 #1
0
    def _parse(self):
        # create the settings tree and preserve the order in which arguments
        # are passed.  Convert all args into an ordered tree so that
        # --foo fooz  --too moo --foo-bar baaz  --foo-arg vali
        # will be like the ordered tree below
        # foo:
        #   <special-key>: fooz
        #   bar:       ###  <-- foo-bar is not foo/bar
        #     <special-key>: baaz
        #   arg:       ###  <-- arg comes after bar
        #     <special-key>: val
        # too:
        #   <special-key>: moo

        logger.debug("Parsing: %s", self.args)
        logger.debug("DocString for Generate: %s", self._doc_string)

        try:
            self.parsed = docopt(self._doc_string,
                                 options_first=True,
                                 argv=self.args)
        except DocoptExit:
            logger.error(self._doc_string)
            return False
        logger.info("Parsed \n%s", self.parsed)

        self._prepare_defaults()

        if not self._apply_rules():
            logger.error("Error while validating rules: check args %s",
                         '  \n'.join(self.args))
            return False

        logger.debug("New Args: %s", self.args)
        logger.info("After applying rules Parsed: \n%s", self.parsed)

        self.output_file = utils.extract_value(self.parsed,
                                               '<output-file>',
                                               optional=False)

        self.extra_vars = utils.extract_value(self.parsed, '--extra-vars')

        # filter only options; [ --foo, fooz, --bar baz ] -> [--foo, --bar]
        options = [x for x in self.args + self.defaults if x.startswith('--')]

        settings = OrderedTree(delimiter='-')
        for option in options:  # iterate options to preserve order of args
            option = option.split('=')[0]
            value = self.parsed.get(option)
            if not value:
                continue

            key = option[2:] + settings.delimiter + VALUES_KEY
            settings[key] = value
            logger.debug("%s: %s", key, value)

        logger.debug(
            yaml_utils.to_yaml("Directory structure from args:", settings))
        self.settings = settings
        return True
コード例 #2
0
ファイル: settings.py プロジェクト: Haoxing-Wang/InfraRed
    def _parse(self):
        # create the settings tree and preserve the order in which arguments
        # are passed.  Convert all args into an ordered tree so that
        # --foo fooz  --too moo --foo-bar baaz  --foo-arg vali
        # will be like the ordered tree below
        # foo:
        #   <special-key>: fooz
        #   bar:       ###  <-- foo-bar is not foo/bar
        #     <special-key>: baaz
        #   arg:       ###  <-- arg comes after bar
        #     <special-key>: val
        # too:
        #   <special-key>: moo

        logger.debug("Parsing: %s", self.args)
        logger.debug("DocString for Generate: %s", self._doc_string)

        try:
            self.parsed = docopt(self._doc_string,
                                 options_first=True, argv=self.args)
        except DocoptExit:
            logger.error(self._doc_string)
            return False
        logger.info("Parsed \n%s", self.parsed)

        self._prepare_defaults()

        if not self._apply_rules():
            logger.error("Error while validating rules: check args %s",
                         '  \n'.join(self.args))
            return False

        logger.debug("New Args: %s", self.args)
        logger.info("After applying rules Parsed: \n%s", self.parsed)

        self.output_file = utils.extract_value(
            self.parsed, '<output-file>', optional=False)

        self.extra_vars = utils.extract_value(self.parsed, '--extra-vars')

        # filter only options; [ --foo, fooz, --bar baz ] -> [--foo, --bar]
        options = [x for x in self.args + self.defaults if x.startswith('--')]

        settings = OrderedTree(delimiter='-')
        for option in options:   # iterate options to preserve order of args
            option = option.split('=')[0]
            value = self.parsed.get(option)
            if not value:
                continue

            key = option[2:] + settings.delimiter + VALUES_KEY
            settings[key] = value
            logger.debug("%s: %s", key, value)

        logger.debug(yaml_utils.to_yaml(
            "Directory structure from args:", settings))
        self.settings = settings
        return True
コード例 #3
0
    def run(self):
        if not self._parse():
            return 1
        loader = Loader(self.config_dir, self.settings)
        self._merge_rules_file_exports(loader)
        loader.load()
        self._merge_extra_vars(loader)
        all_settings = loader.settings()

        logger.debug(yaml_utils.to_yaml("All Settings", all_settings))
        logger.info("Writing to file: %s", self.output_file)
        with open(self.output_file, 'w') as out:
            out.write(yaml.safe_dump(all_settings, default_flow_style=False))
        return 0
コード例 #4
0
ファイル: settings.py プロジェクト: RandyLevensalor/khaleesi
    def run(self):
        if not self._parse():
            return 1
        loader = Loader(self.config_dir, self.settings)
        self._merge_rules_file_exports(loader)
        loader.load()
        self._merge_extra_vars(loader)
        all_settings = loader.settings()

        logger.debug(yaml_utils.to_yaml("All Settings", all_settings))
        logger.info("Writing to file: %s", self.output_file)
        with open(self.output_file, 'w') as out:
            out.write(yaml.safe_dump(
                all_settings, default_flow_style=False))
        return 0
コード例 #5
0
def print_yaml(msg, x):
    logging.info(yaml_utils.to_yaml(msg, x))
コード例 #6
0
def print_yaml(msg, x):
    import logging
    logging.info(yaml_utils.to_yaml(msg, x))
コード例 #7
0
ファイル: test_tree.py プロジェクト: Haoxing-Wang/InfraRed
def print_yaml(msg, x):
    logging.info(yaml_utils.to_yaml(msg, x))
コード例 #8
0
ファイル: core.py プロジェクト: rbrady/khaleesi
def generate(config_dir, args):
    """
Usage:
    generate [options] <output-file>
    generate [--extra-vars=KEY_PAIR]... [options] <output-file>

Options:
    --extra-vars=<val>...   Provide extra vars {options}
    """

    logging.debug("config_dir: %s, args: %s", config_dir, args)
    doc_string = generate.__doc__.format(
        options=docstring.Generator(config_dir).generate())
    logging.debug("Parsing: %s", args)
    logging.debug("DocString for Generate: %s", doc_string)

    parsed = docopt(doc_string, options_first=True, argv=args)
    logging.info("Parsed: \n%s", parsed)

    output_file = _extract_value_for_option(parsed, '<output-file>')
    extra_vars = _extract_value_for_option(parsed,
                                           '--extra-vars',
                                           must_exist=False)

    # create the settings tree and preserve the order in which arguments
    # are passed.  Convert all args into an ordered tree so that
    # --foo fooz  --too moo --foo-bar baaz  --foo-arg vali
    # will be like the ordered tree below
    # foo:
    #   <special-key>: fooz
    #   bar:       ###  <-- foo-bar is not foo/bar
    #     <special-key>: baaz
    #   arg:       ###  <-- arg comes after bar
    #     <special-key>: val
    # too:
    #   <special-key>: moo

    settings_tree = OrderedTree(delimiter='-')
    # filter only options; [ --foo, fooz, --bar baz ] -> [--foo, --bar]
    options = [x for x in args if x.startswith('--')]

    for option in options:  # iterate options to preserve order of args
        option = option.split('=')[0]
        value = parsed.get(option)
        if not value:
            continue

        key = option[2:] + '-' + settings.VALUES_KEY
        settings_tree[key] = value
        logging.debug("%s: %s", key, value)

    logging.debug(
        yaml_utils.to_yaml("Directory structure from args:", settings_tree))
    loader = settings.Loader(config_dir, settings_tree)
    _update_extra_vars(extra_vars, loader)
    all_settings = loader.settings_tree()
    logging.debug("\n" +
                  yaml.safe_dump(all_settings, default_flow_style=False))
    logging.info("Writing to file: %s", output_file)
    with open(output_file, 'w') as out:
        out.write(yaml.safe_dump(all_settings, default_flow_style=False))
コード例 #9
0
ファイル: core.py プロジェクト: rbrady/khaleesi
def generate(config_dir, args):
    """
Usage:
    generate [options] <output-file>
    generate [--extra-vars=KEY_PAIR]... [options] <output-file>

Options:
    --extra-vars=<val>...   Provide extra vars {options}
    """

    logging.debug("config_dir: %s, args: %s", config_dir, args)
    doc_string = generate.__doc__.format(
        options=docstring.Generator(config_dir).generate()
    )
    logging.debug("Parsing: %s", args)
    logging.debug("DocString for Generate: %s", doc_string)

    parsed = docopt(doc_string, options_first=True, argv=args)
    logging.info("Parsed: \n%s", parsed)

    output_file = _extract_value_for_option(parsed, '<output-file>')
    extra_vars = _extract_value_for_option(
        parsed, '--extra-vars', must_exist=False)

    # create the settings tree and preserve the order in which arguments
    # are passed.  Convert all args into an ordered tree so that
    # --foo fooz  --too moo --foo-bar baaz  --foo-arg vali
    # will be like the ordered tree below
    # foo:
    #   <special-key>: fooz
    #   bar:       ###  <-- foo-bar is not foo/bar
    #     <special-key>: baaz
    #   arg:       ###  <-- arg comes after bar
    #     <special-key>: val
    # too:
    #   <special-key>: moo

    settings_tree = OrderedTree(delimiter='-')
    # filter only options; [ --foo, fooz, --bar baz ] -> [--foo, --bar]
    options = [x for x in args if x.startswith('--')]

    for option in options:   # iterate options to preserve order of args
        option = option.split('=')[0]
        value = parsed.get(option)
        if not value:
            continue

        key = option[2:] + '-' + settings.VALUES_KEY
        settings_tree[key] = value
        logging.debug("%s: %s", key, value)

    logging.debug(yaml_utils.to_yaml(
        "Directory structure from args:", settings_tree))
    loader = settings.Loader(config_dir, settings_tree)
    _update_extra_vars(extra_vars, loader)
    all_settings = loader.settings_tree()
    logging.debug("\n" + yaml.safe_dump(
        all_settings, default_flow_style=False))
    logging.info("Writing to file: %s", output_file)
    with open(output_file, 'w') as out:
        out.write(yaml.safe_dump(all_settings, default_flow_style=False))