Added a basic CLI
This commit is contained in:
43
lib/elixir_rss/cli.ex
Normal file
43
lib/elixir_rss/cli.ex
Normal file
@@ -0,0 +1,43 @@
|
||||
defmodule ElixirRss.CLI do
|
||||
@default_host "0.0.0.0"
|
||||
@default_port 8080
|
||||
@default_basepath "/"
|
||||
|
||||
def run(argv) do
|
||||
parse_args(argv)
|
||||
|> process()
|
||||
end
|
||||
|
||||
def parse_args(argv) do
|
||||
OptionParser.parse(
|
||||
argv,
|
||||
strict: [help: :boolean,
|
||||
host: :string,
|
||||
port: :integer,
|
||||
path: :string],
|
||||
aliases: [h: :help])
|
||||
|> elem(0)
|
||||
|> switches_to_internal()
|
||||
end
|
||||
|
||||
defp switches_to_internal(kwargs) do
|
||||
if Keyword.get(kwargs, :help) do
|
||||
:help
|
||||
else
|
||||
{Keyword.get(kwargs, :host, @default_host),
|
||||
Keyword.get(kwargs, :port, @default_port),
|
||||
Keyword.get(kwargs, :path, @default_basepath)}
|
||||
end
|
||||
end
|
||||
|
||||
defp process(:help) do
|
||||
IO.puts("""
|
||||
usage: elixir_rss [--host HOST] [--port PORT] [--path BASEPATH]
|
||||
""")
|
||||
System.halt(0)
|
||||
end
|
||||
|
||||
defp process({host, port, path}) do
|
||||
IO.puts("Host: #{host}, Port: #{port}, Basepath: #{path}")
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,4 @@
|
||||
defmodule ElixirRss.Fetch do
|
||||
defmodule ElixirRss.Http do
|
||||
def fetch(url) do
|
||||
url
|
||||
|> HTTPoison.get()
|
||||
Reference in New Issue
Block a user