Packages

YeMUX Yaml-to-tMUX converter creates the shell commands for a new tmux session from a YAML file, attaching to the session if it already runs

Current section

Files

Jump to
yemux lib yemux yaml.ex
Raw

lib/yemux/yaml.ex

defmodule Yemux.Yaml do
@moduledoc ~S"""
Yaml related helpers
"""
def add_partials(yaml, config) do
case Map.get(yaml, "include") do
nil -> {:ok, yaml}
include -> _get_include(yaml, include, config)
end
end
def missing_keys(yaml, keys) do
{values, missing} =
keys
|> Enum.reduce({[], []}, fn key, {values, missing} ->
case Map.get(yaml, key) do
nil -> {values, [key | missing]}
value -> {[value | values], missing}
end
end)
case {values, missing} do
{values, []} -> {:ok, values}
_ -> {:error, missing}
end
end
defp _get_include(yaml, include, config) do
case YamlElixir.read_from_file(
Path.join(Map.get(config, "base_dir"), "sessions/_#{include}.yml")
) do
{:ok, include_yaml} -> {:ok, Yemux.Session.merge_include(yaml, include_yaml)}
{:error, %{message: message}} -> {:error, message}
end
end
end
# SPDX-License-Identifier: Apache-2.0