pkg/runner/git_step_resource.go (38 lines of code) (raw):

package runner import ( "context" "fmt" "gitlab.com/gitlab-org/step-runner/pkg/cache/git" "gitlab.com/gitlab-org/step-runner/pkg/internal/expression" ) // GitStepResource knows how to load a step from a Git repository type GitStepResource struct { fetcher *git.GitFetcher url string stepDir string version string filename string } func NewGitStepResource(fetcher *git.GitFetcher, url string, version string, stepDir string, filename string) *GitStepResource { return &GitStepResource{ fetcher: fetcher, url: url, version: version, stepDir: stepDir, filename: filename, } } func (sr *GitStepResource) Fetch(ctx context.Context, view *expression.InterpolationContext) (*SpecDefinition, error) { url, err := expression.ExpandString(view, sr.url) if err != nil { return nil, fmt.Errorf("fetching git step: interpolating url: %w", err) } dir, err := sr.fetcher.Get(ctx, url, sr.version) if err != nil { return nil, fmt.Errorf("fetching git step: %w", err) } specDef, err := NewFileSystemStepResource(dir, sr.stepDir, sr.filename).Fetch(ctx, nil) if err != nil { return nil, fmt.Errorf("fetching git step: %w", err) } return specDef, nil }