defmodule Mix.Tasks.NimbleTemplate.UpgradeStack do @shortdoc "Upgrade Elixir, Erlang, Alpine or Node version." @moduledoc """ #{@shortdoc} - Hex package: https://hex.pm/packages/nimble_template - Github: https://github.com/nimblehq/elixir-templates # Usage - mix help nimble_template.upgrade_stack # Print help - mix nimble_template.upgrade_stack elixir x.x.x # Upgrade Elixir to x.x.x - mix nimble_template.upgrade_stack erlang x.x.x # Upgrade Erlang to x.x.x - mix nimble_template.upgrade_stack alpine x.x.x # Upgrade Alpine to x.x.x - mix nimble_template.upgrade_stack node x.x.x # Upgrade Node to x.x.x - mix nimble_template.upgrade_stack elixir x.x.x erlang y.y.y alpine z.z.z node w.w.w # Upgrade Elixir, Erlang, Alpine and Node """ use Mix.Task alias NimbleTemplate.Version def run(args) do stack_versions = parse_opts(args) Version.upgrade_stack(stack_versions) end defp parse_opts(args) do case OptionParser.parse(args, strict: [ elixir: :string, erlang: :string, alpine: :string, node: :string ] ) do {stack_versions, _args, _invalid} -> stack_versions _other -> Mix.raise( "Invalid command. Check `mix help nimble_template.upgrade_stack` for more information." ) end end end