1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-14 11:03:09 +02:00
sap-jenkins-library/pkg/versioning/versioning.go

55 lines
1.3 KiB
Go

package versioning
import (
"fmt"
"github.com/SAP/jenkins-library/pkg/maven"
)
// Artifact ...
type Artifact interface {
VersioningScheme() string
GetVersion() (string, error)
SetVersion(string) error
}
// Options ...
type Options struct {
ProjectSettingsFile string
GlobalSettingsFile string
M2Path string
}
type mvnRunner struct{}
func (m *mvnRunner) Execute(options *maven.ExecuteOptions, execRunner mavenExecRunner) (string, error) {
return maven.Execute(options, execRunner)
}
func (m *mvnRunner) Evaluate(pomFile, expression string, execRunner mavenExecRunner) (string, error) {
return maven.Evaluate(pomFile, expression, execRunner)
}
// GetArtifact ...
func GetArtifact(buildTool, buildDescriptorFilePath string, opts *Options, execRunner mavenExecRunner) (Artifact, error) {
var artifact Artifact
switch buildTool {
case "maven":
artifact = &Maven{
Runner: &mvnRunner{},
ExecRunner: execRunner,
PomPath: buildDescriptorFilePath,
ProjectSettingsFile: opts.ProjectSettingsFile,
GlobalSettingsFile: opts.GlobalSettingsFile,
M2Path: opts.M2Path,
}
case "npm":
artifact = &Npm{
PackageJSONPath: buildDescriptorFilePath,
}
default:
return artifact, fmt.Errorf("build tool '%v' not supported", buildTool)
}
return artifact, nil
}