Documentation ¶
Index ¶
- Constants
- func AddAuthHeaders(headers map[string]string, artifactoryDetails auth.ServiceDetails)
- func AddChecksumHeaders(headers map[string]string, fileDetails *fileutils.FileDetails)
- func AddHeader(headerName, headerValue string, headers *map[string]string)
- func BuildArtifactoryUrl(baseUrl, path string, params map[string]string) (string, error)
- func BuildQueryFromSpecFile(specFile *ArtifactoryCommonParams, requiredArtifactProps RequiredArtifactProps) string
- func CreateAqlBodyForSpecWithPattern(params *ArtifactoryCommonParams) (string, error)
- func CreateAqlQueryForNpm(npmName, npmVersion string) string
- func CreateAqlQueryForPypi(repo, file string) string
- func DisableAccelBuffering(headers *map[string]string)
- func ExecAql(aqlQuery string, flags CommonConf) (io.ReadCloser, error)
- func ExecAqlSaveToFile(aqlQuery string, flags CommonConf) (*content.ContentReader, error)
- func FilterBottomChainResults(reader *content.ContentReader) (*content.ContentReader, error)
- func FilterCandidateToBeDeleted(deleteCandidates *content.ContentReader, resultWriter *content.ContentWriter) ([]*content.ContentReader, error)
- func FilterResultsByBuild(specFile *ArtifactoryCommonParams, flags CommonConf, ...) (*content.ContentReader, error)
- func FilterTopChainResults(reader *content.ContentReader) (*content.ContentReader, error)
- func GetBuildNameAndNumberFromArtifactory(buildName, buildNumber string, flags CommonConf) (string, string, error)
- func IsSubPath(paths []string, index int, separator string) bool
- func IsWildcardPattern(pattern string) bool
- func LogSearchResults(numOfArtifacts int)
- func MergeSortedFiles(sortedFiles []*content.ContentReader, ascendingOrder bool) (*content.ContentReader, error)
- func ReduceBottomChainDirResult(searchResults *content.ContentReader) (*content.ContentReader, error)
- func ReduceDirResult(searchResults *content.ContentReader, ascendingOrder bool, ...) (*content.ContentReader, error)
- func ReduceTopChainDirResult(searchResults *content.ContentReader) (*content.ContentReader, error)
- func SearchBySpecWithAql(specFile *ArtifactoryCommonParams, flags CommonConf, ...) (*content.ContentReader, error)
- func SearchBySpecWithBuild(specFile *ArtifactoryCommonParams, flags CommonConf) (*content.ContentReader, error)
- func SearchBySpecWithPattern(specFile *ArtifactoryCommonParams, flags CommonConf, ...) (*content.ContentReader, error)
- func SetContentType(contentType string, headers *map[string]string)
- func SortAndSaveBufferToFile(paths map[string]ResultItem, pathsKeys []string, increasingOrder bool) (*content.ContentReader, error)
- func SumIntArray(arr []int) int
- func UploadFile(localPath, url, logMsgPrefix string, artifactoryDetails *auth.ServiceDetails, ...) (*http.Response, []byte, error)
- func WildcardToDirsPath(deletePattern, searchResult string) (string, error)
- func WriteCandidateDirsToBeDeleted(candidateDirsReaders []*content.ContentReader, ...) (err error)
- type Aql
- type AqlSearchResult
- type AqlSearchResultItemFilter
- type ArtifactoryCommonParams
- func (params *ArtifactoryCommonParams) GetAql() Aql
- func (params ArtifactoryCommonParams) GetArchiveEntries() string
- func (params *ArtifactoryCommonParams) GetBuild() string
- func (params *ArtifactoryCommonParams) GetBundle() string
- func (params *ArtifactoryCommonParams) GetExcludePatterns() []string
- func (params *ArtifactoryCommonParams) GetExcludeProps() string
- func (params *ArtifactoryCommonParams) GetExclusions() []string
- func (params *ArtifactoryCommonParams) GetLimit() int
- func (params *ArtifactoryCommonParams) GetOffset() int
- func (params *ArtifactoryCommonParams) GetPattern() string
- func (params *ArtifactoryCommonParams) GetProps() string
- func (params *ArtifactoryCommonParams) GetSortBy() []string
- func (params *ArtifactoryCommonParams) GetSortOrder() string
- func (params ArtifactoryCommonParams) GetSpecType() (specType SpecType)
- func (params *ArtifactoryCommonParams) GetTarget() string
- func (params *ArtifactoryCommonParams) IsExplode() bool
- func (params ArtifactoryCommonParams) IsIncludeDirs() bool
- func (params *ArtifactoryCommonParams) IsRecursive() bool
- func (params *ArtifactoryCommonParams) IsRegexp() bool
- func (params *ArtifactoryCommonParams) SetArchiveEntries(archiveEntries string)
- func (params *ArtifactoryCommonParams) SetExcludeProps(excludeProps string)
- func (params *ArtifactoryCommonParams) SetPattern(pattern string)
- func (params *ArtifactoryCommonParams) SetProps(props string)
- func (params *ArtifactoryCommonParams) SetTarget(target string)
- type CommonConf
- type CommonConfImpl
- type FileGetter
- type FileHashes
- type FileInfo
- type Properties
- type Property
- type PropertyParseOptions
- type ReplicationBody
- type ReplicationParams
- type RepoPathFile
- type RequiredArtifactProps
- type Result
- type ResultItem
- type SpecType
- type UploadResult
Constants ¶
const ( ARTIFACTORY_SYMLINK = "symlink.dest" SYMLINK_SHA1 = "symlink.destsha1" Latest = "LATEST" LastRelease = "LAST_RELEASE" )
Variables ¶
This section is empty.
Functions ¶
func AddAuthHeaders ¶
func AddAuthHeaders(headers map[string]string, artifactoryDetails auth.ServiceDetails)
func AddChecksumHeaders ¶
func AddChecksumHeaders(headers map[string]string, fileDetails *fileutils.FileDetails)
func BuildArtifactoryUrl ¶
func BuildQueryFromSpecFile ¶
func BuildQueryFromSpecFile(specFile *ArtifactoryCommonParams, requiredArtifactProps RequiredArtifactProps) string
Creates an aql query from a spec file.
func CreateAqlBodyForSpecWithPattern ¶
func CreateAqlBodyForSpecWithPattern(params *ArtifactoryCommonParams) (string, error)
Returns an AQL body string to search file in Artifactory by pattern, according the the specified arguments requirements.
func CreateAqlQueryForNpm ¶
noinspection GoUnusedExportedFunction
func CreateAqlQueryForPypi ¶
func DisableAccelBuffering ¶
func ExecAql ¶
func ExecAql(aqlQuery string, flags CommonConf) (io.ReadCloser, error)
func ExecAqlSaveToFile ¶
func ExecAqlSaveToFile(aqlQuery string, flags CommonConf) (*content.ContentReader, error)
func FilterBottomChainResults ¶
func FilterBottomChainResults(reader *content.ContentReader) (*content.ContentReader, error)
func FilterCandidateToBeDeleted ¶
func FilterCandidateToBeDeleted(deleteCandidates *content.ContentReader, resultWriter *content.ContentWriter) ([]*content.ContentReader, error)
func FilterResultsByBuild ¶
func FilterResultsByBuild(specFile *ArtifactoryCommonParams, flags CommonConf, requiredArtifactProps RequiredArtifactProps, reader *content.ContentReader) (*content.ContentReader, error)
Filter the results by build, if no build found or items to filter, nil will be returned.
func FilterTopChainResults ¶
func FilterTopChainResults(reader *content.ContentReader) (*content.ContentReader, error)
Reduce the amount of items by saveing only the shortest item path for each unique path e.g.: a | a/b | c | e/f -> a | c | e/f
func GetBuildNameAndNumberFromArtifactory ¶
func GetBuildNameAndNumberFromArtifactory(buildName, buildNumber string, flags CommonConf) (string, string, error)
func IsSubPath ¶
paths - Sorted array. index - Index of the current path which we want to check if it a prefix of any of the other previous paths. separator - File separator. Returns true paths[index] is a prefix of any of the paths[i] where i<index, otherwise returns false.
func IsWildcardPattern ¶
func LogSearchResults ¶
func LogSearchResults(numOfArtifacts int)
func MergeSortedFiles ¶
func MergeSortedFiles(sortedFiles []*content.ContentReader, ascendingOrder bool) (*content.ContentReader, error)
Merge all the sorted files into a single sorted file.
func ReduceBottomChainDirResult ¶
func ReduceBottomChainDirResult(searchResults *content.ContentReader) (*content.ContentReader, error)
func ReduceDirResult ¶
func ReduceDirResult(searchResults *content.ContentReader, ascendingOrder bool, resultsFilter AqlSearchResultItemFilter) (*content.ContentReader, error)
Reduce Dir results by using the resultsFilter
func ReduceTopChainDirResult ¶
func ReduceTopChainDirResult(searchResults *content.ContentReader) (*content.ContentReader, error)
func SearchBySpecWithAql ¶
func SearchBySpecWithAql(specFile *ArtifactoryCommonParams, flags CommonConf, requiredArtifactProps RequiredArtifactProps) (*content.ContentReader, error)
Use this function when running Aql with pattern
func SearchBySpecWithBuild ¶
func SearchBySpecWithBuild(specFile *ArtifactoryCommonParams, flags CommonConf) (*content.ContentReader, error)
Use this function when searching by build without pattern or aql. Search with builds returns many results, some are not part of the build and others may be duplicated of the same artifact.
- Save SHA1 values received for build-name.
- Remove artifacts that not are present on the sha1 list
- If we have more than one artifact with the same sha1: 3.1 Compare the build-name & build-number among all the artifact with the same sha1.
This will prevent unnecessary search upon all Artifactory:
func SearchBySpecWithPattern ¶
func SearchBySpecWithPattern(specFile *ArtifactoryCommonParams, flags CommonConf, requiredArtifactProps RequiredArtifactProps) (*content.ContentReader, error)
Perform search by pattern.
func SetContentType ¶
func SortAndSaveBufferToFile ¶
func SortAndSaveBufferToFile(paths map[string]ResultItem, pathsKeys []string, increasingOrder bool) (*content.ContentReader, error)
func SumIntArray ¶
func UploadFile ¶
func UploadFile(localPath, url, logMsgPrefix string, artifactoryDetails *auth.ServiceDetails, details *fileutils.FileDetails, httpClientsDetails httputils.HttpClientDetails, client *rthttpclient.ArtifactoryHttpClient, retries int, progress clientio.Progress) (*http.Response, []byte, error)
func WildcardToDirsPath ¶
func WriteCandidateDirsToBeDeleted ¶
func WriteCandidateDirsToBeDeleted(candidateDirsReaders []*content.ContentReader, filesNotToBeDeleteReader *content.ContentReader, resultWriter *content.ContentWriter) (err error)
Write all the dirs to be deleted into 'resultWriter'. However, skip dirs with files(s) that should not be deleted. In order to accomplish this, we check if the dirs are a prefix of any artifact, witch means the folder contains the artifact and should not be deleted. Optimization: In order not to scan for each dir the entire artifact reader and see if it is a prefix or not, we rely on the fact that the dirs and artifacts are sorted. We have two sorted readers in ascending order, we will start scanning from the beginning of the lists and compare whether the folder is a prefix of the current artifact, in case this is true the dir should not be deleted and we can move on to the next dir, otherwise we have to continue to the next dir or artifact. To know this, we will choose to move on with the lexicographic largest between the two.
candidateDirsReaders - Sorted list of dirs to be deleted. filesNotToBeDeleteReader - Sorted files that should not be deleted. resultWriter - The filtered list of dirs to be deleted.
Types ¶
type AqlSearchResult ¶
type AqlSearchResult struct {
Results []ResultItem
}
type AqlSearchResultItemFilter ¶
type AqlSearchResultItemFilter func(*content.ContentReader) (*content.ContentReader, error)
type ArtifactoryCommonParams ¶
type ArtifactoryCommonParams struct { Aql Aql Pattern string // Deprecated, use Exclusions instead ExcludePatterns []string Exclusions []string Target string Props string ExcludeProps string SortOrder string SortBy []string Offset int Limit int Build string Bundle string Recursive bool IncludeDirs bool Regexp bool ArchiveEntries string }
func (*ArtifactoryCommonParams) GetAql ¶
func (params *ArtifactoryCommonParams) GetAql() Aql
func (ArtifactoryCommonParams) GetArchiveEntries ¶
func (params ArtifactoryCommonParams) GetArchiveEntries() string
func (*ArtifactoryCommonParams) GetBuild ¶
func (params *ArtifactoryCommonParams) GetBuild() string
func (*ArtifactoryCommonParams) GetBundle ¶
func (params *ArtifactoryCommonParams) GetBundle() string
func (*ArtifactoryCommonParams) GetExcludePatterns ¶
func (params *ArtifactoryCommonParams) GetExcludePatterns() []string
func (*ArtifactoryCommonParams) GetExcludeProps ¶
func (params *ArtifactoryCommonParams) GetExcludeProps() string
func (*ArtifactoryCommonParams) GetExclusions ¶
func (params *ArtifactoryCommonParams) GetExclusions() []string
func (*ArtifactoryCommonParams) GetLimit ¶
func (params *ArtifactoryCommonParams) GetLimit() int
func (*ArtifactoryCommonParams) GetOffset ¶
func (params *ArtifactoryCommonParams) GetOffset() int
func (*ArtifactoryCommonParams) GetPattern ¶
func (params *ArtifactoryCommonParams) GetPattern() string
func (*ArtifactoryCommonParams) GetProps ¶
func (params *ArtifactoryCommonParams) GetProps() string
func (*ArtifactoryCommonParams) GetSortBy ¶
func (params *ArtifactoryCommonParams) GetSortBy() []string
func (*ArtifactoryCommonParams) GetSortOrder ¶
func (params *ArtifactoryCommonParams) GetSortOrder() string
func (ArtifactoryCommonParams) GetSpecType ¶
func (params ArtifactoryCommonParams) GetSpecType() (specType SpecType)
func (*ArtifactoryCommonParams) GetTarget ¶
func (params *ArtifactoryCommonParams) GetTarget() string
func (*ArtifactoryCommonParams) IsExplode ¶
func (params *ArtifactoryCommonParams) IsExplode() bool
func (ArtifactoryCommonParams) IsIncludeDirs ¶
func (params ArtifactoryCommonParams) IsIncludeDirs() bool
func (*ArtifactoryCommonParams) IsRecursive ¶
func (params *ArtifactoryCommonParams) IsRecursive() bool
func (*ArtifactoryCommonParams) IsRegexp ¶
func (params *ArtifactoryCommonParams) IsRegexp() bool
func (*ArtifactoryCommonParams) SetArchiveEntries ¶
func (params *ArtifactoryCommonParams) SetArchiveEntries(archiveEntries string)
func (*ArtifactoryCommonParams) SetExcludeProps ¶
func (params *ArtifactoryCommonParams) SetExcludeProps(excludeProps string)
func (*ArtifactoryCommonParams) SetPattern ¶
func (params *ArtifactoryCommonParams) SetPattern(pattern string)
func (*ArtifactoryCommonParams) SetProps ¶
func (params *ArtifactoryCommonParams) SetProps(props string)
func (*ArtifactoryCommonParams) SetTarget ¶
func (params *ArtifactoryCommonParams) SetTarget(target string)
type CommonConf ¶
type CommonConf interface { GetArtifactoryDetails() auth.ServiceDetails SetArtifactoryDetails(rt auth.ServiceDetails) GetJfrogHttpClient() (*rthttpclient.ArtifactoryHttpClient, error) IsDryRun() bool }
type CommonConfImpl ¶
type CommonConfImpl struct { DryRun bool // contains filtered or unexported fields }
func (*CommonConfImpl) GetArtifactoryDetails ¶
func (flags *CommonConfImpl) GetArtifactoryDetails() auth.ServiceDetails
func (*CommonConfImpl) GetJfrogHttpClient ¶
func (flags *CommonConfImpl) GetJfrogHttpClient() (*rthttpclient.ArtifactoryHttpClient, error)
func (*CommonConfImpl) IsDryRun ¶
func (flags *CommonConfImpl) IsDryRun() bool
func (*CommonConfImpl) SetArtifactoryDetails ¶
func (flags *CommonConfImpl) SetArtifactoryDetails(rt auth.ServiceDetails)
type FileGetter ¶
type FileGetter interface { GetAql() Aql GetPattern() string SetPattern(pattern string) GetExclusions() []string // Deprecated, Use Exclusions instead GetExcludePatterns() []string GetTarget() string SetTarget(target string) IsExplode() bool GetProps() string GetSortOrder() string GetSortBy() []string GetOffset() int GetLimit() int GetBuild() string GetBundle() string GetSpecType() (specType SpecType) IsRegexp() bool IsRecursive() bool IsIncludeDirs() bool GetArchiveEntries() string SetArchiveEntries(archiveEntries string) }
type FileHashes ¶
type FileInfo ¶
type FileInfo struct { *FileHashes LocalPath string `json:"localPath,omitempty"` ArtifactoryPath string `json:"artifactoryPath,omitempty"` InternalArtifactoryPath string `json:"internalArtifactoryPath,omitempty"` }
func FlattenFileInfoArray ¶
func (*FileInfo) ToBuildArtifacts ¶
type Properties ¶
type Properties struct {
Properties []Property
}
func ParseProperties ¶
func ParseProperties(propStr string, option PropertyParseOptions) (*Properties, error)
Parsing properties string to Properties struct.
func (*Properties) ToBuildPromoteMap ¶
func (props *Properties) ToBuildPromoteMap() map[string][]string
Convert properties from Slice to map that build promotion REST API requires
func (*Properties) ToEncodedString ¶
func (props *Properties) ToEncodedString() string
func (*Properties) ToHeadersMap ¶
func (props *Properties) ToHeadersMap() map[string]string
type PropertyParseOptions ¶
type PropertyParseOptions int
const ( // Parsing properties SplitCommas PropertyParseOptions = iota JoinCommas )
type ReplicationBody ¶
type ReplicationBody struct { Username string `json:"username"` Password string `json:"password"` URL string `json:"url"` CronExp string `json:"cronExp"` RepoKey string `json:"repoKey"` EnableEventReplication bool `json:"enableEventReplication"` SocketTimeoutMillis int `json:"socketTimeoutMillis"` Enabled bool `json:"enabled"` SyncDeletes bool `json:"syncDeletes"` SyncProperties bool `json:"syncProperties"` SyncStatistics bool `json:"syncStatistics"` PathPrefix string `json:"pathPrefix"` }
func CreateReplicationBody ¶
func CreateReplicationBody(params ReplicationParams) *ReplicationBody
type ReplicationParams ¶
type RepoPathFile ¶
type RepoPathFile struct {
// contains filtered or unexported fields
}
We need to translate the provided download pattern to an AQL query. In Artifactory, for each artifact the name and path of the artifact are saved separately. We therefore need to build an AQL query that covers all possible repositories, paths and names the provided pattern can include. For example, the pattern repo/a/* can include the two following file: repo/a/file1.tgz and also repo/a/b/file2.tgz To achieve that, this function parses the pattern by splitting it by its * characters. The end result is a list of RepoPathFile structs. Each struct represent a possible repository, path and file name triple to be included in AQL query with an "or" relationship.
type RequiredArtifactProps ¶
type RequiredArtifactProps int
const ( ALL RequiredArtifactProps = iota SYMLINK NONE )
This enum defines which properties are required in the result of the aql. For example, when performing a copy/move command - the props are not needed, so we set RequiredArtifactProps to NONE.
type ResultItem ¶
type ResultItem struct { Repo string `json:"repo,omitempty"` Path string `json:"path,omitempty"` Name string `json:"name,omitempty"` Actual_Md5 string `json:"actual_md5,omitempty"` Actual_Sha1 string `json:"actual_sha1,omitempty"` Size int64 `json:"size,omitempty"` Created string `json:"created,omitempty"` Modified string `json:"modified,omitempty"` Properties []Property `json:"properties,omitempty"` Type string `json:"type,omitempty"` }
func (ResultItem) GetItemRelativeLocation ¶
func (item ResultItem) GetItemRelativeLocation() string
Returns "item.Repo/item.Path/" lowercased.
func (ResultItem) GetItemRelativePath ¶
func (item ResultItem) GetItemRelativePath() string
func (*ResultItem) ToArtifact ¶
func (item *ResultItem) ToArtifact() buildinfo.Artifact
func (*ResultItem) ToDependency ¶
func (item *ResultItem) ToDependency() buildinfo.Dependency
type UploadResult ¶
func NewUploadResult ¶
func NewUploadResult(threads int) *UploadResult