utils

package
v2.47.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 3, 2023 License: Apache-2.0 Imports: 47 Imported by: 21

Documentation

Index

Constants

View Source
const (
	HttpProxyEnvKey  = "HTTP_PROXY"
	HttpsProxyEnvKey = "HTTPS_PROXY"
	NoProxyEnvKey    = "NO_PROXY"
)
View Source
const (
	BuildInfoDetails          = "details"
	BuildTempPath             = "jfrog/builds/"
	ProjectConfigBuildNameKey = "name"
)
View Source
const (
	ProjectConfigResolverPrefix = "resolver"
	ProjectConfigDeployerPrefix = "deployer"
	ProjectConfigRepo           = "repo"
	ProjectConfigReleaseRepo    = "releaseRepo"
	ProjectConfigServerId       = "serverId"
)
View Source
const (
	// DefaultThreads is the default number of threads working while transferring Artifactory's data
	DefaultThreads = 8
	// Maximum working threads allowed to execute the AQL queries and upload chunks for build-info repositories
	MaxBuildInfoThreads = 8
	// Maximum working threads allowed to execute the AQL queries
	MaxChunkBuilderThreads = 16
)
View Source
const ArtifactPattern = "artifactPattern"
View Source
const BuildName = "build.name"

For key/value binding

View Source
const BuildNumber = "build.number"
View Source
const BuildProject = "build.project"
View Source
const BuildTimestamp = "build.timestamp"
View Source
const (
	ChecksumFileName = "checksum.sha2"
)
View Source
const ClassworldsConf = `` /* 166-byte string literal not displayed */
View Source
const DeployArtifacts = "artifacts"
View Source
const DeployableArtifacts = "deployable.artifacts.map"
View Source
const DeployerPrefix = "deployer."
View Source
const ExcludePatterns = "excludePatterns"
View Source
const FilterExcludedArtifactsFromBuild = "filterExcludedArtifactsFromBuild"
View Source
const ForkCount = "forkCount"
View Source
const GeneratedBuildInfo = "buildInfo.generated"
View Source
const Host = "host"
View Source
const IncludePatterns = "includePatterns"
View Source
const InsecureTls = "insecureTls"
View Source
const IvyDescriptor = "deployIvyDescriptors"
View Source
const IvyPattern = "ivyPattern"
View Source
const MavenDescriptor = "deployMavenDescriptors"
View Source
const NoProxy = "noProxy"
View Source
const Password = "password"
View Source
const Port = "port"
View Source
const PropertiesTempPath = "jfrog/properties/"

For path and temp files

View Source
const ReleaseRepo = "releaseRepo"
View Source
const Repo = "repo"
View Source
const ResolverPrefix = "resolver."
View Source
const ServerId = "serverId"
View Source
const SnapshotRepo = "snapshotRepo"
View Source
const Url = "url"
View Source
const Username = "username"

Variables

View Source
var ProjectTypes = []string{
	"go",
	"pip",
	"pipenv",
	"poetry",
	"npm",
	"yarn",
	"nuget",
	"maven",
	"gradle",
	"dotnet",
	"build",
	"terraform",
}
View Source
var RepoTypes = []string{
	"local",
	"remote",
	"virtual",
	"federated",
}

Functions

func AqlResultToSearchResult

func AqlResultToSearchResult(readers []*content.ContentReader) (contentReader *content.ContentReader, err error)

func ConfirmDelete

func ConfirmDelete(pathsToDeleteReader *content.ContentReader) (bool, error)

func ConvertIntToStorageSizeString added in v2.24.3

func ConvertIntToStorageSizeString(num int64) string

func CreateAccessServiceManager added in v2.2.0

func CreateAccessServiceManager(serviceDetails *config.ServerDetails, isDryRun bool) (*access.AccessServicesManager, error)

func CreateBuildInfoProps added in v2.9.0

func CreateBuildInfoProps(buildArtifactsDetailsFile string, config *viper.Viper, projectType ProjectType) (map[string]string, error)

func CreateBuildInfoService added in v2.5.0

func CreateBuildInfoService() *build.BuildInfoService

func CreateBuildProperties

