Documentation
¶
Index ¶
- func IsNewer(v1, v2 string) bool
- type ActionReference
- type AuthTestCase
- type DefaultPRCreator
- type DefaultUpdateManager
- func (m *DefaultUpdateManager) ApplyUpdates(ctx context.Context, updates []*Update) error
- func (m *DefaultUpdateManager) CreateUpdate(ctx context.Context, file string, action ActionReference, latestVersion string, ...) (*Update, error)
- func (m *DefaultUpdateManager) PreserveComments(action ActionReference) []string
- type DefaultVersionChecker
- func (c *DefaultVersionChecker) GetCommitHash(ctx context.Context, action ActionReference, version string) (string, error)
- func (c *DefaultVersionChecker) GetLatestVersion(ctx context.Context, action ActionReference) (string, string, error)
- func (c *DefaultVersionChecker) IsUpdateAvailable(ctx context.Context, action ActionReference) (bool, string, string, error)
- type EndpointConfig
- type PRCreator
- type PRTestServerType
- type Scanner
- type SimpleTestCase
- type TestCaseRunner
- type Update
- type UpdateManager
- type VersionChecker
- type VersionServerConfig
- type VersionTestCase
- type VersionTestServerType
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ActionReference ¶
type ActionReference struct {
Owner string
Name string
Version string
CommitHash string
Path string
Line int
Comments []string
VersionComment string // Comment indicating version (e.g., "# v3")
OriginalVersion string // For tracking version history
}
ActionReference represents a GitHub Action reference in a workflow file
func CreateActionReference ¶ added in v1.20250601.1
func CreateActionReference(owner, name, version, commitHash string) ActionReference
Test data factories
func CreateActionWithHash ¶ added in v1.20250601.1
func CreateActionWithHash(version, commitHash string) ActionReference
func CreateSimpleAction ¶ added in v1.20250601.1
func CreateSimpleAction(version string) ActionReference
type AuthTestCase ¶ added in v1.20250601.1
AuthTestCase represents a test case for authentication tests
func GetAuthTestCases ¶ added in v1.20250601.1
func GetAuthTestCases() []AuthTestCase
type DefaultPRCreator ¶
type DefaultPRCreator struct {
// contains filtered or unexported fields
}
DefaultPRCreator implements the PRCreator interface
func NewPRCreator ¶
func NewPRCreator(token, owner, repo string) *DefaultPRCreator
NewPRCreator creates a new instance of DefaultPRCreator
func SetupPRTestServer ¶ added in v1.20250321.1
func SetupPRTestServer(t *testing.T, serverType PRTestServerType) (*httptest.Server, *DefaultPRCreator)
SetupPRTestServer creates a test server and PR creator for testing based on the provided type
func (*DefaultPRCreator) CreatePR ¶
func (c *DefaultPRCreator) CreatePR(ctx context.Context, updates []*Update) error
CreatePR creates a pull request with the given updates
func (*DefaultPRCreator) SetWorkflowsPath ¶ added in v1.20250303.1
func (c *DefaultPRCreator) SetWorkflowsPath(path string)
SetWorkflowsPath sets the path to workflow files
type DefaultUpdateManager ¶
type DefaultUpdateManager struct {
// contains filtered or unexported fields
}
DefaultUpdateManager implements the UpdateManager interface
func NewUpdateManager ¶
func NewUpdateManager(baseDir string) *DefaultUpdateManager
NewUpdateManager creates a new instance of DefaultUpdateManager
func (*DefaultUpdateManager) ApplyUpdates ¶
func (m *DefaultUpdateManager) ApplyUpdates(ctx context.Context, updates []*Update) error
ApplyUpdates applies the given updates to workflow files
func (*DefaultUpdateManager) CreateUpdate ¶
func (m *DefaultUpdateManager) CreateUpdate(ctx context.Context, file string, action ActionReference, latestVersion string, commitHash string) (*Update, error)
CreateUpdate creates an update for a given action and its latest version
func (*DefaultUpdateManager) PreserveComments ¶
func (m *DefaultUpdateManager) PreserveComments(action ActionReference) []string
PreserveComments preserves existing comments when updating an action
type DefaultVersionChecker ¶
type DefaultVersionChecker struct {
// contains filtered or unexported fields
}
DefaultVersionChecker implements the VersionChecker interface using GitHub API
func NewDefaultVersionChecker ¶
func NewDefaultVersionChecker(token string) *DefaultVersionChecker
NewDefaultVersionChecker creates a new DefaultVersionChecker instance
func SetupVersionTestServer ¶ added in v1.20250321.1
func SetupVersionTestServer(t *testing.T, serverType VersionTestServerType) (*httptest.Server, *DefaultVersionChecker)
SetupVersionTestServer creates a test server for version checker tests
func (*DefaultVersionChecker) GetCommitHash ¶
func (c *DefaultVersionChecker) GetCommitHash(ctx context.Context, action ActionReference, version string) (string, error)
GetCommitHash returns the commit hash for a specific version of an action
func (*DefaultVersionChecker) GetLatestVersion ¶
func (c *DefaultVersionChecker) GetLatestVersion(ctx context.Context, action ActionReference) (string, string, error)
GetLatestVersion returns the latest version and its commit hash for a given action
func (*DefaultVersionChecker) IsUpdateAvailable ¶
func (c *DefaultVersionChecker) IsUpdateAvailable(ctx context.Context, action ActionReference) (bool, string, string, error)
IsUpdateAvailable checks if a newer version is available
type EndpointConfig ¶ added in v1.20250321.1
EndpointConfig represents configuration for a specific endpoint
type PRCreator ¶
type PRCreator interface {
// CreatePR creates a pull request with the given updates
CreatePR(ctx context.Context, updates []*Update) error
}
PRCreator creates pull requests for GitHub Action updates
type PRTestServerType ¶ added in v1.20250321.1
type PRTestServerType string
PRTestServerType defines the type of test server to create
const ( // NormalServer represents a standard server with all endpoints working correctly NormalServer PRTestServerType = "normal" // ErrorServer represents a server with repo endpoint returning an error ErrorServer PRTestServerType = "error" // BranchErrorServer represents a server with branch creation returning an error BranchErrorServer PRTestServerType = "branch_error" // ContentsErrorServer represents a server with contents endpoint returning an error ContentsErrorServer PRTestServerType = "contents_error" // BlobErrorServer represents a server with blob creation returning an error BlobErrorServer PRTestServerType = "blob_error" // PRErrorServer represents a server with PR creation returning an error PRErrorServer PRTestServerType = "pr_error" )
type Scanner ¶
type Scanner struct {
// contains filtered or unexported fields
}
Scanner handles scanning and parsing of workflow files
func NewScanner ¶
NewScanner creates a new Scanner instance
func (*Scanner) ParseActionReferences ¶
func (s *Scanner) ParseActionReferences(path string) ([]ActionReference, error)
ParseActionReferences extracts action references from a workflow file
func (*Scanner) ScanWorkflows ¶
ScanWorkflows finds all GitHub Actions workflow files in the repository
type SimpleTestCase ¶ added in v1.20250601.1
SimpleTestCase represents a simple test case with name and expectation
func GetHexStringTestCases ¶ added in v1.20250601.1
func GetHexStringTestCases() []SimpleTestCase
Common test data generators
func GetVersionComparisonTestCases ¶ added in v1.20250601.1
func GetVersionComparisonTestCases() []SimpleTestCase
type TestCaseRunner ¶ added in v1.20250601.1
type TestCaseRunner struct {
// contains filtered or unexported fields
}
TestCaseRunner provides utilities for running version checker test cases
func NewTestCaseRunner ¶ added in v1.20250601.1
func NewTestCaseRunner(t *testing.T) *TestCaseRunner
NewTestCaseRunner creates a new test case runner
func (*TestCaseRunner) RunGetCommitHashTest ¶ added in v1.20250601.1
func (r *TestCaseRunner) RunGetCommitHashTest(name string, action ActionReference, version string, serverType VersionTestServerType, wantHash string, wantErr bool)
RunGetCommitHashTest runs a GetCommitHash test case with version parameter
func (*TestCaseRunner) RunGetLatestVersionTest ¶ added in v1.20250601.1
func (r *TestCaseRunner) RunGetLatestVersionTest(tc VersionTestCase)
RunGetLatestVersionTest runs a GetLatestVersion test case
func (*TestCaseRunner) RunIsUpdateAvailableTest ¶ added in v1.20250601.1
func (r *TestCaseRunner) RunIsUpdateAvailableTest(tc VersionTestCase)
RunIsUpdateAvailableTest runs an IsUpdateAvailable test case
type Update ¶
type Update struct {
Action ActionReference
OldVersion string
NewVersion string
OldHash string
NewHash string
FilePath string
LineNumber int
Description string
Comments []string // Preserved comments
VersionComment string // New version comment
OriginalVersion string // For tracking version history
}
Update represents a pending update for a GitHub Action
func CreateTestUpdate ¶ added in v1.20250321.1
CreateTestUpdate creates a test update object with the given parameters
func CreateTestUpdates ¶ added in v1.20250321.1
CreateTestUpdates creates a slice of test updates with the given parameters
type UpdateManager ¶
type UpdateManager interface {
// CreateUpdate creates an update for a given action and its latest version
// Now includes commit hash and preserves comments
CreateUpdate(ctx context.Context, file string, action ActionReference, latestVersion string, commitHash string) (*Update, error)
// ApplyUpdates applies the given updates to workflow files
// Now handles comment preservation and hash updates
ApplyUpdates(ctx context.Context, updates []*Update) error
// PreserveComments preserves existing comments when updating an action
PreserveComments(action ActionReference) []string
}
UpdateManager manages the process of updating GitHub Actions
type VersionChecker ¶
type VersionChecker interface {
// GetLatestVersion returns the latest version and its commit hash for a given action
GetLatestVersion(ctx context.Context, action ActionReference) (version string, hash string, err error)
// IsUpdateAvailable checks if a newer version is available
// Returns: available, new version, new hash, error
IsUpdateAvailable(ctx context.Context, action ActionReference) (bool, string, string, error)
// GetCommitHash returns the commit hash for a specific version of an action
GetCommitHash(ctx context.Context, action ActionReference, version string) (string, error)
}
VersionChecker checks for newer versions of GitHub Actions
type VersionServerConfig ¶ added in v1.20250321.1
type VersionServerConfig struct {
LatestRelease EndpointConfig
TagsList *EndpointConfig // Optional depending on server type
TagRef EndpointConfig
AnnotatedTag *EndpointConfig // Optional for annotated tags
}
VersionServerConfig represents configuration for all endpoints in a version test server
type VersionTestCase ¶ added in v1.20250321.1
type VersionTestCase struct {
Name string
Action ActionReference
ServerType VersionTestServerType
WantVersion string
WantHash string
WantAvailable bool
WantError bool
}
VersionTestCase represents a test case for version checker tests
type VersionTestServerType ¶ added in v1.20250321.1
type VersionTestServerType string
VersionTestServerType defines types of version checker test servers
const ( // NormalVersionServer is a server that returns valid version data NormalVersionServer VersionTestServerType = "normal" // EmptyReleaseServer returns no releases but valid tags EmptyReleaseServer VersionTestServerType = "empty_release" // ErrorReleaseServer returns errors for release endpoint ErrorReleaseServer VersionTestServerType = "error_release" // EmptyTagsServer returns no tags data EmptyTagsServer VersionTestServerType = "empty_tags" // ErrorTagsServer returns errors for tag endpoint ErrorTagsServer VersionTestServerType = "error_tags" // InvalidRefServer returns invalid ref data InvalidRefServer VersionTestServerType = "invalid_ref" // AnnotatedTagServer returns tag object for annotated tags AnnotatedTagServer VersionTestServerType = "annotated_tag" // MissingObjectServer returns ref without object MissingObjectServer VersionTestServerType = "missing_object" // MissingSHAServer returns object without SHA MissingSHAServer VersionTestServerType = "missing_sha" // AnnotatedTagErrorServer returns error for annotated tag requests AnnotatedTagErrorServer VersionTestServerType = "annotated_tag_error" // MissingTagObjectServer returns annotated tag without object MissingTagObjectServer VersionTestServerType = "missing_tag_object" )