コード例 #1
0
def create_config_dir(config_dir):
    """Install the dir with dodo_commands resources."""
    os.makedirs(config_dir)
    config_filename = os.path.join(config_dir, "config.yaml")
    default_config = {
        "ROOT": {
            "command_path": [
                os.path.join(Paths().default_commands_dir(expanduser=False),
                             "*")
            ],
            "version":
            "1.0.0",
        }
    }

    default_config_mixin_filename = Paths().default_config_mixin_filename()
    if os.path.exists(default_config_mixin_filename):
        with open(default_config_mixin_filename) as f:
            default_config_mixin = yaml_round_trip_load(f.read())
            merge_into_config(default_config, default_config_mixin)

    with open(config_filename, "w") as f:
        for key in default_config:
            f.write(yaml_round_trip_dump({key: default_config[key]}))
            f.write(os.linesep)

    os.makedirs(os.path.join(config_dir, ".dodo-start-env"))
コード例 #2
0
ファイル: config_io.py プロジェクト: mnieber/dodo_commands
    def load(self, config_filename="config.yaml"):
        """Get configuration."""
        full_config_filename = self._path_to([config_filename])

        if full_config_filename in self._cache:
            return self._cache[full_config_filename]

        if not os.path.exists(full_config_filename):
            return None

        with open(full_config_filename) as f:
            config = yaml_round_trip_load(f.read())

        self._cache[full_config_filename] = config
        return config
コード例 #3
0
ファイル: help.py プロジェクト: mnieber/dodo_commands
def _collect_command_dirs(
    config,
    config_io,
    layer_names_by_command_dir,
    command_aliases,
    metadata_by_layer_name,
    layer_by_target_path,
):
    config_memo = yaml_round_trip_dump(config)

    for layer_name, layer_metadata in metadata_by_layer_name.items():

        def has_command_path(layer):
            return R.path_or(None, "ROOT", "command_path")(layer)

        layer_filenames = layer_filename_superset(
            [layer_metadata.target_path], config_io=config_io
        )
        extra_layers = R.map(config_io.load)(layer_filenames)
        if R.filter(has_command_path)(extra_layers):
            base_config = yaml_round_trip_load(config_memo)
            updated_config, warnings = build_config([base_config] + extra_layers)
            for command_dir in get_command_dirs_from_config(updated_config):
                layer_names = layer_names_by_command_dir[command_dir]
                _add_to_layer_names(layer_names, layer_name)

        layer = layer_by_target_path[layer_metadata.target_path]
        for command_alias in get_aliases(layer).items():
            alias_prefix = (
                ""
                if command_alias[0] in layer_metadata.inferred_commands
                else (layer_name + ".")
            )
            cmd_prefix = layer_name + "."
            command_aliases[alias_prefix + command_alias[0]] = (
                cmd_prefix + command_alias[1]
            )
コード例 #4
0
def _get_root_config_field(config_filename, field_name):
    with open(config_filename) as f:
        config = yaml_round_trip_load(f.read())
    return config.get("ROOT", {}).get(field_name, "")
コード例 #5
0
 def meta_data():
     if os.path.exists(meta_data_filename()):
         with open(meta_data_filename()) as f:
             return yaml_round_trip_load(f.read())
     return None
コード例 #6
0
 def _load_config(cls, config_filename):
     with open(config_filename) as f:
         return yaml_round_trip_load(f.read())