1 # A function to parse an Artifactory maven 2 repository URL
2 Puppet::Functions.create_function(:'archive::parse_artifactory_url') do
3 dispatch :parse_artifactory_url do
4 param 'Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl]', :url
7 def parse_artifactory_url(url)
8 # Regex is for the 'maven-2-default Repository Layout'
9 matchdata = url.match(%r{
10 (?<base_url>.*/artifactory)
19 (?:-(?<folder_iteg_rev>SNAPSHOT))?
21 \k<module>-\k<base_rev>
22 (?:-(?<file_iteg_rev>SNAPSHOT|(?:(?:[0-9]{8}.[0-9]{6})-(?:[0-9]+))))?
23 (?:-(?<classifier>[^/]+?))?
25 (?<ext>(?:(?!\d))[^\-/]+|7z)
27 return nil unless matchdata
28 Hash[matchdata.names.zip(matchdata.captures)]