-module(oaisp@internal@argv).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oaisp/internal/argv.gleam").
-export([default_options/0, parse/1]).
-export_type([output/0, options/0, error/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-type output() :: {to_file, binary()} | to_stdout.
-type options() :: {options, output(), gleam@option:option(binary()), boolean()}.
-type error() :: {unknown_flag, binary()} | {missing_value, binary()}.
-file("src/oaisp/internal/argv.gleam", 25).
?DOC(false).
-spec default_options() -> options().
default_options() ->
{options, {to_file, <<"./openapi.json"/utf8>>}, none, false}.
-file("src/oaisp/internal/argv.gleam", 52).
?DOC(false).
-spec parse_out(binary()) -> output().
parse_out(Value) ->
case Value of
<<"-"/utf8>> ->
to_stdout;
Path ->
{to_file, Path}
end.
-file("src/oaisp/internal/argv.gleam", 35).
?DOC(false).
-spec parse_with(list(binary()), options()) -> {ok, options()} |
{error, error()}.
parse_with(Arguments, Options) ->
case Arguments of
[] ->
{ok, Options};
[<<"-o"/utf8>>, Value | Rest] ->
parse_with(
Rest,
{options,
parse_out(Value),
erlang:element(3, Options),
erlang:element(4, Options)}
);
[<<"--out"/utf8>>, Value | Rest] ->
parse_with(
Rest,
{options,
parse_out(Value),
erlang:element(3, Options),
erlang:element(4, Options)}
);
[<<"-o"/utf8>>] ->
{error, {missing_value, <<"--out"/utf8>>}};
[<<"--out"/utf8>>] ->
{error, {missing_value, <<"--out"/utf8>>}};
[<<"--package-interface"/utf8>>, Value@1 | Rest@1] ->
parse_with(
Rest@1,
{options,
erlang:element(2, Options),
{some, Value@1},
erlang:element(4, Options)}
);
[<<"--package-interface"/utf8>>] ->
{error, {missing_value, <<"--package-interface"/utf8>>}};
[<<"--quiet"/utf8>> | Rest@2] ->
parse_with(
Rest@2,
{options,
erlang:element(2, Options),
erlang:element(3, Options),
true}
);
[Flag | _] ->
{error, {unknown_flag, Flag}}
end.
-file("src/oaisp/internal/argv.gleam", 30).
?DOC(false).
-spec parse(list(binary())) -> {ok, options()} | {error, error()}.
parse(Arguments) ->
parse_with(Arguments, default_options()).