func CreateBuildProperties(buildName, buildNumber, projectKey string) (string, error)

func CreateBuildPropsFromConfiguration added in v2.27.0

func CreateBuildPropsFromConfiguration(buildConfiguration *BuildConfiguration) (string, error)

func CreateDeleteServiceManager

func CreateDeleteServiceManager(artDetails *config.ServerDetails, threads, httpRetries, httpRetryWaitMilliSecs int, dryRun bool) (artifactory.ArtifactoryServicesManager, error)

func CreateDistributionServiceManager

func CreateDistributionServiceManager(serviceDetails *config.ServerDetails, isDryRun bool) (*distribution.DistributionServicesManager, error)

func CreateDownloadServiceManager

func CreateDownloadServiceManager(artDetails *config.ServerDetails, threads, httpRetries, httpRetryWaitMilliSecs int, dryRun bool, progressBar io.ProgressMgr) (artifactory.ArtifactoryServicesManager, error)

func CreateLifecycleServiceManager added in v2.37.0

func CreateLifecycleServiceManager(serviceDetails *config.ServerDetails, isDryRun bool) (*lifecycle.LifecycleServicesManager, error)

func CreateServiceManager

func CreateServiceManager(serverDetails *config.ServerDetails, httpRetries, httpRetryWaitMilliSecs int, isDryRun bool) (artifactory.ArtifactoryServicesManager, error)

func CreateServiceManagerWithContext added in v2.20.6

func CreateServiceManagerWithContext(context context.Context, serverDetails *config.ServerDetails, isDryRun bool, threads, httpRetries, httpRetryWaitMilliSecs int, timeout time.Duration) (artifactory.ArtifactoryServicesManager, error)

func CreateServiceManagerWithProgressBar

func CreateServiceManagerWithProgressBar(serverDetails *config.ServerDetails, threads, httpRetries, httpRetryWaitMilliSecs int, dryRun bool, progressBar ioUtils.ProgressMgr) (artifactory.ArtifactoryServicesManager, error)

func CreateServiceManagerWithThreads

func CreateServiceManagerWithThreads(serverDetails *config.ServerDetails, isDryRun bool, threads, httpRetries, httpRetryWaitMilliSecs int) (artifactory.ArtifactoryServicesManager, error)

Create a service manager with threads. If the value sent for httpRetries is negative, the default will be used.

func CreateUploadServiceManager

func CreateUploadServiceManager(serverDetails *config.ServerDetails, threads, httpRetries, httpRetryWaitMilliSecs int, dryRun bool, progressBar io.ProgressMgr) (artifactory.ArtifactoryServicesManager, error)

func DoWebLogin added in v2.38.0

func DoWebLogin(serverDetails *config.ServerDetails) (token auth.CommonTokenParams, err error)

func DownloadAnalyzerManagerIfNeeded added in v2.34.1

func DownloadAnalyzerManagerIfNeeded() error

Download the latest AnalyzerManager executable if not cached locally. By default, the zip is downloaded directly from jfrog releases.

func DownloadDependency added in v2.34.5

func DownloadDependency(artDetails *config.ServerDetails, downloadPath, targetPath string, shouldExplode bool) (err error)

Downloads the requested resource.

artDetails: The artifactory server details to download the resource from. downloadPath: Artifactory download path. targetPath: The local download path (without the file name).

func DownloadExtractor added in v2.29.8

func DownloadExtractor(targetPath, downloadPath string) error

Download the relevant build-info-extractor jar. By default, the jar is downloaded directly from jfrog releases.

targetPath: The local download path (without the file name). downloadPath: Artifactory download path.

func GetBuildDir

func GetBuildDir(buildName, buildNumber, projectKey string) (string, error)

func GetBuildScanError

func GetBuildScanError() error

func GetEncryptedPasswordFromArtifactory

func GetEncryptedPasswordFromArtifactory(artifactoryAuth auth.ServiceDetails, insecureTls bool) (string, error)

func GetExtractorsRemoteDetails

func GetExtractorsRemoteDetails(downloadPath string) (server *config.ServerDetails, remoteRepo string, err error)

