Current section
Files
Jump to
Current section
Files
lib/reactor/file/steps/mkdir.ex
defmodule Reactor.File.Step.Mkdir do
@arg_schema Spark.Options.new!(
path: [
type: :string,
required: true,
doc: "The path of the directory to create"
]
)
@opt_schema Spark.Options.new!(
minus_p: [
type: :boolean,
required: false,
default: false,
doc: "Whether or not to create any missing intermediate directories"
]
)
@moduledoc """
A step which calls `File.mkdir/1` or `File.mkdir_p/1`.
## Arguments
#{Spark.Options.docs(@arg_schema)}
## Options
#{Spark.Options.docs(@opt_schema)}
"""
use Reactor.Step
@doc false
@impl true
def run(arguments, _context, options) do
with {:ok, arguments} <- Spark.Options.validate(Enum.to_list(arguments), @arg_schema),
{:ok, options} <- Spark.Options.validate(options, @opt_schema),
:ok <- mkdir(arguments[:path], options[:minus_p]) do
{:ok, arguments[:path]}
end
end
defp mkdir(path, false), do: File.mkdir(path)
defp mkdir(path, true), do: File.mkdir_p(path)
end