@@ -22,14 +22,14 @@ const (
2222// - actionMode: The action mode (dev or release)
2323// - version: The version string to use for release mode
2424// - actionTag: Optional override tag/SHA (takes precedence over version when in release mode)
25- // - resolver: Optional ActionResolver for dynamic SHA resolution (can be nil for standalone use)
25+ // - resolver: Optional ActionSHAResolver for dynamic SHA resolution (can be nil for standalone use)
2626//
2727// Returns:
2828// - For dev mode: "./actions/setup" (local path)
2929// - For release mode with resolver: "github/gh-aw/actions/setup@<sha> # <version>" (SHA-pinned)
3030// - For release mode without resolver: "github/gh-aw/actions/setup@<version>" (tag-based, SHA resolved later)
3131// - Falls back to local path if version is invalid in release mode
32- func ResolveSetupActionReference (actionMode ActionMode , version string , actionTag string , resolver * ActionResolver ) string {
32+ func ResolveSetupActionReference (actionMode ActionMode , version string , actionTag string , resolver ActionSHAResolver ) string {
3333 localPath := "./actions/setup"
3434
3535 // Dev mode - return local path
@@ -55,26 +55,20 @@ func ResolveSetupActionReference(actionMode ActionMode, version string, actionTa
5555 }
5656
5757 // Construct the remote reference with tag: github/gh-aw/actions/setup@tag
58- remoteRef := fmt .Sprintf ("%s/%s@%s" , GitHubOrgRepo , actionPath , tag )
58+ actionRepo := fmt .Sprintf ("%s/%s" , GitHubOrgRepo , actionPath )
59+ remoteRef := fmt .Sprintf ("%s@%s" , actionRepo , tag )
5960
6061 // If a resolver is available, try to resolve the SHA
6162 if resolver != nil {
62- data := & WorkflowData {
63- ActionResolver : resolver ,
64- ActionPinWarnings : make (map [string ]bool ),
65- }
66- actionRepo := fmt .Sprintf ("%s/%s" , GitHubOrgRepo , actionPath )
67- pinnedRef , err := GetActionPinWithData (actionRepo , tag , data )
68- if err != nil {
69- // In strict mode, GetActionPinWithData returns an error
70- actionRefLog .Printf ("Failed to pin action %s@%s: %v" , actionRepo , tag , err )
71- return ""
72- }
73- if pinnedRef != "" {
74- // Successfully resolved to SHA
63+ sha , err := resolver .ResolveSHA (actionRepo , tag )
64+ if err == nil && sha != "" {
65+ pinnedRef := formatActionReference (actionRepo , sha , tag )
7566 actionRefLog .Printf ("Release mode: resolved %s to SHA-pinned reference: %s" , remoteRef , pinnedRef )
7667 return pinnedRef
7768 }
69+ if err != nil {
70+ actionRefLog .Printf ("Failed to resolve SHA for %s@%s: %v" , actionRepo , tag , err )
71+ }
7872 }
7973
8074 // If no resolver or SHA resolution failed, return tag-based reference
@@ -108,8 +102,8 @@ func (c *Compiler) resolveActionReference(localActionPath string, data *Workflow
108102 // For ./actions/setup, check for compiler-level actionTag override first
109103 if localActionPath == "./actions/setup" {
110104 // Use compiler actionTag if available, otherwise check features
111- var resolver * ActionResolver
112- if data != nil {
105+ var resolver ActionSHAResolver
106+ if data != nil && data . ActionResolver != nil {
113107 resolver = data .ActionResolver
114108 }
115109 if c .actionTag != "" {
0 commit comments