GetExtractorsRemoteDetails retrieves the server details necessary to download the build-info extractors from a remote repository. downloadPath - specifies the path in the remote repository from which the extractors will be downloaded.

func GetFilesCountFromRepositorySummary added in v2.24.0

func GetFilesCountFromRepositorySummary(repoSummary *utils.RepositorySummary) (int64, error)

func GetFilteredBuildInfoRepositories added in v2.19.1

func GetFilteredBuildInfoRepositories(storageInfo *clientUtils.StorageInfo, includePatterns, excludePatterns []string) ([]string, error)

GetFilteredBuildInfoRepositories returns the names of all build-info repositories filtered by their names. storageInfo - storage info response from Artifactory includePatterns - patterns of repository names (can contain wildcards) to include in the results. A repository's name must match at least one of these patterns in order to be included in the results. If includePatterns' length is zero, all repositories are included. excludePatterns - patterns of repository names (can contain wildcards) to exclude from the results. A repository's name must NOT match any of these patterns in order to be included in the results.

func GetFilteredRepositoriesByName added in v2.19.1

func GetFilteredRepositoriesByName(servicesManager artifactory.ArtifactoryServicesManager, includePatterns, excludePatterns []string) ([]string, error)

GetFilteredRepositoriesByName returns the names of local, remote, virtual and federated repositories filtered by their names. includePatterns - patterns of repository names (can contain wildcards) to include in the results. A repository's name must match at least one of these patterns in order to be included in the results. If includePatterns' length is zero, all repositories are included. excludePatterns - patterns of repository names (can contain wildcards) to exclude from the results. A repository's name must NOT match any of these patterns in order to be included in the results.

func GetFilteredRepositoriesByNameAndType added in v2.19.1

func GetFilteredRepositoriesByNameAndType(servicesManager artifactory.ArtifactoryServicesManager, includePatterns, excludePatterns []string, repoType RepoType) ([]string, error)

GetFilteredRepositoriesByNameAndType returns the names of local, remote, virtual and federated repositories filtered by their names and type. includePatterns - patterns of repository names (can contain wildcards) to include in the results. A repository's name must match at least one of these patterns in order to be included in the results. If includePatterns' length is zero, all repositories are included. excludePatterns - patterns of repository names (can contain wildcards) to exclude from the results. A repository's name must NOT match any of these patterns in order to be included in the results. repoType - only repositories of this type will be returned.

func GetGeneratedBuildsInfo

func GetGeneratedBuildsInfo(buildName, buildNumber, projectKey string) ([]*buildInfo.BuildInfo, error)

func GetProjectConfFilePath

func GetProjectConfFilePath(projectType ProjectType) (confFilePath string, exists bool, err error)

If configuration file exists in the working dir or in one of its parent dirs return its path, otherwise return the global configuration file path

func GetProjectDir

func GetProjectDir(global bool) (string, error)

func GetRepoNameForDependenciesSearch

func GetRepoNameForDependenciesSearch(repoName string, serviceManager artifactory.ArtifactoryServicesManager) (string, error)

Since we can't search dependencies in a remote repository, we will turn the search to the repository's cache. Local/Virtual repository name will be returned as is.

func GetRepositories

func GetRepositories(artDetails *config.ServerDetails, repoTypes ...RepoType) ([]string, error)

GetRepositories returns the names of local, remote, virtual or federated repositories filtered by their type. artDetails - Artifactory server details repoTypes - Repository types to filter. If empty - return all repository types.

func GetSearchParams

func GetSearchParams(f *spec.File) (searchParams services.SearchParams, err error)

func GetServerDetails

func GetServerDetails(vConfig *viper.Viper) (*config.ServerDetails, error)

Returns the Artifactory details Checks first for the deployer information if exists and if not, checks for the resolver information.

func GetTestDataPath added in v2.10.0

func GetTestDataPath() (string, error)

func GetUsedSpaceInBytes added in v2.23.2

func GetUsedSpaceInBytes(repoSummary *utils.RepositorySummary) (int64, error)

func IsRemoteRepo

func IsRemoteRepo(repoName string, serviceManager artifactory.ArtifactoryServicesManager) (bool, error)

