puppetfile-resolver 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b48bbab8f4ae0293f8b353610886bac9a3090137ee5295fa065449e73221df3
4
- data.tar.gz: 4ef1ad2fbf98f3ff8dde92fd0804ee85710719af4b831f9d0b526cbb239a86cc
3
+ metadata.gz: 13421ecc14c66fd0cd147d6cfd5f20dc62c1ef3afb4e337582c95299ace22da5
4
+ data.tar.gz: 2c17b4f6b538189298a17baef3c9986104123026877c0181ffab7861c31d9656
5
5
  SHA512:
6
- metadata.gz: c0fe6ce12c9b33fbe2891ff202f4b902b4e5d463011455fc7844f4ebd4e9113967b52aa3ed646e5baf1aa746d66f9ef342d6c1b1705a24b2b4c7b9b29cc7f7cb
7
- data.tar.gz: 118a4bb16ddf286e930afc67545e57d40971b19a48cef02ab10b3586390df80f2bbe8cea3d19d9d5f7095cfbd1559f6e6e8fda13fd40b698b4eba41f0fb01361
6
+ metadata.gz: 14b4bf1ae349fa8387f7444f1de8080e3a9ad41944a108695cc559a6dbff783eb7a6dffaf4ebba2ba438ced4d9c397afd9ce0519f28b345043d1f6c2eb4ab719
7
+ data.tar.gz: 89f06203dc1bc4c0db58c43489cb73e5b6aca114c0e75218b217f2c35fd6ca9a942d38b9de047cb221d62c02e42374330f8f88eb43068fe407f64e634638476e
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Build Status](https://travis-ci.com/glennsarti/puppetfile-resolver.svg?branch=master)](https://travis-ci.com/glennsarti/puppetfile-resolver)
1
+ [![CI for Puppetfile Resolver](https://github.com/glennsarti/puppetfile-resolver/workflows/CI%20for%20Puppetfile%20Resolver/badge.svg)](https://github.com/glennsarti/puppetfile-resolver/actions?query=workflow%3A%22CI+for+Puppetfile+Resolver%22)
2
2
  [![Gem Version](https://img.shields.io/gem/v/puppetfile-resolver)](https://rubygems.org/gems/puppetfile-resolver)
3
3
 
4
4
  # Puppetfile Resolver
@@ -1,7 +1,7 @@
1
1
  ##
2
2
  ## Bundle of CA Root Certificates
3
3
  ##
4
- ## Certificate data from Mozilla as of: Wed Jul 22 03:12:14 2020 GMT
4
+ ## Certificate data from Mozilla as of: Tue Dec 8 04:12:05 2020 GMT
5
5
  ##
6
6
  ## This is a bundle of X.509 certificates of public Certificate Authorities
7
7
  ## (CA). These were automatically extracted from Mozilla's root certificates
@@ -14,7 +14,7 @@
14
14
  ## Just configure this file as the SSLCACertificateFile.
15
15
  ##
16
16
  ## Conversion done with mk-ca-bundle.pl version 1.28.
17
- ## SHA256: cc6408bd4be7fbfb8699bdb40ccb7f6de5780d681d87785ea362646e4dad5e8e
17
+ ## SHA256: d820b8696d8ffe42064a1384a56a8981cdc7e7e198036bbb5fa04a6c282dd9a2
18
18
  ##
19
19
 
20
20
 
@@ -448,36 +448,6 @@ KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
448
448
  QBFGmh95DmK/D5fs4C8fF5Q=
449
449
  -----END CERTIFICATE-----
450
450
 
451
- Taiwan GRCA
452
- ===========
453
- -----BEGIN CERTIFICATE-----
454
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2
472
- Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU
473
- 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
- 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
- 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
- 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
- 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
- +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
479
- -----END CERTIFICATE-----
480
-
481
451
  DigiCert Assured ID Root CA
482
452
  ===========================
483
453
  -----BEGIN CERTIFICATE-----
@@ -806,29 +776,6 @@ FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
806
776
  U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
807
777
  -----END CERTIFICATE-----
808
778
 
809
- OISTE WISeKey Global Root GA CA
810
- ===============================
811
- -----BEGIN CERTIFICATE-----
812
- MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
813
- BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
814
- A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
815
- bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
816
- VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
817
- IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
818
- IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
819
- Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
820
- Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
821
- d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
822
- /yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
823
- LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
824
- AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
825
- KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
826
- MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
827
- +vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
828
- hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
829
- okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
830
- -----END CERTIFICATE-----
831
-
832
779
  Certigna
833
780
  ========
834
781
  -----BEGIN CERTIFICATE-----
@@ -1709,30 +1656,6 @@ P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
1709
1656
  e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
1710
1657
  -----END CERTIFICATE-----
1711
1658
 
1712
- EE Certification Centre Root CA
1713
- ===============================
1714
- -----BEGIN CERTIFICATE-----
1715
- MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
1716
- EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
1717
- dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
1718
- MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
1719
- UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
1720
- ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
1721
- DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
1722
- TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
1723
- rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
1724
- 93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
1725
- P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
1726
- AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
1727
- MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
1728
- BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
1729
- xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
1730
- lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
1731
- uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
1732
- 3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
1733
- dcGWxZ0=
1734
- -----END CERTIFICATE-----
1735
-
1736
1659
  D-TRUST Root Class 3 CA 2 2009
1737
1660
  ==============================
1738
1661
  -----BEGIN CERTIFICATE-----
@@ -3445,3 +3368,68 @@ Sxfj03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZkPuXaTH4M
3445
3368
  NMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE1LlSVHJ7liXMvGnjSG4N
3446
3369
  0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MXQRBdJ3NghVdJIgc=
3447
3370
  -----END CERTIFICATE-----
3371
+
3372
+ Trustwave Global Certification Authority
3373
+ ========================================
3374
+ -----BEGIN CERTIFICATE-----
3375
+ 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
3401
+ 29FpHOTKyeC2nOnOcXHebD8WpHk=
3402
+ -----END CERTIFICATE-----
3403
+
3404
+ Trustwave Global ECC P256 Certification Authority
3405
+ =================================================
3406
+ -----BEGIN CERTIFICATE-----
3407
+ MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYDVQQGEwJVUzER
3408
+ MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI
3409
+ b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZp
3410
+ Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYD
3411
+ VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy
3412
+ dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1
3413
+ NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH77bOYj
3414
+ 43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoNFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqm
3415
+ P62jQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt
3416
+ 0UrrdaVKEJmzsaGLSvcwCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjz
3417
+ RM4q3wghDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7
3418
+ -----END CERTIFICATE-----
3419
+
3420
+ Trustwave Global ECC P384 Certification Authority
3421
+ =================================================
3422
+ -----BEGIN CERTIFICATE-----
3423
+ MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYDVQQGEwJVUzER
3424
+ MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI
3425
+ b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZp
3426
+ Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYD
3427
+ VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy
3428
+ dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4
3429
+ NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGvaDXU1CDFH
3430
+ Ba5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr
3431
+ /TklZvFe/oyujUF5nQlgziip04pt89ZF1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNV
3432
+ HQ8BAf8EBQMDBwYAMB0GA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNn
3433
+ ADBkAjA3AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsCMGcl
3434
+ CrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVuSw==
3435
+ -----END CERTIFICATE-----
@@ -5,27 +5,34 @@ require 'puppetfile-resolver/cache/base'
5
5
  require 'puppetfile-resolver/spec_searchers/forge'
6
6
  require 'puppetfile-resolver/spec_searchers/git'
7
7
  require 'puppetfile-resolver/spec_searchers/local'
8
+ require 'puppetfile-resolver/spec_searchers/configuration'
8
9
 
9
10
  module PuppetfileResolver
10
11
  class ResolutionProvider
11
12
  include Molinillo::SpecificationProvider
12
13
 
13
14
  # options
14
- # module_paths : Array of paths
15
- # strict_mode : [Boolean] Whether missing dependencies throw an error (default: false)
15
+ # module_paths : Array of paths (Deprecated)
16
+ # strict_mode : [Boolean] Whether missing dependencies throw an error (default: false)
17
+ # spec_searcher_configuration : PuppetfileResolver::SpecSearchers::Configuration
16
18
  def initialize(puppetfile_document, puppet_version, resolver_ui, options = {})
17
19
  require 'semantic_puppet'
18
20
 
19
21
  @puppetfile_document = puppetfile_document
20
22
  raise 'The UI object must be of type Molinillo::UI' if resolver_ui.nil? || !resolver_ui.is_a?(Molinillo::UI)
21
23
  @resolver_ui = resolver_ui
22
- # TODO: This default crap should move to the resolve class and we just validate (and raise) here
23
- @puppet_module_paths = options[:module_paths].nil? ? [] : options[:module_paths]
24
+ @spec_searcher_configuration = options[:spec_searcher_configuration] || PuppetfileResolver::SpecSearchers::Configuration.new
24
25
  @allow_missing_modules = options[:allow_missing_modules].nil? ? true : options[:allow_missing_modules] == true
25
26
  # There can be only one puppet specification in existance so we pre-load here.
26
27
  @puppet_specification = Models::PuppetSpecification.new(puppet_version)
27
28
  @module_info = {}
28
29
  @cache = options[:cache].nil? ? Cache::Base.new : options[:cache]
30
+
31
+ # Check for deprecated options
32
+ unless options[:module_paths].nil? # rubocop:disable Style/GuardClause
33
+ Warning.warn 'The use of the module_paths option has been deprecated'
34
+ @spec_searcher_configuration.local.puppet_module_paths = options[:module_paths]
35
+ end
29
36
  end
30
37
 
31
38
  # Search for the specifications that match the given dependency.
@@ -137,9 +144,9 @@ module PuppetfileResolver
137
144
  unless mod.nil?
138
145
  case mod.module_type
139
146
  when Puppetfile::FORGE_MODULE
140
- @module_info[dependency.name] = safe_spec_search(dependency) { SpecSearchers::Forge.find_all(dependency, @cache, @resolver_ui) }
147
+ @module_info[dependency.name] = safe_spec_search(dependency) { SpecSearchers::Forge.find_all(dependency, @cache, @resolver_ui, @spec_searcher_configuration.forge) }
141
148
  when Puppetfile::GIT_MODULE
142
- @module_info[dependency.name] = safe_spec_search(dependency) { SpecSearchers::Git.find_all(mod, dependency, @cache, @resolver_ui) }
149
+ @module_info[dependency.name] = safe_spec_search(dependency) { SpecSearchers::Git.find_all(mod, dependency, @cache, @resolver_ui, @spec_searcher_configuration.git) }
143
150
  else # rubocop:disable Style/EmptyElse
144
151
  # Errr.... Nothing
145
152
  end
@@ -147,13 +154,13 @@ module PuppetfileResolver
147
154
  return @module_info[dependency.name] unless @module_info[dependency.name].empty?
148
155
 
149
156
  # It's not in the Puppetfile, so perhaps it's in our modulepath?
150
- @module_info[dependency.name] = safe_spec_search(dependency) { SpecSearchers::Local.find_all(mod, @puppet_module_paths, dependency, @cache, @resolver_ui) }
157
+ @module_info[dependency.name] = safe_spec_search(dependency) { SpecSearchers::Local.find_all(mod, dependency, @cache, @resolver_ui, @spec_searcher_configuration.local) }
151
158
  return @module_info[dependency.name] unless @module_info[dependency.name].empty?
152
159
 
153
160
  # It's not in the Puppetfile and not on disk, so perhaps it's on the Forge?
154
161
  # The forge needs an owner and name to be able to resolve
155
162
  if dependency.name && dependency.owner # rubocop:disable Style/IfUnlessModifier
156
- @module_info[dependency.name] = safe_spec_search(dependency) { SpecSearchers::Forge.find_all(dependency, @cache, @resolver_ui) }
163
+ @module_info[dependency.name] = safe_spec_search(dependency) { SpecSearchers::Forge.find_all(dependency, @cache, @resolver_ui, @spec_searcher_configuration.forge) }
157
164
  end
158
165
 
159
166
  # If we can't find any specifications for the module and we're allowing missing modules
@@ -20,7 +20,8 @@ module PuppetfileResolver
20
20
 
21
21
  # options
22
22
  # :cache => Cache Object
23
- # :module_paths => Array[String]
23
+ # :module_paths => Array[String] (Deprecated)
24
+ # :spec_searcher_configuration => PuppetfileResolver::SpecSearchers::Configuration
24
25
  def resolve(options = {})
25
26
  if options[:ui]
26
27
  raise 'The UI object must be of type Molinillo::UI' unless options[:ui].is_a?(Molinillo::UI)
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'puppetfile-resolver/spec_searchers/forge_configuration'
4
+ require 'puppetfile-resolver/spec_searchers/git_configuration'
5
+ require 'puppetfile-resolver/spec_searchers/local_configuration'
6
+
7
+ module PuppetfileResolver
8
+ module SpecSearchers
9
+ class Configuration
10
+ attr_reader :local
11
+ attr_reader :forge
12
+ attr_reader :git
13
+
14
+ def initialize
15
+ @local = LocalConfiguration.new
16
+ @forge = ForgeConfiguration.new
17
+ @git = GitConfiguration.new
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'puppetfile-resolver/util'
3
4
  require 'puppetfile-resolver/spec_searchers/common'
5
+ require 'puppetfile-resolver/spec_searchers/forge_configuration'
4
6
  require 'uri'
5
7
  require 'net/http'
6
8
  require 'openssl'
@@ -9,9 +11,7 @@ require 'json'
9
11
  module PuppetfileResolver
10
12
  module SpecSearchers
11
13
  module Forge
12
- DEFAULT_FORGE_URI ||= 'https://forgeapi.puppet.com'
13
-
14
- def self.find_all(dependency, cache, resolver_ui)
14
+ def self.find_all(dependency, cache, resolver_ui, config)
15
15
  dep_id = ::PuppetfileResolver::SpecSearchers::Common.dependency_cache_id(self, dependency)
16
16
 
17
17
  # Has the information been cached?
@@ -19,7 +19,7 @@ module PuppetfileResolver
19
19
 
20
20
  result = []
21
21
  # Query the forge
22
- fetch_all_module_releases(dependency.owner, dependency.name, resolver_ui) do |partial_releases|
22
+ fetch_all_module_releases(dependency.owner, dependency.name, resolver_ui, config) do |partial_releases|
23
23
  partial_releases.each do |release|
24
24
  result << Models::ModuleSpecification.new(
25
25
  name: release['module']['name'],
@@ -35,38 +35,36 @@ module PuppetfileResolver
35
35
  result
36
36
  end
37
37
 
38
- def self.fetch_all_module_releases(owner, name, forge_api_url = DEFAULT_FORGE_URI, resolver_ui, &block)
38
+ def self.fetch_all_module_releases(owner, name, resolver_ui, config, &block)
39
39
  raise 'Requires a block to yield' unless block
40
- uri = ::URI.parse("#{forge_api_url}/v3/releases")
40
+ uri = ::URI.parse("#{config.forge_api}/v3/releases")
41
41
  params = { :module => "#{owner}-#{name}", :exclude_fields => 'readme changelog license reference tasks', :limit => 50 }
42
42
  uri.query = ::URI.encode_www_form(params)
43
43
 
44
44
  loops = 0
45
45
  loop do
46
46
  resolver_ui.debug { "Querying the forge for a module with #{uri}" }
47
-
48
- http_options = { :use_ssl => uri.class == URI::HTTPS }
49
- # Because on Windows Ruby doesn't use the Windows certificate store which has up-to date
50
- # CA certs, we can't depend on someone setting the environment variable correctly. So use our
51
- # static CA PEM file if SSL_CERT_FILE is not set.
52
- http_options[:ca_file] = PuppetfileResolver::Util.static_ca_cert_file if ENV['SSL_CERT_FILE'].nil?
53
-
47
+ err_msg = "Unable to find module #{owner}-#{name} on #{config.forge_api}"
48
+ err_msg += config.proxy ? " with proxy #{config.proxy}: " : ': '
54
49
  response = nil
55
- Net::HTTP.start(uri.host, uri.port, http_options) do |http|
56
- request = Net::HTTP::Get.new uri
57
- response = http.request request
50
+
51
+ begin
52
+ response = ::PuppetfileResolver::Util.net_http_get(uri, config.proxy)
53
+ rescue ::StandardError => e
54
+ raise err_msg + e.message
58
55
  end
59
- raise "Expected HTTP Code 200, but received #{response.code} for URI #{uri}: #{response.inspect}" unless response.code == '200'
56
+
57
+ raise err_msg + "Expected HTTP Code 200, but received #{response.code}" unless response.code == '200'
60
58
 
61
59
  reply = ::JSON.parse(response.body)
62
60
  yield reply['results']
63
61
 
64
62
  break if reply['pagination'].nil? || reply['pagination']['next'].nil?
65
- uri = ::URI.parse("#{forge_api_url}#{reply['pagination']['next']}")
63
+ uri = ::URI.parse("#{config.forge_api}#{reply['pagination']['next']}")
66
64
 
67
65
  # Circuit breaker in case the worst happens (max 1000 module releases)
68
66
  loops += 1
69
- raise "Too many Forge API requests #{loops * 50}" if loops > 20
67
+ raise err_msg + "Too many Forge API requests #{loops}" if loops > 20
70
68
  end
71
69
  end
72
70
  private_class_method :fetch_all_module_releases
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuppetfileResolver
4
+ module SpecSearchers
5
+ class ForgeConfiguration
6
+ DEFAULT_FORGE_URI ||= 'https://forgeapi.puppet.com'
7
+
8
+ def forge_api
9
+ @forge_api || DEFAULT_FORGE_URI
10
+ end
11
+
12
+ attr_writer :forge_api
13
+
14
+ attr_accessor :proxy
15
+ end
16
+ end
17
+ end
@@ -1,11 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'puppetfile-resolver/util'
3
4
  require 'puppetfile-resolver/spec_searchers/common'
5
+ require 'puppetfile-resolver/spec_searchers/git_configuration'
4
6
 
5
7
  module PuppetfileResolver
6
8
  module SpecSearchers
7
9
  module Git
8
- def self.find_all(puppetfile_module, dependency, cache, resolver_ui)
10
+ def self.find_all(puppetfile_module, dependency, cache, resolver_ui, config)
9
11
  dep_id = ::PuppetfileResolver::SpecSearchers::Common.dependency_cache_id(self, dependency)
10
12
  # Has the information been cached?
11
13
  return cache.load(dep_id) if cache.exist?(dep_id)
@@ -39,9 +41,19 @@ module PuppetfileResolver
39
41
  require 'net/http'
40
42
  require 'uri'
41
43
 
42
- resolver_ui.debug { "Querying the Github with #{metadata_url}" }
43
- response = Net::HTTP.get_response(URI.parse(metadata_url))
44
+ resolver_ui.debug { "Querying GitHub with #{metadata_url}" }
45
+ err_msg = "Unable to find module at #{puppetfile_module.remote}"
46
+ err_msg += config.proxy ? " with proxy #{config.proxy}: " : ': '
47
+ response = nil
48
+
49
+ begin
50
+ response = ::PuppetfileResolver::Util.net_http_get(metadata_url, config.proxy)
51
+ rescue ::StandardError => e
52
+ raise err_msg + e.message
53
+ end
54
+
44
55
  if response.code != '200'
56
+ resolver_ui.debug(err_msg + "Expected HTTP Code 200, but received #{response.code}")
45
57
  cache.save(dep_id, [])
46
58
  return []
47
59
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuppetfileResolver
4
+ module SpecSearchers
5
+ class GitConfiguration
6
+ attr_accessor :proxy
7
+ end
8
+ end
9
+ end
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'puppetfile-resolver/spec_searchers/common'
4
+ require 'puppetfile-resolver/spec_searchers/local_configuration'
4
5
 
5
6
  module PuppetfileResolver
6
7
  module SpecSearchers
7
8
  module Local
8
- def self.find_all(_puppetfile_module, puppet_module_paths, dependency, cache, resolver_ui)
9
+ def self.find_all(_puppetfile_module, dependency, cache, resolver_ui, config)
9
10
  dep_id = ::PuppetfileResolver::SpecSearchers::Common.dependency_cache_id(self, dependency)
10
11
  # Has the information been cached?
11
12
  return cache.load(dep_id) if cache.exist?(dep_id)
12
13
 
13
14
  result = []
14
15
  # Find the module in the modulepaths
15
- puppet_module_paths.each do |module_path|
16
+ config.puppet_module_paths.each do |module_path|
16
17
  next unless Dir.exist?(module_path)
17
18
  module_dir = File.expand_path(File.join(module_path, dependency.name))
18
19
  next unless Dir.exist?(module_dir)
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuppetfileResolver
4
+ module SpecSearchers
5
+ class LocalConfiguration
6
+ attr_accessor :puppet_module_paths
7
+
8
+ def initialize
9
+ @puppet_module_paths = []
10
+ end
11
+ end
12
+ end
13
+ end
@@ -19,5 +19,29 @@ module PuppetfileResolver
19
19
  def self.static_ca_cert_file
20
20
  @static_ca_cert_file ||= File.expand_path(File.join(__dir__, 'data', 'ruby_ca_certs.pem'))
21
21
  end
22
+
23
+ # Execute a HTTP/S GET query and return the response
24
+ # @param [String, URI] uri The URI to request
25
+ # @param [nil, String, URI] proxy The URI of the proxy server to use. Defaults to nil (No proxy server)
26
+ # @return [Net::HTTPResponse] the response of the request
27
+ def self.net_http_get(uri, proxy = nil)
28
+ uri = URI.parse(uri) unless uri.is_a?(URI)
29
+
30
+ http_options = { :use_ssl => uri.class == URI::HTTPS }
31
+ # Because on Windows Ruby doesn't use the Windows certificate store which has up-to date
32
+ # CA certs, we can't depend on someone setting the environment variable correctly. So use our
33
+ # static CA PEM file if SSL_CERT_FILE is not set.
34
+ http_options[:ca_file] = PuppetfileResolver::Util.static_ca_cert_file if ENV['SSL_CERT_FILE'].nil?
35
+
36
+ start_args = [uri.host, uri.port]
37
+
38
+ unless proxy.nil?
39
+ proxy = URI.parse(proxy) unless proxy.is_a?(URI)
40
+ start_args.concat([proxy.host, proxy.port, proxy.user, proxy.password])
41
+ end
42
+
43
+ Net::HTTP.start(*start_args, http_options) { |http| return http.request(Net::HTTP::Get.new(uri)) }
44
+ nil
45
+ end
22
46
  end
23
47
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PuppetfileResolver
4
- VERSION ||= '0.4.0'
4
+ VERSION ||= '0.5.0'
5
5
  end
@@ -18,6 +18,7 @@ class CommandLineParser
18
18
  cache_dir: nil,
19
19
  module_paths: [],
20
20
  path: nil,
21
+ proxy: nil,
21
22
  puppet_version: nil,
22
23
  strict: false
23
24
  }
@@ -41,6 +42,10 @@ class CommandLineParser
41
42
  args[:debug] = true
42
43
  end
43
44
 
45
+ opts.on('--proxy=PROXY_URL', 'HTTP/S Proxy server to use. For example http://localhost:8888') do |proxy|
46
+ args[:proxy] = proxy
47
+ end
48
+
44
49
  opts.on('-s', '--strict', 'Do not allow missing dependencies. Default false which marks dependencies as missing and does not raise an error.') do
45
50
  args[:strict] = true
46
51
  end
@@ -88,7 +93,15 @@ if options[:debug]
88
93
  else
89
94
  ui = nil
90
95
  end
91
- opts = { cache: cache, ui: ui, module_paths: options[:module_paths], allow_missing_modules: !options[:strict] }
96
+
97
+ config = PuppetfileResolver::SpecSearchers::Configuration.new
98
+ config.local.puppet_module_paths = options[:module_paths]
99
+ unless options[:proxy].nil?
100
+ config.git.proxy = options[:proxy]
101
+ config.forge.proxy = options[:proxy]
102
+ end
103
+
104
+ opts = { cache: cache, ui: ui, spec_searcher_configuration: config, allow_missing_modules: !options[:strict] }
92
105
 
93
106
  # Resolve
94
107
  result = resolver.resolve(opts)
@@ -0,0 +1 @@
1
+ This test fixture contains a valid module with classes, types and functions.
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "testfixture-test_module",
3
+ "version": "0.1.0",
4
+ "author": "testfixture",
5
+ "summary": "Skeleton module test fixture",
6
+ "license": "Apache-2.0",
7
+ "source": "http://localhost",
8
+ "dependencies": []
9
+ }
@@ -0,0 +1,9 @@
1
+ require 'webrick'
2
+ require 'webrick/httpproxy'
3
+
4
+ proxy = WEBrick::HTTPProxyServer.new Port: (ARGV[0].nil? ? 32768 : ARGV[0])
5
+
6
+ trap 'INT' do proxy.shutdown end
7
+ trap 'TERM' do proxy.shutdown end
8
+
9
+ proxy.start
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppetfile-resolver/resolver'
4
+ require 'puppetfile-resolver/puppetfile'
5
+
6
+
7
+ describe 'Depreaction Tests' do
8
+ context 'With module_paths option' do
9
+ it 'should resolve a complete Puppetfile' do
10
+
11
+ content = <<-PUPFILE
12
+ forge 'https://forge.puppet.com'
13
+
14
+ # Local module path module
15
+ mod 'testfixture/test_module', :latest
16
+ PUPFILE
17
+
18
+ puppetfile = ::PuppetfileResolver::Puppetfile::Parser::R10KEval.parse(content)
19
+ resolver = PuppetfileResolver::Resolver.new(puppetfile)
20
+
21
+ expect(Warning).to receive(:warn).with(/module_paths/).and_return(nil)
22
+
23
+ result = resolver.resolve({
24
+ allow_missing_modules: false,
25
+ module_paths: [File.join(FIXTURES_DIR, 'modulepath')]
26
+ })
27
+
28
+ expect(result.specifications).to include('test_module')
29
+ expect(result.specifications['test_module'].version.to_s).to eq('0.1.0')
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppetfile-resolver/resolver'
4
+ require 'puppetfile-resolver/puppetfile'
5
+
6
+
7
+ describe 'KitchenSink Tests' do
8
+ it 'should resolve a complete Puppetfile' do
9
+
10
+ content = <<-PUPFILE
11
+ forge 'https://forge.puppet.com'
12
+
13
+ mod 'powershell',
14
+ :git => 'https://github.com/puppetlabs/puppetlabs-powershell',
15
+ :tag => 'v4.0.0'
16
+
17
+ mod 'puppetlabs/stdlib', '6.3.0'
18
+
19
+ # Local module path module
20
+ mod 'testfixture/test_module', :latest
21
+
22
+ PUPFILE
23
+
24
+ puppetfile = ::PuppetfileResolver::Puppetfile::Parser::R10KEval.parse(content)
25
+
26
+ config = PuppetfileResolver::SpecSearchers::Configuration.new
27
+ config.local.puppet_module_paths = [File.join(FIXTURES_DIR, 'modulepath')]
28
+
29
+ resolver = PuppetfileResolver::Resolver.new(puppetfile)
30
+ result = resolver.resolve({
31
+ allow_missing_modules: false,
32
+ spec_searcher_configuration: config,
33
+ })
34
+
35
+ expect(result.specifications).to include('powershell')
36
+ expect(result.specifications['powershell'].version.to_s).to eq('4.0.0')
37
+
38
+ expect(result.specifications).to include('stdlib')
39
+ expect(result.specifications['stdlib'].version.to_s).to eq('6.3.0')
40
+
41
+ expect(result.specifications).to include('test_module')
42
+ expect(result.specifications['test_module'].version.to_s).to eq('0.1.0')
43
+ end
44
+ end
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+ require 'open3'
3
+ require 'puppetfile-resolver/resolver'
4
+ require 'puppetfile-resolver/puppetfile'
5
+
6
+ describe 'Proxy Tests' do
7
+ let(:content) do <<-PUPFILE
8
+ forge 'https://forge.puppet.com'
9
+
10
+ mod 'powershell',
11
+ :git => 'https://github.com/puppetlabs/puppetlabs-powershell',
12
+ :tag => 'v4.0.0'
13
+
14
+ mod 'puppetlabs/stdlib', '6.3.0'
15
+ PUPFILE
16
+ end
17
+ let(:puppetfile) { ::PuppetfileResolver::Puppetfile::Parser::R10KEval.parse(content) }
18
+ let(:resolver_config) do
19
+ PuppetfileResolver::SpecSearchers::Configuration.new.tap do |obj|
20
+ obj.git.proxy = 'http://localhost:32768'
21
+ obj.forge.proxy = 'http://localhost:32768'
22
+ end
23
+ end
24
+
25
+ context 'with an invalid proxy server' do
26
+ it 'should not resolve a complete Puppetfile' do
27
+ resolver = PuppetfileResolver::Resolver.new(puppetfile)
28
+ result = resolver.resolve({
29
+ allow_missing_modules: true,
30
+ spec_searcher_configuration: resolver_config,
31
+ })
32
+
33
+ expect(result.specifications).to include('powershell')
34
+ expect(result.specifications['powershell']).to be_a(PuppetfileResolver::Models::MissingModuleSpecification)
35
+
36
+ expect(result.specifications).to include('stdlib')
37
+ expect(result.specifications['stdlib']).to be_a(PuppetfileResolver::Models::MissingModuleSpecification)
38
+ end
39
+ end
40
+
41
+ context 'with a valid proxy server' do
42
+ def start_proxy_server(start_options = ['--timeout=5'])
43
+ cmd = "ruby \"#{File.join(FIXTURES_DIR, 'proxy.rb')}\" 32768"
44
+
45
+ stdin, stdout, stderr, wait_thr = Open3.popen3(cmd)
46
+ # Wait for the Proxy server to indicate it started
47
+ line = nil
48
+ begin
49
+ line = stderr.readline
50
+ end until line =~ /#start/
51
+ stdout.close
52
+ stdin.close
53
+ [wait_thr, stderr]
54
+ end
55
+
56
+ before(:each) do
57
+ @server_thr, @server_pipe = start_proxy_server
58
+ end
59
+
60
+ after(:each) do
61
+ begin
62
+ Process.kill("KILL", @server_thr[:pid])
63
+ Process.wait(@server_thr[:pid])
64
+ rescue
65
+ # The server process may not exist and checking in a cross platform way in ruby is difficult
66
+ # Instead just swallow any errors
67
+ end
68
+
69
+ begin
70
+ @server_pipe.close
71
+ rescue
72
+ # The server process may not exist and checking in a cross platform way in ruby is difficult
73
+ # Instead just swallow any errors
74
+ end
75
+ end
76
+
77
+ it 'should resolve a complete Puppetfile' do
78
+ resolver = PuppetfileResolver::Resolver.new(puppetfile)
79
+ result = resolver.resolve({
80
+ allow_missing_modules: false,
81
+ spec_searcher_configuration: resolver_config,
82
+ })
83
+
84
+ expect(result.specifications).to include('powershell')
85
+ expect(result.specifications['powershell'].version.to_s).to eq('4.0.0')
86
+
87
+ expect(result.specifications).to include('stdlib')
88
+ expect(result.specifications['stdlib'].version.to_s).to eq('6.3.0')
89
+ end
90
+ end
91
+ end
@@ -4,6 +4,8 @@ root = File.join(__dir__,'..',)
4
4
  # Add the language server into the load path
5
5
  $LOAD_PATH.unshift(File.join(root,'lib'))
6
6
 
7
+ FIXTURES_DIR = File.join(__dir__,'fixtures')
8
+
7
9
  # A cache which we can preload for the purposes of testing, mimicing
8
10
  # Local modules
9
11
  require 'puppetfile-resolver/cache/base'
@@ -7,7 +7,7 @@ describe PuppetfileResolver::Resolver do
7
7
  let(:puppet_version) { nil }
8
8
  let(:subject) { PuppetfileResolver::Resolver.new(puppetfile_document, puppet_version) }
9
9
  let(:cache) { MockLocalModuleCache.new }
10
- let(:default_resolve_options) { { cache: cache, module_paths: ['??does/not/exist'] } }
10
+ let(:default_resolve_options) { { cache: cache } }
11
11
  let(:resolve_options) { default_resolve_options }
12
12
 
13
13
  RSpec.shared_examples 'a resolver flag' do |flag|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppetfile-resolver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Glenn Sarti
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-09 00:00:00.000000000 Z
11
+ date: 2020-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: molinillo
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.0'
41
41
  description: Resolves the Puppet Modules in a Puppetfile with a full dependency graph,
42
- including Puppet version checkspec.
42
+ including Puppet version checks.
43
43
  email:
44
44
  - glennsarti@users.noreply.github.com
45
45
  executables: []
@@ -81,14 +81,24 @@ files:
81
81
  - lib/puppetfile-resolver/resolution_result.rb
82
82
  - lib/puppetfile-resolver/resolver.rb
83
83
  - lib/puppetfile-resolver/spec_searchers/common.rb
84
+ - lib/puppetfile-resolver/spec_searchers/configuration.rb
84
85
  - lib/puppetfile-resolver/spec_searchers/forge.rb
86
+ - lib/puppetfile-resolver/spec_searchers/forge_configuration.rb
85
87
  - lib/puppetfile-resolver/spec_searchers/git.rb
88
+ - lib/puppetfile-resolver/spec_searchers/git_configuration.rb
86
89
  - lib/puppetfile-resolver/spec_searchers/local.rb
90
+ - lib/puppetfile-resolver/spec_searchers/local_configuration.rb
87
91
  - lib/puppetfile-resolver/ui/debug_ui.rb
88
92
  - lib/puppetfile-resolver/ui/null_ui.rb
89
93
  - lib/puppetfile-resolver/util.rb
90
94
  - lib/puppetfile-resolver/version.rb
91
95
  - puppetfile-cli.rb
96
+ - spec/fixtures/modulepath/test_module/README.md
97
+ - spec/fixtures/modulepath/test_module/metadata.json
98
+ - spec/fixtures/proxy.rb
99
+ - spec/integration/deprecation_spec.rb
100
+ - spec/integration/kitchensink_spec.rb
101
+ - spec/integration/proxy_spec.rb
92
102
  - spec/spec_helper.rb
93
103
  - spec/unit/puppetfile-resolver/puppetfile/document_spec.rb
94
104
  - spec/unit/puppetfile-resolver/puppetfile/parser/r10k_eval_spec.rb
@@ -97,7 +107,7 @@ homepage: https://glennsarti.github.io/puppetfile-resolver/
97
107
  licenses:
98
108
  - Apache-2.0
99
109
  metadata: {}
100
- post_install_message:
110
+ post_install_message:
101
111
  rdoc_options: []
102
112
  require_paths:
103
113
  - lib
@@ -105,18 +115,24 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
115
  requirements:
106
116
  - - ">="
107
117
  - !ruby/object:Gem::Version
108
- version: 2.1.9
118
+ version: 2.5.3
109
119
  required_rubygems_version: !ruby/object:Gem::Requirement
110
120
  requirements:
111
121
  - - ">="
112
122
  - !ruby/object:Gem::Version
113
123
  version: '0'
114
124
  requirements: []
115
- rubygems_version: 3.1.2
116
- signing_key:
125
+ rubygems_version: 3.1.4
126
+ signing_key:
117
127
  specification_version: 4
118
128
  summary: Dependency resolver for Puppetfiles
119
129
  test_files:
130
+ - spec/fixtures/modulepath/test_module/metadata.json
131
+ - spec/fixtures/modulepath/test_module/README.md
132
+ - spec/fixtures/proxy.rb
133
+ - spec/integration/deprecation_spec.rb
134
+ - spec/integration/kitchensink_spec.rb
135
+ - spec/integration/proxy_spec.rb
120
136
  - spec/spec_helper.rb
121
137
  - spec/unit/puppetfile-resolver/puppetfile/document_spec.rb
122
138
  - spec/unit/puppetfile-resolver/puppetfile/parser/r10k_eval_spec.rb