defmodule Mix.Tasks.Arpos do use Mix.Task @shortdoc "Gestione versione Arpos" @moduledoc """ Prints Arpos tasks and their information. $ mix Arpos To print the arpos version, pass `-v` or `--version`, for example: $ mix arpos --version """ @version Mix.Project.config()[:version] @impl true @doc false def run([opzione]) when opzione in ~w(-v --version) do Mix.shell().info("Arpos v#{@version}") end @impl true @doc """ Legge la versione da mix.exs e la cambia in: README.md VERSION """ def run([opzione]) when opzione in ~w(-awv --allinea) do old = File.read!("VERSION") new_version = "v#{@version}" File.write!("VERSION", new_version) modifica_readme(old) Mix.shell().info("VERSION era #{old} -> Arpos #{new_version}") end @impl true @doc false def run([opzione]) when opzione in ~w(-a --app) do Mix.shell().info("App Arpos v#{@version}") end def run(args) do case args do [] -> general() _ -> Mix.raise("Invalid arguments, expected: mix Arpos") end end defp general() do Application.ensure_all_started(:Arpos) Mix.shell().info("Gestione versione") Mix.shell().info("Arpos v#{Application.spec(:Arpos, :vsn)}") Mix.shell().info("\n## Options\n") Mix.shell().info("-v, --version # Arpos version\n") Mix.shell().info("-awv # Allinea la versione in più file\n") Mix.Tasks.Help.run(["--search", "arpos."]) end defp modifica_readme(da_version) do v_elimnata = String.slice(da_version, 1, 50) IO.inspect(v_elimnata, label: "v_eliminata") con_readme = File.read!("README.md") new_version = String.replace(con_readme, v_elimnata, @version) File.write!("README.md", new_version) Mix.shell().info("Modificato README.md") end end