X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Farchive%2Flib%2Fpuppet%2Ffunctions%2Farchive%2Fparse_artifactory_url.rb;fp=3rdparty%2Fmodules%2Farchive%2Flib%2Fpuppet%2Ffunctions%2Farchive%2Fparse_artifactory_url.rb;h=ab21ad9f8a994c2b642bcccf22a575764cb4591d;hb=e107504bce7d9b21cc301124fc7c39fdb0762374;hp=0000000000000000000000000000000000000000;hpb=24caa46729f80fbba4be8b9b26ebcb3acc4cb0fb;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/archive/lib/puppet/functions/archive/parse_artifactory_url.rb b/3rdparty/modules/archive/lib/puppet/functions/archive/parse_artifactory_url.rb new file mode 100644 index 000000000..ab21ad9f8 --- /dev/null +++ b/3rdparty/modules/archive/lib/puppet/functions/archive/parse_artifactory_url.rb @@ -0,0 +1,30 @@ +# A function to parse an Artifactory maven 2 repository URL +Puppet::Functions.create_function(:'archive::parse_artifactory_url') do + dispatch :parse_artifactory_url do + param 'Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl]', :url + end + + def parse_artifactory_url(url) + # Regex is for the 'maven-2-default Repository Layout' + matchdata = url.match(%r{ + (?.*/artifactory) + / + (?[^/]+) + / + (?.+?) + / + (?[^/]+) + / + (?[^/]+?) + (?:-(?SNAPSHOT))? + / + \k-\k + (?:-(?SNAPSHOT|(?:(?:[0-9]{8}.[0-9]{6})-(?:[0-9]+))))? + (?:-(?[^/]+?))? + \. + (?(?:(?!\d))[^\-/]+|7z) + }x) + return nil unless matchdata + Hash[matchdata.names.zip(matchdata.captures)] + end +end