Skip to content

Commit

Permalink
feat: enable custom replace/pattern for readme versioning (#56)
Browse files Browse the repository at this point in the history
  • Loading branch information
frankdugan3 authored May 20, 2023
1 parent 138faed commit 744b12e
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 4 deletions.
16 changes: 14 additions & 2 deletions lib/git_ops/version_replace.ex
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,20 @@ defmodule GitOps.VersionReplace do
update_file(file, "@version \"#{current_version}\"", "@version \"#{new_version}\"", opts)
end

@spec update_readme(String.t(), String.t(), String.t()) :: String.t() | {:error, :bad_replace}
def update_readme(readme, current_version, new_version, opts \\ []) do
@spec update_readme(
String.t()
| {String.t(), fun :: (String.t() -> String.t()), fun :: (String.t() -> String.t())},
String.t(),
String.t()
) :: String.t() | {:error, :bad_replace}
def update_readme(readme, current_version, new_version, opts \\ [])

def update_readme({readme, replace, pattern}, current_version, new_version, opts)
when is_function(replace, 1) and is_function(pattern, 1) do
update_file(readme, replace.(current_version), pattern.(new_version), opts)
end

def update_readme(readme, current_version, new_version, opts) do
update_file(readme, ", \"~> #{current_version}\"", ", \"~> #{new_version}\"", opts)
end

Expand Down
32 changes: 30 additions & 2 deletions test/version_replace_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ defmodule GitOps.Test.VersionReplaceTest do
"""
end

def package_json_contents(version) do
"""
{
"version": "#{version}"
}
"""
end

setup do
readme = "TEST_README.md"
version = "0.1.1"
Expand All @@ -30,9 +38,15 @@ defmodule GitOps.Test.VersionReplaceTest do

File.write!(readme, readme_contents)

on_exit(fn -> File.rm!(readme) end)
package_json = "package.json"
File.write!(package_json, package_json_contents(version))

on_exit(fn ->
File.rm!(readme)
File.rm!(package_json)
end)

%{readme: readme, version: version}
%{readme: readme, package_json: package_json, version: version}
end

test "that README gets written to properly", context do
Expand All @@ -54,4 +68,18 @@ defmodule GitOps.Test.VersionReplaceTest do

assert File.read!(readme) == readme_contents(version)
end

test "custom replace/pattern", context do
readme = context.package_json
version = context.version
new_version = "1.0.0"

VersionReplace.update_readme(
{readme, fn v -> "\"version\": \"#{v}\"" end, fn v -> "\"version\": \"#{v}\"" end},
version,
new_version
)

assert File.read!(readme) == package_json_contents(new_version)
end
end

0 comments on commit 744b12e

Please sign in to comment.