mirror of
https://github.com/ivuorinen/gh-action-readme.git
synced 2026-03-21 14:03:26 +00:00
refactor: major codebase improvements and test framework overhaul
This commit represents a comprehensive refactoring of the codebase focused on improving code quality, testability, and maintainability. Key improvements: - Implement dependency injection and interface-based architecture - Add comprehensive test framework with fixtures and test suites - Fix all linting issues (errcheck, gosec, staticcheck, goconst, etc.) - Achieve full EditorConfig compliance across all files - Replace hardcoded test data with proper fixture files - Add configuration loader with hierarchical config support - Improve error handling with contextual information - Add progress indicators for better user feedback - Enhance Makefile with help system and improved editorconfig commands - Consolidate constants and remove deprecated code - Strengthen validation logic for GitHub Actions - Add focused consumer interfaces for better separation of concerns Testing improvements: - Add comprehensive integration tests - Implement test executor pattern for better test organization - Create extensive YAML fixture library for testing - Fix all failing tests and improve test coverage - Add validation test fixtures to avoid embedded YAML in Go files Build and tooling: - Update Makefile to show help by default - Fix editorconfig commands to use eclint properly - Add comprehensive help documentation to all make targets - Improve file selection patterns to avoid glob errors This refactoring maintains backward compatibility while significantly improving the internal architecture and developer experience.
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
"github.com/ivuorinen/gh-action-readme/internal/cache"
|
||||
"github.com/ivuorinen/gh-action-readme/internal/dependencies"
|
||||
"github.com/ivuorinen/gh-action-readme/internal/git"
|
||||
"github.com/ivuorinen/gh-action-readme/internal/validation"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -45,10 +46,6 @@ type TemplateData struct {
|
||||
Dependencies []dependencies.Dependency `json:"dependencies,omitempty"`
|
||||
}
|
||||
|
||||
// GitInfo contains Git repository information for templates.
|
||||
// Note: GitInfo struct removed - using git.RepoInfo instead to avoid duplication
|
||||
// Note: Dependency struct is now defined in internal/dependencies package
|
||||
|
||||
// templateFuncs returns a map of custom template functions.
|
||||
func templateFuncs() template.FuncMap {
|
||||
return template.FuncMap{
|
||||
@@ -115,19 +112,19 @@ func isValidOrgRepo(org, repo string) bool {
|
||||
// formatVersion ensures version has proper @ prefix.
|
||||
func formatVersion(version string) string {
|
||||
version = strings.TrimSpace(version)
|
||||
if version != "" && !strings.HasPrefix(version, "@") {
|
||||
return "@" + version
|
||||
}
|
||||
if version == "" {
|
||||
return "@v1"
|
||||
}
|
||||
if !strings.HasPrefix(version, "@") {
|
||||
return "@" + version
|
||||
}
|
||||
return version
|
||||
}
|
||||
|
||||
// buildUsesString constructs the uses string with optional action name.
|
||||
func buildUsesString(td *TemplateData, org, repo, version string) string {
|
||||
if td.Name != "" {
|
||||
actionName := strings.ToLower(strings.ReplaceAll(strings.TrimSpace(td.Name), " ", "-"))
|
||||
actionName := validation.SanitizeActionName(td.Name)
|
||||
if actionName != "" && actionName != repo {
|
||||
return fmt.Sprintf("%s/%s/%s%s", org, repo, actionName, version)
|
||||
}
|
||||
@@ -225,7 +222,7 @@ func RenderReadme(action any, opts TemplateOptions) (string, error) {
|
||||
return "", err
|
||||
}
|
||||
var tmpl *template.Template
|
||||
if opts.Format == "html" {
|
||||
if opts.Format == OutputFormatHTML {
|
||||
tmpl, err = template.New("readme").Funcs(templateFuncs()).Parse(string(tmplContent))
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
||||
Reference in New Issue
Block a user