💡 Summary
We should look at converting this project from a bash script to a Go application.
Motivation and context
Writing the extension in Go would provide a number of benefits:
- More direct integration with the
gh utility through the go-gh module.
- Better versioning because using the gh-extension-precompile action will provide the correct scaffolding to create releases that
gh will work with instead of a git pull.
- Real testing because it would be significantly easier to test the components of a Go application with proper unit testing and
go test.
Implementation notes
Since we archived our Go package skeleton we do not have a better skeleton to inherit from at present. As such we should probably organize the application as a basic command using multiple files. This will allow us to break up functionality as needed without adding needless complexity through internal packages to import.
We should target the latest two releases per the Go Release Policy and make sure we can build binaries for all major platforms (Linux, macOS, Windows) on the most common architectures (amd64 and arm64)..
All functionality should have tests to ensure expected functionality. Unit tests and gomock can be used to ensure test coverage.
Acceptance criteria
💡 Summary
We should look at converting this project from a bash script to a Go application.
Motivation and context
Writing the extension in Go would provide a number of benefits:
ghutility through the go-gh module.ghwill work with instead of agit pull.go test.Implementation notes
Since we archived our Go package skeleton we do not have a better skeleton to inherit from at present. As such we should probably organize the application as a basic command using multiple files. This will allow us to break up functionality as needed without adding needless complexity through internal packages to import.
We should target the latest two releases per the Go Release Policy and make sure we can build binaries for all major platforms (Linux, macOS, Windows) on the most common architectures (amd64 and arm64)..
All functionality should have tests to ensure expected functionality. Unit tests and gomock can be used to ensure test coverage.
Acceptance criteria
./gh-skeleton) has been converted to a Go application that successfully builds for all major platforms (Linux, macOS, Windows).