Skip to content

Commit

Permalink
Add --pre flag to wand upgrade
Browse files Browse the repository at this point in the history
  • Loading branch information
intentionally-left-nil committed Jul 14, 2018
1 parent 48bf03d commit fcd2b83
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 8 deletions.
14 changes: 9 additions & 5 deletions lib/cli/commands/upgrade.ex
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ defmodule Wand.CLI.Commands.Upgrade do
--compile Run mix compile after adding (default: **true**)
--download Run mix deps.get after adding (default: **true**)
--latest Upgrade to the latest version, ignoring wand.json restrictions
--pre Allow upgrading to prerelease versions, if available
--skip Do not upgrade the following package
```
Expand Down Expand Up @@ -51,11 +52,12 @@ defmodule Wand.CLI.Commands.Upgrade do

defmodule Options do
@moduledoc false
defstruct mode: :caret,
defstruct compile: true,
download: true,
compile: true,
latest: false,
skip: []
pre: false,
skip: [],
mode: :caret
end

@doc false
Expand Down Expand Up @@ -112,11 +114,12 @@ defmodule Wand.CLI.Commands.Upgrade do
compile = download and Keyword.get(switches, :compile, true)

options = %Options{
download: download,
compile: compile,
download: download,
latest: Keyword.get(switches, :latest, false),
mode: get_mode(switches),
skip: Keyword.get_values(switches, :skip)
pre: Keyword.get(switches, :pre, false),
skip: Keyword.get_values(switches, :skip),
}

{get_packages(commands), options}
Expand All @@ -138,6 +141,7 @@ defmodule Wand.CLI.Commands.Upgrade do
compile: :boolean,
download: :boolean,
latest: :boolean,
pre: :boolean,
skip: :keep,
]

Expand Down
4 changes: 2 additions & 2 deletions lib/cli/commands/upgrade/execute.ex
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,8 @@ defmodule Wand.CLI.Commands.Upgrade.Execute do
end
end

defp update_hex_requirement(requirement, releases, %Options{latest: false}, mode) do
Enum.find(releases, &Version.match?(&1, requirement))
defp update_hex_requirement(requirement, releases, %Options{latest: false, pre: pre}, mode) do
Enum.find(releases, &Version.match?(&1, requirement, allow_pre: pre))
|> case do
nil -> requirement
version -> Mode.get_requirement!(mode, version)
Expand Down
2 changes: 1 addition & 1 deletion lib/cli/core_validator.ex
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ defmodule Wand.CLI.CoreValidator do
version = String.trim(version)
requirement = Wand.Mode.get_requirement!(:caret, Wand.version())

case Version.match?(version, requirement) do
case Version.match?(version, requirement, allow_pre: false) do
true -> :ok
false -> {:error, :require_core, {:version_mismatch, version}}
end
Expand Down
13 changes: 13 additions & 0 deletions test/commands/upgrade_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ defmodule UpgradeTest do
{:ok, {["poison"], %Options{latest: true}}}
end

test "Upgrade to the latest prerelease version" do
assert Upgrade.validate(["upgrade", "poison", "--latest", "--pre"]) ==
{:ok, {["poison"], %Options{latest: true, pre: true}}}
end

test "Latest, using the exact version" do
assert Upgrade.validate(["upgrade", "poison", "--exact", "--latest"]) ==
{:ok, {["poison"], %Options{latest: true, mode: :exact}}}
Expand Down Expand Up @@ -148,6 +153,14 @@ defmodule UpgradeTest do
validate("~> 1.2.0", ">= 3.1.0 and < 4.0.0", %Options{latest: true, mode: :caret})
end

test "Does not update to a beta version" do
validate("~> 1.4.0", "~> 1.4.1")
end

test "Updates to a pre version" do
validate("~> 1.4.0", "~> 1.4.2-dev2", %Options{pre: true})
end

test "Updates a custom to the latest caret with --latest" do
validate("~> 1.2.0-dev and != 1.2.1", ">= 3.1.0 and < 4.0.0", %Options{
latest: true,
Expand Down
2 changes: 2 additions & 0 deletions test/support/hex.ex
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ defmodule Wand.Test.Helpers.Hex do
"1.5.2",
"1.5.1",
"1.5.0",
"1.4.2-dev2",
"1.4.1",
"1.4.0",
"1.3.1",
"1.3.0",
Expand Down

0 comments on commit fcd2b83

Please sign in to comment.