func PopulateBuildArtifactsAsPartials added in v2.27.0

func PopulateBuildArtifactsAsPartials(buildArtifacts []buildInfo.Artifact, buildConfiguration *BuildConfiguration, moduleType buildInfo.ModuleType) error

func PrepareBuildPrerequisites added in v2.12.3

func PrepareBuildPrerequisites(buildConfiguration *BuildConfiguration) (build *build.Build, err error)

func PrintSearchResults

func PrintSearchResults(reader *content.ContentReader) error

func ReadBuildInfoGeneralDetails

func ReadBuildInfoGeneralDetails(buildName, buildNumber, projectKey string) (*buildInfo.General, error)

func ReadConfigFile

func ReadConfigFile(configPath string, configType ConfigType) (config *viper.Viper, err error)

func ReadMavenConfig added in v2.20.4

func ReadMavenConfig(path string, mvnProps map[string]any) (config *viper.Viper, err error)

func ReadPartialBuildInfoFiles

func ReadPartialBuildInfoFiles(buildName, buildNumber, projectKey string) (buildInfo.Partials, error)

func RemoteUnmarshal

func RemoteUnmarshal(serviceManager artifactory.ArtifactoryServicesManager, remoteFileUrl string, loadTarget interface{}) (err error)

Download and unmarshal a file from artifactory.

func RemoveBuildDir

func RemoveBuildDir(buildName, buildNumber, projectKey string) error

func SaveBuildGeneralDetails

func SaveBuildGeneralDetails(buildName, buildNumber, projectKey string) error

func SaveBuildInfo

func SaveBuildInfo(buildName, buildNumber, projectKey string, buildInfo *buildInfo.BuildInfo) (err error)

func SavePartialBuildInfo

func SavePartialBuildInfo(buildName, buildNumber, projectKey string, populatePartialBuildInfoFunc populatePartialBuildInfo) error

func SaveTransferSettings added in v2.17.0

func SaveTransferSettings(settings *TransferSettings) (err error)

func SearchResultNoDate

func SearchResultNoDate(reader *content.ContentReader) (contentReader *content.ContentReader, err error)

func SetResolutionRepoIfExists added in v2.46.0

func SetResolutionRepoIfExists(params xrayutils.AuditParams, tech coreutils.Technology) (err error)

Verifies the existence of depsRepo. If it doesn't exist, it searches for a configuration file based on the technology type. If found, it assigns depsRepo in the AuditParams.

func ValidateRepoExists added in v2.9.0

func ValidateRepoExists(repoKey string, serviceDetails auth.ServiceDetails) error

Returns an error if the given repo doesn't exist.

Types

type BuildConfigMapping

type BuildConfigMapping map[ProjectType][]*map[string]string

type BuildConfiguration

type BuildConfiguration struct {
	// contains filtered or unexported fields
}

func ExtractBuildDetailsFromArgs

func ExtractBuildDetailsFromArgs(args []string) (cleanArgs []string, buildConfig *BuildConfiguration, err error)

func NewBuildConfiguration added in v2.7.0

func NewBuildConfiguration(buildName, buildNumber, module, project string) *BuildConfiguration

func (*BuildConfiguration) GetBuildName added in v2.7.0

func (bc *BuildConfiguration) GetBuildName() (string, error)

func (*BuildConfiguration) GetBuildNumber added in v2.7.0

func (bc *BuildConfiguration) GetBuildNumber() (string, error)

func (*BuildConfiguration) GetModule added in v2.7.0

func (bc *BuildConfiguration) GetModule() string

func (*BuildConfiguration) GetProject added in v2.7.0

func (bc *BuildConfiguration) GetProject() string

func (*BuildConfiguration) IsCollectBuildInfo added in v2.7.0

func (bc *BuildConfiguration) IsCollectBuildInfo() (bool, error)

func (*BuildConfiguration) IsLoadedFromConfigFile added in v2.7.0

func (bc *BuildConfiguration) IsLoadedFromConfigFile() bool

func (*BuildConfiguration) SetBuildName added in v2.7.0

func (bc *BuildConfiguration) SetBuildName(buildName string) *BuildConfiguration

