@@ 11,7 11,8 @@ defmodule Mix.Tasks.Triglav.PtUpdate do
def run(args) do
Application.put_env(:triglav, :repo_only, true)
{:ok, _} = Application.ensure_all_started(:triglav)
- {opts, _} = OptionParser.parse!(args, strict: [force: :boolean])
+ {opts, operators} = OptionParser.parse!(args, strict: [force: :boolean])
+ opts = if operators == [], do: opts, else: Keyword.put(opts, :operators, operators)
{time, _} = :timer.tc(fn -> PublicTransport.update_all(opts) end)
time_seconds = :erlang.float_to_binary(time / 1_000_000, decimals: 2)
@@ 12,28 12,37 @@ defmodule Triglav.PublicTransport do
defdelegate generate_mappings(feed_id), to: Mappings, as: :generate
defdelegate import_autotrolej(opts \\ []), to: Triglav.Autotrolej, as: :import
+ defdelegate import_gpp_osijek(opts \\ []), to: Triglav.PublicTransport.ImportGtfs
defdelegate import_hzpp(opts \\ []), to: Triglav.PublicTransport.ImportGtfs
+ defdelegate import_jadrolinija(opts \\ []), to: Triglav.PublicTransport.ImportGtfs
defdelegate import_zet(opts \\ []), to: Triglav.PublicTransport.ImportGtfs
- defdelegate import_gpp_osijek(opts \\ []), to: Triglav.PublicTransport.ImportGtfs
@doc """
For each operator, check if a new feed is available. If so, update the feed,
generate new mappings and update errors.
Options:
- - force - if set to `true` will re-load the feeds even if a newer feed is not
- found. Default is `false.
+ - `:operators` - A list of operator slugs to load
+ - `:force` - If set to `true` will re-load the feeds even if a newer feed is
+ not found. Default is `false`.
"""
def update_all(opts \\ []) do
- Operator
- |> Repo.all()
- |> Enum.each(fn operator ->
- try do
- update_feed(operator, opts)
- rescue
- e -> Triglav.Tooling.log_error("Failed loading #{operator.name}", e, __STACKTRACE__)
- end
- end)
+ slugs = Keyword.get(opts, :operators)
+
+ operators =
+ if slugs,
+ do: Repo.all(from(o in Operator, where: o.slug in ^slugs)),
+ else: Repo.all(Operator)
+
+ Enum.each(operators, &update_operator(&1, opts))
+ end
+
+ defp update_operator(operator, opts) do
+ try do
+ update_feed(operator, opts)
+ rescue
+ e -> Triglav.Tooling.log_error("Failed loading #{operator.name}", e, __STACKTRACE__)
+ end
end
@doc """