r10k 3.14.2 → 3.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docker.yml +5 -0
  3. data/.github/workflows/rspec_tests.yml +1 -0
  4. data/CHANGELOG.mkd +9 -0
  5. data/README.mkd +2 -2
  6. data/doc/dynamic-environments/configuration.mkd +13 -10
  7. data/doc/dynamic-environments/workflow-guide.mkd +3 -3
  8. data/doc/faq.mkd +1 -1
  9. data/docker/Makefile +17 -10
  10. data/integration/tests/git_source/HTTP_proxy_and_git_source.rb +1 -1
  11. data/integration/tests/git_source/git_source_repeated_remote.rb +2 -2
  12. data/integration/tests/purging/content_not_purged_at_root.rb +2 -2
  13. data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module.rb +1 -1
  14. data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module_static.rb +1 -1
  15. data/integration/tests/user_scenario/basic_workflow/multi_source_custom_forge_git_module.rb +1 -1
  16. data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module.rb +1 -1
  17. data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module_ref.rb +1 -1
  18. data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_git_module.rb +1 -1
  19. data/integration/tests/user_scenario/basic_workflow/single_env_switch_forge_git_module.rb +1 -1
  20. data/lib/r10k/environment/with_modules.rb +24 -1
  21. data/lib/r10k/git/rugged/thin_repository.rb +7 -0
  22. data/lib/r10k/git/rugged/working_repository.rb +7 -3
  23. data/lib/r10k/git/shellgit/thin_repository.rb +4 -0
  24. data/lib/r10k/git/shellgit/working_repository.rb +3 -2
  25. data/lib/r10k/git/stateful_repository.rb +4 -4
  26. data/lib/r10k/module/git.rb +1 -1
  27. data/lib/r10k/settings/container.rb +1 -0
  28. data/lib/r10k/version.rb +1 -1
  29. data/r10k.gemspec +4 -6
  30. data/spec/integration/git/stateful_repository_spec.rb +16 -0
  31. data/spec/unit/action/deploy/module_spec.rb +7 -7
  32. data/spec/unit/environment/git_spec.rb +2 -2
  33. data/spec/unit/environment/with_modules_spec.rb +47 -0
  34. data/spec/unit/git/alternates_spec.rb +28 -28
  35. data/spec/unit/git/cache_spec.rb +1 -1
  36. data/spec/unit/git/rugged/cache_spec.rb +2 -2
  37. data/spec/unit/git/shellgit/cache_spec.rb +1 -1
  38. data/spec/unit/git/stateful_repository_spec.rb +1 -1
  39. data/spec/unit/module/git_spec.rb +5 -5
  40. data/spec/unit/module_loader/puppetfile_spec.rb +1 -1
  41. data/spec/unit/util/cacheable_spec.rb +2 -2
  42. metadata +16 -11
  43. data/.travis.yml +0 -42
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d1dda7446b3f3ee95e7833edf157b7ef8632e0c1404bcfdd7c981078dd0ebf0
4
- data.tar.gz: fe4af9146645978078592086e1896fb1fc6a26082b86deef9072db6d45cb9d16
3
+ metadata.gz: c2085c3475000f081d4ff3ff19fd5f009080c9238c5e532449a24f306b2aa107
4
+ data.tar.gz: fb38a94d17d20cdd75aba6c5817cad33c77ed408307f32aa54bc4f65dabba022
5
5
  SHA512:
6
- metadata.gz: 84a6ab98f760f8de79be0ff4a1f6185c23431ccee3c1d481df7a91441130f225cc318744b2fb57e8b8504f27cb86694d6ecdda086e728c703ac8278cc5c8989b
7
- data.tar.gz: df7654c91652b281d87f9a8352a361466107c2e98cfabaddbeba1e9b75344523e0151f8353523d990ced52b8994d83a05556d1f9ecb41b8c49cb016d7bc3d166
6
+ metadata.gz: 6de1e925f24ec5edf168c5a4d177030be2d351493ab65274998bbd02b67fa84910d3a28d800bdd03d255e4fb0cceeac1b8d09a615cb181986ee22bd4e155e0fb
7
+ data.tar.gz: f4294cd171f9665c70d9573ad082003e5cd272aa42b2f949c41bc6874399c92010e1065140544770807444e8cf60b52d0733add89cfbd0b4839381c918932004
@@ -27,6 +27,11 @@ jobs:
27
27
  with:
28
28
  ruby-version: 2.6.x
29
29
  - run: gem install bundler
30
+ - uses: actions/checkout@v2
31
+ - name: Set up QEMU
32
+ uses: docker/setup-qemu-action@v1
33
+ - name: Set up Docker Buildx
34
+ uses: docker/setup-buildx-action@v1
30
35
  - name: Build container
31
36
  working-directory: docker
32
37
  run: |
@@ -15,6 +15,7 @@ jobs:
15
15
  - {os: ubuntu-18.04, ruby: 2.5}
16
16
  - {os: ubuntu-18.04, ruby: 2.6}
17
17
  - {os: ubuntu-18.04, ruby: 2.7}
18
+ - {os: ubuntu-18.04, ruby: 3.1}
18
19
  - {os: ubuntu-18.04, ruby: jruby-9.2.10.0}
19
20
  - {os: windows-2019, ruby: 2.5}
20
21
  - {os: windows-2019, ruby: 2.6}
data/CHANGELOG.mkd CHANGED
@@ -4,6 +4,15 @@ CHANGELOG
4
4
  Unreleased
5
5
  ----------
6
6
 