func (*BuildConfiguration) SetBuildNumber added in v2.7.0

func (bc *BuildConfiguration) SetBuildNumber(buildNumber string) *BuildConfiguration

func (*BuildConfiguration) SetModule added in v2.7.0

func (bc *BuildConfiguration) SetModule(module string) *BuildConfiguration

func (*BuildConfiguration) SetProject added in v2.7.0

func (bc *BuildConfiguration) SetProject(project string) *BuildConfiguration

func (*BuildConfiguration) ValidateBuildAndModuleParams added in v2.7.0

func (bc *BuildConfiguration) ValidateBuildAndModuleParams() error

Validates: 1. If the build number exists, the build name also exists (and vice versa). 2. If the modules exist, the build name/number are also exist (and vice versa).

func (*BuildConfiguration) ValidateBuildParams added in v2.7.0

func (bc *BuildConfiguration) ValidateBuildParams() error

Validates that if the build number exists, the build name also exists (and vice versa).

type ConfigType

type ConfigType string
const (
	YAML       ConfigType = "yaml"
	PROPERTIES ConfigType = "properties"
)

type DownloadConfiguration

type DownloadConfiguration struct {
	Threads         int
	SplitCount      int
	MinSplitSize    int64
	Symlink         bool
	ValidateSymlink bool
	SkipChecksum    bool
}

type FileTree added in v2.17.0

type FileTree struct {
	// contains filtered or unexported fields
}

FileTree is a UI components that displays a file-system tree view in the terminal.

func NewFileTree added in v2.17.0

func NewFileTree() *FileTree

func (*FileTree) AddFile added in v2.17.0

func (ft *FileTree) AddFile(path string)

func (*FileTree) String added in v2.17.0

func (ft *FileTree) String() string

Returns a string representation of the tree. If the number of files exceeded the maximum, an empty string will be returned.

type IncludeExcludeFilter added in v2.28.0

type IncludeExcludeFilter struct {
	IncludePatterns []string
	ExcludePatterns []string
}

func (*IncludeExcludeFilter) ShouldIncludeItem added in v2.28.0

func (rf *IncludeExcludeFilter) ShouldIncludeItem(item string) (bool, error)

func (*IncludeExcludeFilter) ShouldIncludeRepository added in v2.28.0

func (rf *IncludeExcludeFilter) ShouldIncludeRepository(repoKey string) (bool, error)

type ProjectType

type ProjectType int
const (
	Go ProjectType = iota
	Pip
	Pipenv
	Poetry
	Npm
	Yarn
	Nuget
	Maven
	Gradle
	Dotnet
	Build
	Terraform
)

func (ProjectType) String

func (projectType ProjectType) String() string

type RepoType

type RepoType int
const (
	Local RepoType = iota
	Remote
	Virtual
	Federated
	Unknown
)

func RepoTypeFromString added in v2.29.8

func RepoTypeFromString(repoTypeStr string) RepoType

func (RepoType) String

func (repoType RepoType) String() string

type Repository

type Repository struct {
	Repo             string `yaml:"repo,omitempty"`
	ServerId         string `yaml:"serverId,omitempty"`
	SnapshotRepo     string `yaml:"snapshotRepo,omitempty"`
	ReleaseRepo      string `yaml:"releaseRepo,omitempty"`
	DeployMavenDesc  bool   `yaml:"deployMavenDescriptors,omitempty"`
	DeployIvyDesc    bool   `yaml:"deployIvyDescriptors,omitempty"`
	IvyPattern       string `yaml:"ivyPattern,omitempty"`
	ArtifactsPattern string `yaml:"artifactPattern,omitempty"`
	NugetV2          bool   `yaml:"nugetV2,omitempty"`
	IncludePatterns  string `yaml:"includePatterns,omitempty"`
	ExcludePatterns  string `yaml:"excludePatterns,omitempty"`
}

type RepositoryConfig

type RepositoryConfig struct {
	// contains filtered or unexported fields
}

func GetRepoConfigByPrefix

func GetRepoConfigByPrefix(configFilePath, prefix string, vConfig *viper.Viper) (repoConfig *RepositoryConfig, err error)

