+++ /dev/null
-# define: archive::nexus
-# ======================
-#
-# archive wrapper for downloading files from Nexus using REST API. Nexus API:
-# https://repository.sonatype.org/nexus-restlet1x-plugin/default/docs/path__artifact_maven_content.html
-#
-# Parameters
-# ----------
-#
-# Examples
-# --------
-#
-# archive::nexus { '/tmp/jtstand-ui-0.98.jar':
-# url => 'https://oss.sonatype.org',
-# gav => 'org.codehaus.jtstand:jtstand-ui:0.98',
-# repository => 'codehaus-releases',
-# packaging => 'jar',
-# extract => false,
-# }
-#
-define archive::nexus (
- String $url,
- String $gav,
- String $repository,
- Enum['present', 'absent'] $ensure = present,
- Enum['none', 'md5', 'sha1', 'sha2','sha256', 'sha384', 'sha512'] $checksum_type = 'md5',
- Boolean $checksum_verify = true,
- String $packaging = 'jar',
- Boolean $use_nexus3_urls = false,
- Optional[String] $classifier = undef,
- Optional[String] $extension = undef,
- Optional[String] $username = undef,
- Optional[String] $password = undef,
- Optional[String] $user = undef,
- Optional[String] $owner = undef,
- Optional[String] $group = undef,
- Optional[String] $mode = undef,
- Optional[Boolean] $extract = undef,
- Optional[String] $extract_path = undef,
- Optional[String] $extract_flags = undef,
- Optional[String] $extract_command = undef,
- Optional[String] $creates = undef,
- Optional[Boolean] $cleanup = undef,
- Optional[String] $proxy_server = undef,
- Optional[String] $proxy_type = undef,
- Optional[Boolean] $allow_insecure = undef,
-) {
-
- include ::archive::params
-
- $artifact_info = split($gav, ':')
-
- $group_id = $artifact_info[0]
- $artifact_id = $artifact_info[1]
- $version = $artifact_info[2]
-
- $query_params = {
-
- 'g' => $group_id,
- 'a' => $artifact_id,
- 'v' => $version,
- 'r' => $repository,
- 'p' => $packaging,
- 'c' => $classifier,
- 'e' => $extension,
-
- }.filter |$keys, $values| { $values != undef }
-
- if $use_nexus3_urls {
- if $classifier {
- $c = "-${classifier}"
- } else {
- $c = ''
- }
- $artifact_url = sprintf('%s/repository/%s/%s/%s/%s/%s-%s%s.%s', $url,
- $repository, regsubst($group_id, '\.', '/', 'G'), $artifact_id,
- $version, $artifact_id, $version, $c, $packaging)
- $checksum_url = sprintf('%s.%s', $artifact_url, $checksum_type)
- } else {
- $artifact_url = assemble_nexus_url($url, $query_params)
- $checksum_url = regsubst($artifact_url, "p=${packaging}", "p=${packaging}.${checksum_type}")
- }
- archive { $name:
- ensure => $ensure,
- source => $artifact_url,
- username => $username,
- password => $password,
- checksum_url => $checksum_url,
- checksum_type => $checksum_type,
- checksum_verify => $checksum_verify,
- extract => $extract,
- extract_path => $extract_path,
- extract_flags => $extract_flags,
- extract_command => $extract_command,
- user => $user,
- group => $group,
- creates => $creates,
- cleanup => $cleanup,
- proxy_server => $proxy_server,
- proxy_type => $proxy_type,
- allow_insecure => $allow_insecure,
- }
-
- $file_owner = pick($owner, $archive::params::owner)
- $file_group = pick($group, $archive::params::group)
- $file_mode = pick($mode, $archive::params::mode)
-
- file { $name:
- owner => $file_owner,
- group => $file_group,
- mode => $file_mode,
- require => Archive[$name],
- }
-}