7
+ 3.15.0
8
+ ------
9
+
10
+ - Support and test Ruby 3
11
+ - Allow puppet_forge 3.x & newer versions of fast_gettext/gettext [#1302](https://github.com/puppetlabs/r10k/pull/1302)
12
+ - Allow newer cri versions [#1302](https://github.com/puppetlabs/r10k/pull/1302)
13
+ - Fix error when using install_path from environment module [#1288](https://github.com/puppetlabs/r10k/issues/1288)
14
+ - (RK-399) Do not warn about local modifications in the spec directory when `exclude_spec` is set [#1291](https://github.com/puppetlabs/r10k/pull/1291)
15
+
7
16
  3.14.2
8
17
  ------
9
18
 
data/README.mkd CHANGED
@@ -18,7 +18,7 @@ Requirements
18
18
  ------------
19
19
 
20
20
  R10k supports the Ruby versions `>= 2.4.0`. It's tested on Ruby 2.4.0 up to
21
- Ruby 2.7.0 + Jruby.
21
+ Ruby 3.1.0 + Jruby.
22
22
 
23
23
  R10k requires additional components, depending on how you plan on managing
24
24
  environments and modules.
@@ -61,7 +61,7 @@ for installation.
61
61
  If you have more specific needs or plan on modifying r10k you can run it out of
62
62
  a git repository using Bundler for dependencies:
63
63
 
64
- git clone git://github.com/puppetlabs/r10k
64
+ git clone https://github.com/puppetlabs/r10k
65
65
  cd r10k
66
66
  bundle install
67
67
  bundle exec r10k help
@@ -398,13 +398,16 @@ specific documentation for more information.
398
398
  The 'remote' setting specifies where the source repository should be fetched
399
399
  from. It may be any valid URL that the source may check out or clone. The remote
400
400
  must be able to be fetched without any interactive input, eg usernames or
401
- passwords cannot be prompted for in order to fetch the remote.
401
+ passwords cannot be prompted for in order to fetch the remote. We support the
402
+ `git`, `ssh`, and `https` transport protocols. An SSH private key or access
403
+ token must be provided for authentication. Only `https` may be used without
404
+ authentication. See [GitHub's blog on protocol security](https://github.blog/2021-09-01-improving-git-protocol-security-github/) for more info.
402
405
 
403
406
  ```yaml
404
407
  ---
405
408
  sources:
406
409
  mysource:
407
- remote: 'git://git-server.site/my-org/main-modules'
410
+ remote: 'https://git-server.site/my-org/main-modules'
408
411
  ```
409
412
 
410
413
  ### basedir
@@ -522,7 +525,7 @@ hiera data files are kept. In this case you will specify a single source:
522
525
  ---
523
526
  sources:
524
527
  operations:
525
- remote: 'git://git-server.site/my-org/org-modules'
528
+ remote: 'https://git-server.site/my-org/org-modules'
526
529
  basedir: '/etc/puppet/environments'
527
530
  ```
528
531
 
@@ -535,10 +538,10 @@ repository and your modules in another repository, you can specify two sources:
535
538
  ---
536
539
  sources:
537
540
  operations:
538
- remote: 'git://git-server.site/my-org/org-modules'
541
+ remote: 'https://git-server.site/my-org/org-modules'
539
542
  basedir: '/etc/puppet/environments'
540
543
  hiera:
541
- remote: 'git://git-server.site/my-org/org-hiera-data'
544
+ remote: 'https://git-server.site/my-org/org-hiera-data'
542
545
  basedir: '/etc/puppet/hiera-data'
543
546
  ```
544
547
 
@@ -553,15 +556,15 @@ not the modules of other groups.
553
556
  ---
554
557
  sources:
555
558
  main:
556
- remote: 'git://git-server.site/my-org/main-modules'
559
+ remote: 'https://git-server.site/my-org/main-modules'
557
560
  basedir: '/etc/puppet/environments'
558
561
  prefix: false # Prefix defaults to false so this is only here for clarity
559
562
  qa:
560
- remote: 'git://git-server.site/my-org/qa-puppet-modules'
563
+ remote: 'https://git-server.site/my-org/qa-puppet-modules'
561
564
  basedir: '/etc/puppet/environments'
562
565
  prefix: true
563
566
  dev:
564
- remote: 'git://git-server.site/my-org/dev-puppet-modules'
567
+ remote: 'https://git-server.site/my-org/dev-puppet-modules'
565
568
  basedir: '/etc/puppet/environments'
566
569
  prefix: true
567
570
  ```
@@ -587,11 +590,11 @@ must override the `prefix` so environment folders line up in both directories:
587
590
  ---
588
591
  sources:
589
592
  app1_data:
590
- remote: 'git://git-server.site/my-org/app1-hieradata'
593
+ remote: 'https://git-server.site/my-org/app1-hieradata'
591
594
  basedir: '/etc/puppet/hieradata'
592
595
  prefix: "app1"
593
596
  app1_modules:
594
- remote: 'git://git-server.site/my-org/app1-puppet-modules'
597
+ remote: 'https://git-server.site/my-org/app1-puppet-modules'
595
598
  basedir: '/etc/puppet/environments'
596
599
  prefix: "app1"
597
600
  ```
@@ -38,7 +38,7 @@ mod "puppetlabs/ntp"
38
38
 
39
39
  # Your modules:
40
40
  mod "custom_facts",
41
- :git => "git://github.com/user/custom_facts"
41
+ :git => "https://github.com/user/custom_facts"
42
42
  ```
43
43
 
44
44
  For any existing modules that you branched, add a reference to the new branch
@@ -46,7 +46,7 @@ name. Don't forget the comma at the end of the *:git* value.
46
46
 
47
47
  ```
48
48
  mod "other_module",
49
- :git => "git://github.com/user/other_module",
49
+ :git => "https://github.com/user/other_module",
50
50
  :ref => "feature"
51
51
  ```
52
52
 
@@ -159,7 +159,7 @@ the *:git* value.
159
159
 
160
160
  ```
161
161
  mod "other_module",
162
- :git => "git://github.com/user/other_module",
162
+ :git => "https://github.com/user/other_module",
163
163
  :ref => "feature"
164
164
  ```
165
165
 
data/doc/faq.mkd CHANGED
@@ -17,7 +17,7 @@ modify. For example creating the script:
17
17
 
18
18
  ```
19
19
  $ cat /usr/local/bin/generate-puppet-types.sh
20
- !#/bin/bash
20
+ #!/bin/bash
21
21
 
22
22
  for environment in $1; do
23
23
  /opt/puppetlabs/bin/puppet generate types --environment $environment
data/docker/Makefile CHANGED
@@ -7,6 +7,10 @@ hadolint_available := $(shell hadolint --help > /dev/null 2>&1; echo $$?)
7
7
  hadolint_command := hadolint
8
8
  hadolint_container := ghcr.io/hadolint/hadolint:latest
9
9
  alpine_version := 3.14
10
+ # --load (--output=type=docker) can only be used with a single arch / platform
11
+ # https://github.com/docker/buildx/issues/59
12
+ output_type := docker
13
+ platform := linux/amd64
10
14
  export BUNDLE_PATH = $(PWD)/.bundle/gems
11
15
  export BUNDLE_BIN = $(PWD)/.bundle/bin
12
16
  export GEMFILE = $(PWD)/Gemfile
@@ -32,6 +36,10 @@ else
32
36
  dockerfile_context := $(PWD)/..
33
37
  endif
34
38
 
39
+ ifeq ($(IS_LATEST),true)
40
+ latest_tag := --tag $(NAMESPACE)/r10k:$(LATEST_VERSION)
41
+ endif
42
+
35
43
  prep:
36
44
  @git fetch --unshallow 2> /dev/null ||:
37
45
  @git fetch origin 'refs/tags/*:refs/tags/*'
@@ -52,17 +60,15 @@ build: prep
52
60
  docker pull alpine:$(alpine_version)
53
61
  docker buildx build \
54
62
  ${DOCKER_BUILD_FLAGS} \
55
- --load \
63
+ --output=type=$(output_type) \
64
+ --platform $(platform) \
56
65
  --build-arg alpine_version=$(alpine_version) \
57
66
  --build-arg vcs_ref=$(vcs_ref) \
58
67
  --build-arg build_date=$(build_date) \
59
68
  --build-arg version=$(VERSION) \
60
69
  --build-arg pupperware_analytics_stream=$(PUPPERWARE_ANALYTICS_STREAM) \
61
70
  --file r10k/$(dockerfile) \
62
- --tag $(NAMESPACE)/r10k:$(VERSION) $(dockerfile_context)
63
- ifeq ($(IS_LATEST),true)
64
- @docker tag $(NAMESPACE)/r10k:$(VERSION) puppet/r10k:$(LATEST_VERSION)
65
- endif
71
+ --tag $(NAMESPACE)/r10k:$(VERSION) $(latest_tag) $(dockerfile_context)
66
72
 
67
73
  test: prep
68
74
  @bundle install --path $$BUNDLE_PATH --gemfile $$GEMFILE --with test
@@ -71,11 +77,12 @@ test: prep
71
77
  bundle exec --gemfile $$GEMFILE \
72
78
  rspec spec
73
79
 
74
- push-image: prep
75
- @docker push $(NAMESPACE)/r10k:$(VERSION)
76
- ifeq ($(IS_LATEST),true)
77
- @docker push $(NAMESPACE)/r10k:$(LATEST_VERSION)
78
- endif
80
+ # call build to produce multiple architectures
81
+ # uses cached output from amd64 build target if it exists
82
+ # registry output is equivalent to --push
83
+ push-image: platform=linux/amd64,linux/arm64
84
+ push-image: output_type=registry
85
+ push-image: prep build
79
86
 
80
87
  push-readme:
81
88
  @docker pull sheogorath/readme-to-dockerhub
@@ -16,7 +16,7 @@ r10k_config_bak_path = "#{r10k_config_path}.bak"
16
16
 
17
17
  puppetfile =<<-EOS
18
18
  mod 'motd',
19
- :git => 'git://github.com/puppetlabs/puppetlabs-motd'
19
+ :git => 'https://github.com/puppetlabs/puppetlabs-motd'
20
20
  EOS
21
21
 
22
22
  proxy_env_value = 'http://cattastic.net:3219'
@@ -29,11 +29,11 @@ CONF
29
29
  # Install the same module in two different places
30
30
  puppetfile = <<-EOS
31
31
  mod 'prod_apache',
32
- :git => 'git://github.com/puppetlabs/puppetlabs-apache.git',
32
+ :git => 'https://github.com/puppetlabs/puppetlabs-apache.git',
33
33
  :tag => 'v6.0.0'
34
34
 
35
35
  mod 'test_apache',
36
- :git => 'git://github.com/puppetlabs/puppetlabs-apache.git',
36
+ :git => 'https://github.com/puppetlabs/puppetlabs-apache.git',
37
37
  :tag => 'v6.0.0'
38
38
  EOS
39
39
 
@@ -30,12 +30,12 @@ CONF
30
30
  puppetfile = <<-EOS
31
31
  mod 'non_module_object_1',
32
32
  :install_path => './',
33
- :git => 'git://github.com/puppetlabs/control-repo.git',
33
+ :git => 'https://github.com/puppetlabs/control-repo.git',
34
34
  :branch => 'production'
35
35
 
36
36
  mod 'non_module_object_2',
37
37
  :install_path => '',
38
- :git => 'git://github.com/puppetlabs/control-repo.git',
38
+ :git => 'https://github.com/puppetlabs/control-repo.git',
39
39
  :branch => 'production'
40
40
  EOS
41
41
 
@@ -27,7 +27,7 @@ stdlib_notify_message_regex = /The test message is:.*one.*=>.*1.*two.*=>.*bats.*
27
27
  puppet_file = <<-PUPPETFILE
28
28
  mod "puppetlabs/motd"
29
29
  mod 'puppetlabs/stdlib',
30
- :git => 'git://github.com/puppetlabs/puppetlabs-stdlib.git',
30
+ :git => 'https://github.com/puppetlabs/puppetlabs-stdlib.git',
31
31
  :tag => 'v7.0.1'
32
32
  PUPPETFILE
33
33
 
@@ -31,7 +31,7 @@ puppet_file = <<-PUPPETFILE
31
31
  moduledir '#{@module_path}'
32
32
  mod "puppetlabs/motd"
33
33
  mod 'puppetlabs/stdlib',
34
- :git => 'git://github.com/puppetlabs/puppetlabs-stdlib.git',
34
+ :git => 'https://github.com/puppetlabs/puppetlabs-stdlib.git',
35
35
  :tag => 'v7.0.1'
36
36
  PUPPETFILE
37
37
 
@@ -65,7 +65,7 @@ env_structs = {:production => GitEnv.new('/git_repos',
65
65
  '/git_repos_alt/environments_alt.git',
66
66
  '/root/environments_alt',
67
67
  '/root/environments_alt/Puppetfile',
68
- 'mod "puppetlabs/stdlib", :git => "git://github.com/puppetlabs/puppetlabs-stdlib.git", :tag => "v7.0.1"',
68
+ 'mod "puppetlabs/stdlib", :git => "https://github.com/puppetlabs/puppetlabs-stdlib.git", :tag => "v7.0.1"',
69
69
  '/root/environments_alt/manifests/site.pp',
70
70
  create_site_pp(master_certname, stage_env_manifest)
71
71
  ),
@@ -15,7 +15,7 @@ r10k_fqp = get_r10k_fqp(master)
15
15
 
16
16
  #File
17
17
  puppet_file = <<-PUPPETFILE
18
- mod 'broken', :git => 'git://github.com/puppetlabs/puppetlabs-broken'
18
+ mod 'broken', :git => 'https://github.com/puppetlabs/puppetlabs-broken'
19
19
  PUPPETFILE
20
20
 
21
21
  puppet_file_path = File.join(git_environments_path, 'Puppetfile')
@@ -12,7 +12,7 @@ r10k_fqp = get_r10k_fqp(master)
12
12
  #File
13
13
  puppet_file = <<-PUPPETFILE
14
14
  mod 'broken',
15
- :git => 'git://github.com/puppetlabs/puppetlabs-motd',
15
+ :git => 'https://github.com/puppetlabs/puppetlabs-motd',
16
16
  :ref => 'does_not_exist'
17
17
  PUPPETFILE
18
18
 
@@ -28,7 +28,7 @@ notify_message_regex = /I am in the production environment/
28
28
  puppet_file = <<-PUPPETFILE
29
29
  mod "puppetlabs/motd"
30
30
  mod 'puppetlabs/inifile',
31
- :git => 'git://github.com/puppetlabs/puppetlabs-inifile',
31
+ :git => 'https://github.com/puppetlabs/puppetlabs-inifile',
32
32
  :tag => 'v5.0.1'
33
33
  PUPPETFILE
34
34
 
@@ -27,7 +27,7 @@ PUPPETFILE
27
27
 
28
28
  puppet_file_git = <<-PUPPETFILE
29
29
  mod "puppetlabs/motd",
30
- :git => 'git://github.com/puppetlabs/puppetlabs-motd',
30
+ :git => 'https://github.com/puppetlabs/puppetlabs-motd',
31
31
  :tag => '1.2.0'
32
32
  PUPPETFILE
33
33
 
@@ -103,6 +103,29 @@ class R10K::Environment::WithModules < R10K::Environment::Base
103
103
  end
104
104
  end
105
105
 
106
+ def resolve_path(base, dirname, path)
107
+ if Pathname.new(path).absolute?
108
+ cleanpath(path)
109
+ else
110
+ cleanpath(File.join(base, dirname, path))
111
+ end
112
+ end
113
+
114
+ # .cleanpath is as good as we can do without touching the filesystem.
115
+ # The .realpath methods will choke if some of the intermediate paths
116
+ # are missing, even though in some cases we will create them later as
117
+ # needed.
118
+ def cleanpath(path)
119
+ Pathname.new(path).cleanpath.to_s
120
+ end
121
+
122
+ def validate_install_path(path, modname)
123
+ unless /^#{Regexp.escape(@basedir)}.*/ =~ path
124
+ raise R10K::Error.new("Environment cannot manage content '#{modname}' outside of containing environment: #{path} is not within #{@basedir}")
125
+ end
126
+ true
127
+ end
128
+
106
129
  # @param [String] name
107
130
  # @param [Hash] args
108
131
  def add_module(name, args)
@@ -111,7 +134,7 @@ class R10K::Environment::WithModules < R10K::Environment::Base
111
134
  args[:overrides] = @overrides
112
135
 
113
136
  if install_path = args.delete(:install_path)
114
- install_path = resolve_install_path(install_path)
137
+ install_path = resolve_path(@basedir, @dirname, install_path)
115
138
  validate_install_path(install_path, name)
116
139
  else
117
140
  install_path = @moduledir
@@ -75,6 +75,13 @@ class R10K::Git::Rugged::ThinRepository < R10K::Git::Rugged::WorkingRepository
75
75
  end
76
76
  end
77
77
 
78
+ def stage_files(files=['.'])
79
+ with_repo do |repo|
80
+ index = repo.index
81
+ files.each { |p| index.add( :path => p ) }
82
+ end
83
+ end
84
+
78
85
  private
79
86
 
80
87
  # Override the parent class repo setup so that we can make sure the alternates file is up to date
@@ -117,11 +117,15 @@ class R10K::Git::Rugged::WorkingRepository < R10K::Git::Rugged::BaseRepository
117
117
  with_repo { |repo| repo.config['remote.origin.url'] }
118
118
  end
119
119
 
120
- def dirty?
120
+ def dirty?(exclude_spec=false)
121
121
  with_repo do |repo|
122
- diff = repo.diff_workdir('HEAD')
122
+ if exclude_spec
123
+ diff = repo.diff_workdir('HEAD').select { |d| ! d.delta.old_file[:path].start_with?('spec/') }
124
+ else
125
+ diff = repo.diff_workdir('HEAD').to_a
126
+ end
123
127
 
124
- diff.each_patch do |p|
128
+ diff.each do |p|
125
129
  logger.debug(_("Found local modifications in %{file_path}" % {file_path: File.join(@path, p.delta.old_file[:path])}))
126
130
  logger.debug1(p.to_s)
127
131
  end
@@ -43,6 +43,10 @@ class R10K::Git::ShellGit::ThinRepository < R10K::Git::ShellGit::WorkingReposito
43
43
  git(['ls-tree', '-t', '-r', '--name-only', ref], :path => @path.to_s).stdout.split("\n")
44
44
  end
45
45
 
46
+ def stage_files(files=['.'])
47
+ git(['add', files].flatten, :path => @path.to_s)
48
+ end
49
+
46
50
  private
47
51
 
48
52
  def setup_cache_remote
@@ -90,11 +90,12 @@ class R10K::Git::ShellGit::WorkingRepository < R10K::Git::ShellGit::BaseReposito
90
90
  end
91
91
 
92
92
  # does the working tree have local modifications to tracked files?
93
- def dirty?
93
+ def dirty?(exclude_spec=false)
94
94
  result = git(['diff-index', '--exit-code', '--name-only', 'HEAD'], :path => @path.to_s, :raise_on_fail => false)
95
95
 
96
96
  if result.exit_code != 0
97
97
  dirty_files = result.stdout.split('\n')
98
+ dirty_files.delete_if { |f| f.start_with?('spec/') } if exclude_spec
98
99
 
99
100
  dirty_files.each do |file|
100
101
  logger.debug(_("Found local modifications in %{file_path}" % {file_path: File.join(@path, file)}))
@@ -103,7 +104,7 @@ class R10K::Git::ShellGit::WorkingRepository < R10K::Git::ShellGit::BaseReposito
103
104
  logger.debug1 { git(['diff-index', '-p', 'HEAD', file], :path => @path.to_s, :raise_on_fail => false).stdout }
104
105
  end
105
106
 
106
- return true
107
+ return dirty_files.size > 0
107
108
  else
108
109
  return false
109
110
  end
@@ -36,7 +36,7 @@ class R10K::Git::StatefulRepository
36
36
  end
37
37
 
38
38
  # Returns true if the sync actually updated the repo, false otherwise
39
- def sync(ref, force=true)
39
+ def sync(ref, force=true, exclude_spec=false)
40
40
  @cache.sync if sync_cache?(ref)
41
41
 
42
42
  sha = @cache.resolve(ref)
@@ -45,7 +45,7 @@ class R10K::Git::StatefulRepository
45
45
  raise R10K::Git::UnresolvableRefError.new(_("Unable to sync repo to unresolvable ref '%{ref}'") % {ref: ref}, :git_dir => @repo.git_dir)
46
46
  end
47
47
 
48
- workdir_status = status(ref)
48
+ workdir_status = status(ref, exclude_spec)
49
49
 
50
50
  updated = true
51
51
  case workdir_status
@@ -75,7 +75,7 @@ class R10K::Git::StatefulRepository
75
75
  updated
76
76
  end
77
77
 
78
- def status(ref)
78
+ def status(ref, exclude_spec=false)
79
79
  if !@repo.exist?
80
80
  :absent
81
81
  elsif !@cache.exist?
@@ -88,7 +88,7 @@ class R10K::Git::StatefulRepository
88
88
  :mismatched
89
89
  elsif @repo.head.nil?
90
90
  :mismatched
91
- elsif @repo.dirty?
91
+ elsif @repo.dirty?(exclude_spec)
92
92
  :dirty
93
93
  elsif !(@repo.head == @cache.resolve(ref))
94
94
  :outdated
@@ -100,7 +100,7 @@ class R10K::Module::Git < R10K::Module::Base
100
100
  def sync(opts={})
101
101
  force = opts[:force] || @force
102
102
  if should_sync?
103
- updated = @repo.sync(version, force)
103
+ updated = @repo.sync(version, force, @exclude_spec)
104
104
  else
105
105
  updated = false
106
106
  end
@@ -1,3 +1,4 @@
1
+ require 'set'
1
2
  # Defines a collection for application settings
2
3
  #
3
4
  # This implements a hierarchical interface to application settings. Containers
data/lib/r10k/version.rb CHANGED
@@ -2,5 +2,5 @@ module R10K
2
2
  # When updating to a new major (X) or minor (Y) version, include `#major` or
3
3
  # `#minor` (respectively) in your commit message to trigger the appropriate
4
4
  # release. Otherwise, a new patch (Z) version will be released.
5
- VERSION = '3.14.2'
5
+ VERSION = '3.15.0'
6
6
  end
data/r10k.gemspec CHANGED
@@ -23,18 +23,16 @@ Gem::Specification.new do |s|
23
23
  s.license = 'Apache-2.0'
24
24
 
25
25
  s.add_dependency 'colored2', '3.1.2'
26
- s.add_dependency 'cri', '2.15.10'
26
+ s.add_dependency 'cri', '>= 2.15.10'
27
27
 
28
28
  s.add_dependency 'log4r', '1.1.10'
29
29
  s.add_dependency 'multi_json', '~> 1.10'
30
30
 
31
- s.add_dependency 'puppet_forge', '~> 2.3.0'
31
+ s.add_dependency 'puppet_forge', '>= 2.3.0'
32
32
 
33
33
  s.add_dependency 'gettext-setup', '~>0.24'
34
- # These two pins narrow what is allowed by gettext-setup,
35
- # to preserve compatability with Ruby 2.4
36
- s.add_dependency 'fast_gettext', '~> 1.1.0'
37
- s.add_dependency 'gettext', ['>= 3.0.2', '< 3.3.0']
34
+ s.add_dependency 'fast_gettext', ['>= 1.1.0', '< 3.0.0']
35
+ s.add_dependency 'gettext', ['>= 3.0.2', '< 4.0.0']
38
36
 
39
37
  s.add_dependency 'jwt', '~> 2.2.3'
40
38
  s.add_dependency 'minitar', '~> 0.9'
@@ -83,6 +83,22 @@ describe R10K::Git::StatefulRepository do
83
83
  end
84
84
  end
85
85
 
86
+ describe "when the workdir has spec dir modifications" do
87
+ before(:each) do
88
+ thinrepo.clone(remote, {:ref => ref})
89
+ FileUtils.mkdir_p(File.join(thinrepo.path, 'spec'))
90
+ File.open(File.join(thinrepo.path, 'spec', 'file_spec.rb'), 'a') { |f| f.write('local modifications!') }
91
+ thinrepo.stage_files(['spec/file_spec.rb'])
92
+ end
93
+ it "is dirty with exclude_spec false" do
94
+ expect(subject.status(ref, false)).to eq :dirty
95
+ end
96
+
97
+ it "is insync with exclude_spec true" do
98
+ expect(subject.status(ref, true)).to eq :insync
99
+ end
100
+ end
101
+
86
102
  describe "if the right ref is checked out" do
87
103
  it "is insync" do
88
104
  thinrepo.clone(remote, {:ref => ref})
@@ -231,7 +231,7 @@ describe R10K::Action::Deploy::Module do
231
231
  original.call(settings.merge({
232
232
  sources: {
233
233
  main: {
234
- remote: 'git://not/a/remote',
234
+ remote: 'https://not/a/remote',
235
235
  basedir: '/not/a/basedir',
236
236
  type: 'git'
237
237
  }
@@ -253,9 +253,9 @@ describe R10K::Action::Deploy::Module do
253
253
  loader = environment.loader
254
254
  allow(loader).to receive(:puppetfile_content).and_return('')
255
255
  expect(loader).to receive(:load) do
256
- loader.add_module('mod1', { git: 'git://remote' })
257
- loader.add_module('mod2', { git: 'git://remote' })
258
- loader.add_module('mod3', { git: 'git://remote' })
256
+ loader.add_module('mod1', { git: 'https://remote' })
257
+ loader.add_module('mod2', { git: 'https://remote' })
258
+ loader.add_module('mod3', { git: 'https://remote' })
259
259
 
260
260
  loaded_content = loader.load!
261
261
  loaded_content[:modules].each do |mod|
@@ -290,7 +290,7 @@ describe R10K::Action::Deploy::Module do
290
290
  original.call(settings.merge({
291
291
  sources: {
292
292
  main: {
293
- remote: 'git://not/a/remote',
293
+ remote: 'https://not/a/remote',
294
294
  basedir: '/not/a/basedir',
295
295
  type: 'git'
296
296
  }
@@ -315,8 +315,8 @@ describe R10K::Action::Deploy::Module do
315
315
  # it so it will create the correct loaded_content.
316
316
  allow(loader).to receive(:puppetfile_content).and_return('')
317
317
  expect(loader).to receive(:load) do
318
- loader.add_module('mod1', { git: 'git://remote' })
319
- loader.add_module('mod2', { git: 'git://remote' })
318
+ loader.add_module('mod1', { git: 'https://remote' })
319
+ loader.add_module('mod2', { git: 'https://remote' })
320
320
 
321
321
  loaded_content = loader.load!
322
322
  loaded_content[:modules].each do |mod|
@@ -9,7 +9,7 @@ describe R10K::Environment::Git do
9
9
  '/some/nonexistent/environmentdir',
10
10
  'gitref',
11
11
  {
12
- :remote => 'git://git-server.site/my-repo.git',
12
+ :remote => 'https://git-server.site/my-repo.git',
13
13
  :ref => 'd026ea677116424d2968edb9cee8cbc24d09322b',
14
14
  }
15
15
  )
@@ -45,7 +45,7 @@ describe R10K::Environment::Git do
45
45
  end
46
46
 
47
47
  it "can return the environment remote" do
48
- expect(subject.remote).to eq 'git://git-server.site/my-repo.git'
48
+ expect(subject.remote).to eq 'https://git-server.site/my-repo.git'
49
49
  end
50
50
 
51
51
  it "can return the environment ref" do
@@ -72,4 +72,51 @@ describe R10K::Environment::WithModules do
72
72
  expect(returned_modules.map(&:name).sort).to eq(%w[concat exec stdlib zebra])
73
73
  end
74
74
  end
75
+
76
+ describe "module options" do
77
+ let(:subject_params) {{
78
+ :modules => {
79
+ 'hieradata' => {
80
+ :type => 'git',
81
+ :source => 'git@git.example.com:site_data.git',
82
+ :install_path => ''
83
+ },
84
+ 'site_data_2' => {
85
+ :type => 'git',
86
+ :source => 'git@git.example.com:site_data.git',
87
+ :install_path => 'subdir'
88
+ },
89
+
90
+ }
91
+ }}
92
+
93
+ it "should support empty install_path" do
94
+ modules = subject.modules
95
+ expect(modules[0].title).to eq 'hieradata'
96
+ expect(modules[0].path).to eq Pathname.new('/some/nonexistent/environmentdir/prefix_release42/hieradata')
97
+
98
+ end
99
+
100
+ it "should support install_path" do
101
+ modules = subject.modules
102
+ expect(modules[1].title).to eq 'site_data_2'
103
+ expect(modules[1].path).to eq Pathname.new('/some/nonexistent/environmentdir/prefix_release42/subdir/site_data_2')
104
+ end
105
+
106
+ context "with invalid configuration" do
107
+ let(:subject_params) {{
108
+ :modules => {
109
+ 'site_data_2' => {
110
+ :type => 'git',
111
+ :source => 'git@git.example.com:site_data.git',
112
+ :install_path => '/absolute_path_outside_of_containing_environment'
113
+ }
114
+ }
115
+ }}
116
+
117
+ it "raises an error" do
118
+ expect{ subject.modules }.to raise_error(R10K::Error, /Environment cannot.*outside of containing environment.*/i)
119
+ end
120
+ end
121
+ end
75
122
  end
@@ -13,13 +13,13 @@ describe R10K::Git::Alternates do
13
13
  it "reads the alternates file and splits on lines" do
14
14
  expect(subject.file).to receive(:file?).and_return true
15
15
  expect(subject.file).to receive(:readlines).and_return([
16
- "/var/cache/r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git\n",
17
- "/vagrant/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git\n",
16
+ "/var/cache/r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git\n",
17
+ "/vagrant/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git\n",
18
18
  ])
19
19
 
20
20
  expect(subject.read).to eq([
21
- "/var/cache/r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git",
22
- "/vagrant/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git",
21
+ "/var/cache/r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git",
22
+ "/vagrant/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git",
23
23
  ])
24
24
  end
25
25
 
@@ -33,17 +33,17 @@ describe R10K::Git::Alternates do
33
33
  describe "determining if an entry is already present" do
34
34
  before do
35
35
  allow(subject).to receive(:to_a).and_return([
36
- "/var/cache/r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git",
37
- "/vagrant/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git",
36
+ "/var/cache/r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git",
37
+ "/vagrant/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git",
38
38
  ])
39
39
  end
40
40
 
41
41
  it "is true if the element is in the array of read entries" do
42
- expect(subject).to include("/vagrant/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git")
42
+ expect(subject).to include("/vagrant/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git")
43
43
  end
44
44
 
45
45
  it "is false if the element is not in the array of read entries" do
46
- expect(subject).to_not include("/tmp/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git")
46
+ expect(subject).to_not include("/tmp/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git")
47
47
  end
48
48
  end
49
49
 
@@ -52,7 +52,7 @@ describe R10K::Git::Alternates do
52
52
  describe "and the git objects/info directory does not exist" do
53
53
  it "raises an error when the parent directory does not exist" do
54
54
  expect {
55
- subject.write(["/tmp/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git"])
55
+ subject.write(["/tmp/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git"])
56
56
  }.to raise_error(R10K::Git::GitError,"Cannot write /some/nonexistent/path/.git/objects/info/alternates; parent directory does not exist")
57
57
  end
58
58
  end
@@ -66,51 +66,51 @@ describe R10K::Git::Alternates do
66
66
  end
67
67
 
68
68
  it "creates the alternates file with the new entry when not present" do
69
- subject.write(["/tmp/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git"])
70
- expect(io.string).to eq("/tmp/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git\n")
69
+ subject.write(["/tmp/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git"])
70
+ expect(io.string).to eq("/tmp/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git\n")
71
71
  end
72
72
 
73
73
  it "rewrites the file with all alternate entries" do
74
- subject.write(["/var/cache/r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git",
75
- "/vagrant/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git",
76
- "/tmp/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git"])
74
+ subject.write(["/var/cache/r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git",
75
+ "/vagrant/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git",
76
+ "/tmp/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git"])
77
77
 
78
78
  expect(io.string).to eq(<<-EOD)
79
- /var/cache/r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git
80
- /vagrant/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git
81
- /tmp/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git
79
+ /var/cache/r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git
80
+ /vagrant/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git
81
+ /tmp/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git
82
82
  EOD
83
83
  end
84
84
  end
85
85
 
86
86
  describe "appending a new alternate object entry" do
87
87
  it "re-writes the file with the new entry concatenated to the file" do
88
- expect(subject).to receive(:to_a).and_return(["/var/cache/r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git",
89
- "/vagrant/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git"])
88
+ expect(subject).to receive(:to_a).and_return(["/var/cache/r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git",
89
+ "/vagrant/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git"])
90
90
 
91
- expect(subject).to receive(:write).with(["/var/cache/r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git",
92
- "/vagrant/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git",
93
- "/tmp/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git"])
91
+ expect(subject).to receive(:write).with(["/var/cache/r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git",
92
+ "/vagrant/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git",
93
+ "/tmp/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git"])
94
94
 
95
- subject.add("/tmp/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git")
95
+ subject.add("/tmp/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git")
96
96
  end
97
97
  end
98
98
  end
99
99
 
100
100
  describe "conditionally appending a new alternate object entry" do
101
101
  before do
102
- expect(subject).to receive(:read).and_return(%w[/var/cache/r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git])
102
+ expect(subject).to receive(:read).and_return(%w[/var/cache/r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git])
103
103
  end
104
104
 
105
105
  it "adds the entry and returns true when the entry doesn't exist" do
106
- expect(subject).to receive(:write).with(["/var/cache/r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git",
107
- "/tmp/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git"])
108
- expect(subject.add?("/tmp/.r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git")).to eq true
106
+ expect(subject).to receive(:write).with(["/var/cache/r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git",
107
+ "/tmp/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git"])
108
+ expect(subject.add?("/tmp/.r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git")).to eq true
109
109
  end
110
110
 
111
111
  it "doesn't modify the file and returns false when the entry exists" do
112
112
  expect(subject).to_not receive(:write)
113
- expect(subject.add?("/var/cache/r10k/git/git---github.com-puppetlabs-puppetlabs-apache.git")).to eq false
113
+ expect(subject.add?("/var/cache/r10k/git/https---github.com-puppetlabs-puppetlabs-apache.git")).to eq false
114
114
  end
115
115
  end
116
116
  end
@@ -21,7 +21,7 @@ describe R10K::Git::Cache do
21
21
  end
22
22
  end
23
23
 
24
- let(:remote) { 'git://some/git/remote' }
24
+ let(:remote) { 'https://some/git/remote' }
25
25
  subject { subclass.new(remote) }
26
26
 
27
27
  describe "updating the cache" do
@@ -5,7 +5,7 @@ describe R10K::Git::Rugged::Cache, :unless => R10K::Util::Platform.jruby? do
5
5
  require 'r10k/git/rugged/cache'
6
6
  end
7
7
 
8
- subject(:cache) { described_class.new('git://some/git/remote') }
8
+ subject(:cache) { described_class.new('https://some/git/remote') }
9
9
 
10
10
  it "wraps a Rugged::BareRepository instance" do
11
11
  expect(cache.repo).to be_a_kind_of R10K::Git::Rugged::BareRepository
@@ -31,7 +31,7 @@ describe R10K::Git::Rugged::Cache, :unless => R10K::Util::Platform.jruby? do
31
31
  before do
32
32
  allow(subject.repo).to receive(:exist?).and_return true
33
33
  allow(subject.repo).to receive(:fetch)
34
- allow(subject.repo).to receive(:remotes).and_return({ 'origin' => 'git://some/git/remote' })
34
+ allow(subject.repo).to receive(:remotes).and_return({ 'origin' => 'https://some/git/remote' })
35
35
  end
36
36
 
37
37
  it "does not update the URLs if they match" do
@@ -3,7 +3,7 @@ require 'r10k/git/shellgit/cache'
3
3
 
4
4
  describe R10K::Git::ShellGit::Cache do
5
5
 
6
- subject { described_class.new('git://some/git/remote') }
6
+ subject { described_class.new('https://some/git/remote') }
7
7
 
8
8
  it "wraps a ShellGit::BareRepository instance" do
9
9
  expect(subject.repo).to be_a_kind_of R10K::Git::ShellGit::BareRepository
@@ -4,7 +4,7 @@ require 'r10k/git/stateful_repository'
4
4
 
5
5
  describe R10K::Git::StatefulRepository do
6
6
 
7
- let(:remote) { 'git://some.site/some-repo.git' }
7
+ let(:remote) { 'https://some.site/some-repo.git' }
8
8
  let(:ref) { '0.9.x' }
9
9
 
10
10
  subject { described_class.new(remote, '/some/nonexistent/basedir', 'some-dirname') }
@@ -44,7 +44,7 @@ describe R10K::Module::Git do
44
44
  described_class.new(
45
45
  'branan/eight_hundred',
46
46
  '/moduledir',
47
- { :git => 'git://git-server.site/branan/puppet-eight_hundred' }
47
+ { :git => 'https://git-server.site/branan/puppet-eight_hundred' }
48
48
  )
49
49
  end
50
50
 
@@ -66,7 +66,7 @@ describe R10K::Module::Git do
66
66
  described_class.new(
67
67
  'eight_hundred',
68
68
  '/moduledir',
69
- { :git => 'git://git-server.site/branan/puppet-eight_hundred' }
69
+ { :git => 'https://git-server.site/branan/puppet-eight_hundred' }
70
70
  )
71
71
  end
72
72
 
@@ -86,7 +86,7 @@ describe R10K::Module::Git do
86
86
 
87
87
  describe "properties" do
88
88
  subject do
89
- described_class.new('boolean', '/moduledir', {:git => 'git://git.example.com/adrienthebo/puppet-boolean'})
89
+ described_class.new('boolean', '/moduledir', {:git => 'https://git.example.com/adrienthebo/puppet-boolean'})
90
90
  end
91
91
 
92
92
  before(:each) do
@@ -154,7 +154,7 @@ describe R10K::Module::Git do
154
154
  described_class.new(
155
155
  'boolean',
156
156
  '/moduledir',
157
- { :git => 'git://git.example.com/adrienthebo/puppet-boolean' }
157
+ { :git => 'https://git.example.com/adrienthebo/puppet-boolean' }
158
158
  )
159
159
  end
160
160
 
@@ -171,7 +171,7 @@ describe R10K::Module::Git do
171
171
  described_class.new('boolean', '/moduledir', base_opts.merge(extra_opts), env)
172
172
  end
173
173
 
174
- let(:base_opts) { { git: 'git://git.example.com/adrienthebo/puppet-boolean' } }
174
+ let(:base_opts) { { git: 'https://git.example.com/adrienthebo/puppet-boolean' } }
175
175
 
176
176
  before(:each) do
177
177
  allow(mock_repo).to receive(:head).and_return('abc123')
@@ -12,7 +12,7 @@ describe R10K::ModuleLoader::Puppetfile do
12
12
  environment: R10K::Environment::Git.new('env',
13
13
  '/test/basedir/',
14
14
  'env',
15
- { remote: 'git://foo/remote',
15
+ { remote: 'https://foo/remote',
16
16
  ref: 'env' })
17
17
  }
18
18
  end
@@ -6,10 +6,10 @@ RSpec.describe R10K::Util::Cacheable do
6
6
  subject { Object.new.extend(R10K::Util::Cacheable) }
7
7
 
8
8
  describe "dirname sanitization" do
9
- let(:input) { 'git://some/git/remote' }
9
+ let(:input) { 'https://some/git/remote' }
10
10
 
11
11
  it 'sanitizes URL to directory name' do
12
- expect(subject.sanitized_dirname(input)).to eq('git---some-git-remote')
12
+ expect(subject.sanitized_dirname(input)).to eq('https---some-git-remote')
13
13
  end
14
14
 
15
15
  context 'with username and password' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r10k
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.14.2
4
+ version: 3.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrien Thebo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-17 00:00:00.000000000 Z
11
+ date: 2022-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored2
@@ -28,14 +28,14 @@ dependencies:
28
28
  name: cri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 2.15.10
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 2.15.10
41
41
  - !ruby/object:Gem::Dependency
@@ -70,14 +70,14 @@ dependencies:
70
70
  name: puppet_forge
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: 2.3.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: 2.3.0
83
83
  - !ruby/object:Gem::Dependency
@@ -98,16 +98,22 @@ dependencies:
98
98
  name: fast_gettext
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: 1.1.0
104
+ - - "<"
105
+ - !ruby/object:Gem::Version
106
+ version: 3.0.0
104
107
  type: :runtime
105
108
  prerelease: false
106
109
  version_requirements: !ruby/object:Gem::Requirement
107
110
  requirements:
108
- - - "~>"
111
+ - - ">="
109
112
  - !ruby/object:Gem::Version
110
113
  version: 1.1.0
114
+ - - "<"
115
+ - !ruby/object:Gem::Version
116
+ version: 3.0.0
111
117
  - !ruby/object:Gem::Dependency
112
118
  name: gettext
113
119
  requirement: !ruby/object:Gem::Requirement
@@ -117,7 +123,7 @@ dependencies:
117
123
  version: 3.0.2
118
124
  - - "<"
119
125
  - !ruby/object:Gem::Version
120
- version: 3.3.0
126
+ version: 4.0.0
121
127
  type: :runtime
122
128
  prerelease: false
123
129
  version_requirements: !ruby/object:Gem::Requirement
@@ -127,7 +133,7 @@ dependencies:
127
133
  version: 3.0.2
128
134
  - - "<"
129
135
  - !ruby/object:Gem::Version
130
- version: 3.3.0
136
+ version: 4.0.0
131
137
  - !ruby/object:Gem::Dependency
132
138
  name: jwt
133
139
  requirement: !ruby/object:Gem::Requirement
@@ -215,7 +221,6 @@ files:
215
221
  - ".github/workflows/rspec_tests.yml"
216
222
  - ".github/workflows/stale.yml"
217
223
  - ".gitignore"
218
- - ".travis.yml"
219
224
  - CHANGELOG.mkd
220
225
  - CODEOWNERS
221
226
  - CONTRIBUTING.mkd
data/.travis.yml DELETED
@@ -1,42 +0,0 @@
1
- ---
2
- language: ruby
3
- bundler_args: "--without system"
4
- script: "bundle exec rspec --color --format documentation spec"
5
- notifications:
6
- email: false
7
- sudo: false
8
- jdk:
9
- - openjdk11
10
- before_install: gem install bundler -v '< 2' --no-document
11
- matrix:
12
- include:
13
- - stage: r10k tests
14
- rvm: 2.3.0
15
- - stage: r10k container tests
16
- dist: focal
17
- language: ruby
18
- services:
19
- - docker
20
- rvm: 2.6.6
21
- env:
22
- - DOCKER_COMPOSE_VERSION=1.28.6
23
- - DOCKER_BUILDX_VERSION=0.5.1
24
- # necessary to prevent overwhelming TravisCI build output limits
25
- - DOCKER_BUILD_FLAGS="--progress plain"
26
- before_install:
27
- - sudo rm /usr/local/bin/docker-compose
28
- - curl --location https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname --kernel-name`-`uname --machine` > docker-compose
29
- - chmod +x docker-compose
30
- - sudo mv docker-compose /usr/local/bin
31
- - mkdir -vp ~/.docker/cli-plugins
32
- - curl --location https://github.com/docker/buildx/releases/download/v${DOCKER_BUILDX_VERSION}/buildx-v${DOCKER_BUILDX_VERSION}.linux-amd64 > ~/.docker/cli-plugins/docker-buildx
33
- - chmod +x ~/.docker/cli-plugins/docker-buildx
34
- - docker buildx create --name travis_builder --use
35
- script:
36
- - set -e
37
- - cd docker
38
- - make lint
39
- - make build
40
- - make test
41
- after_script:
42
- - docker buildx rm travis_builder