func GetResolutionOnlyConfiguration

func GetResolutionOnlyConfiguration(projectType ProjectType) (*RepositoryConfig, error)

func ReadResolutionOnlyConfiguration

func ReadResolutionOnlyConfiguration(confFilePath string) (*RepositoryConfig, error)

func (*RepositoryConfig) IsServerDetailsEmpty

func (repo *RepositoryConfig) IsServerDetailsEmpty() bool

func (*RepositoryConfig) ServerDetails

func (repo *RepositoryConfig) ServerDetails() (*config.ServerDetails, error)

func (*RepositoryConfig) SetServerDetails

func (repo *RepositoryConfig) SetServerDetails(rtDetails *config.ServerDetails) *RepositoryConfig

func (*RepositoryConfig) SetTargetRepo

func (repo *RepositoryConfig) SetTargetRepo(targetRepo string) *RepositoryConfig

func (*RepositoryConfig) TargetRepo

func (repo *RepositoryConfig) TargetRepo() string

type SearchResult

type SearchResult struct {
	Path         string              `json:"path,omitempty"`
	Type         string              `json:"type,omitempty"`
	Size         int64               `json:"size,omitempty"`
	Created      string              `json:"created,omitempty"`
	Modified     string              `json:"modified,omitempty"`
	Sha1         string              `json:"sha1,omitempty"`
	Sha256       string              `json:"sha256,omitempty"`
	Md5          string              `json:"md5,omitempty"`
	OriginalMd5  string              `json:"original_md5,omitempty"`
	ModifiedBy   string              `json:"modified_by,omitempty"`
	Updated      string              `json:"updated,omitempty"`
	CreatedBy    string              `json:"created_by,omitempty"`
	OriginalSha1 string              `json:"original_sha1,omitempty"`
	Depth        int                 `json:"depth,omitempty"`
	Props        map[string][]string `json:"props,omitempty"`
}

type StorageInfoManager added in v2.20.0

type StorageInfoManager struct {
	// contains filtered or unexported fields
}

func NewStorageInfoManager added in v2.20.0

func NewStorageInfoManager(ctx context.Context, serverDetails *config.ServerDetails) (*StorageInfoManager, error)

func (*StorageInfoManager) CalculateStorageInfo added in v2.20.0

func (sim *StorageInfoManager) CalculateStorageInfo() error

Start calculating storage info in Artifactory

func (*StorageInfoManager) GetRepoSummary added in v2.20.0

func (sim *StorageInfoManager) GetRepoSummary(repoKey string) (*utils.RepositorySummary, error)

Get repository summary from the storage info. This method must be called after CalculateStorageInfo. repoKey - The repository key

func (*StorageInfoManager) GetReposTotalSizeAndFiles added in v2.24.0

func (sim *StorageInfoManager) GetReposTotalSizeAndFiles(repoKeys ...string) (totalSize, totalFiles int64, err error)

GetReposTotalSizeAndFiles gets the total size (bytes) and files of all passed repositories. This method must be called after CalculateStorageInfo. The result of this function might not be accurate!

func (*StorageInfoManager) GetServiceId added in v2.21.0

func (sim *StorageInfoManager) GetServiceId() (string, error)

Get Service Id from Artifactory

func (*StorageInfoManager) GetServiceManager added in v2.21.0

func (*StorageInfoManager) GetStorageInfo added in v2.20.0

func (sim *StorageInfoManager) GetStorageInfo() (*utils.StorageInfo, error)

Get storage info from Artifactory

type TransferSettings added in v2.17.0

type TransferSettings struct {
	ThreadsNumber int `json:"threadsNumber,omitempty"`
}

func LoadTransferSettings added in v2.17.0

func LoadTransferSettings() (settings *TransferSettings, err error)

func (*TransferSettings) CalcNumberOfThreads added in v2.19.2

func (ts *TransferSettings) CalcNumberOfThreads(buildInfoRepo bool) (chunkBuilderThreads, chunkUploaderThreads int)

type UploadConfiguration

type UploadConfiguration struct {
	Deb                   string
	Threads               int
	MinChecksumDeploySize int64
	ExplodeArchive        bool
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL