Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

redress 1.2.0 (new formula) #155724

Merged
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions Formula/r/redress.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
class Redress < Formula
desc "Tool for analyzing stripped Go binaries compiled with the Go compiler"
homepage "https://go-re.tk/redress/"
url "https://github.com/goretk/redress/archive/refs/tags/v1.2.0.tar.gz"
sha256 "60b8c6fcdeb4516c32ce5bab40bf345db995f3c2a80561662a190c37eb3284a9"
license "AGPL-3.0-only"
head "https://github.com/goretk/redress.git", branch: "develop"

livecheck do
url :stable
regex(/^v?(\d+(?:\.\d+)+)$/i)
end

depends_on "go" => :build

def install
# https://github.com/goretk/redress/blob/develop/Makefile#L11-L14
gore_version = File.read(buildpath/"go.mod").scan(%r{goretk/gore v(\S+)}).flatten.first

ldflags = %W[
-s -w
-X main.redressVersion=#{version}
-X main.goreVersion=#{gore_version}
-X main.compilerVersion=#{Formula["go"].version}
]

system "go", "build", *std_go_args(ldflags: ldflags)

generate_completions_from_executable(bin/"redress", "completion")
end

test do
assert_match "Version: #{version}", shell_output("#{bin}/redress version")

test_module_root = "github.com/goretk/redress"
test_bin_path = bin/"redress"

output = shell_output("#{bin}/redress info '#{test_bin_path}'")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can the ' be removed?

Suggested change
output = shell_output("#{bin}/redress info '#{test_bin_path}'")
output = shell_output("#{bin}/redress info #{test_bin_path}")

Copy link
Contributor Author

@0xdevalias 0xdevalias Dec 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@chenrui333 It could.. but why? If I did that, then if test_bin_path is updated in future to contain spaces, it will break. It was explicitly written this way to defensibly avoid creating future problems for maintainers.

It could also have been fully inlined like this, but I chose not to do that to improve the readability of it:

    test_module_root = "github.com/goretk/redress"
-   test_bin_path = bin/"redress"
-
-   output = shell_output("#{bin}/redress info '#{test_bin_path}'")
+   output = shell_output("#{bin}/redress info #{bin/"redress"}")

My previous PR that followed this same pattern had the ' and it wasn't an issue there?

test do
  json_output = JSON.parse(shell_output("#{bin}/goresym '#{bin}/goresym'"))
  assert_equal json_output["BuildInfo"]["Main"]["Path"], "github.com/mandiant/GoReSym"
end

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, it is fine, just some code style thing. sounds good then.

assert_match(/Main root\s+#{Regexp.escape(test_module_root)}/, output)
end
end
Loading