consult 1.0.0.pre2 → 1.0.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: 8f20892ac9536d4c435718496f6e4535207b47fa0e149993bc657b2ebfdf7491
4
- data.tar.gz: 46ec2012537e03f62e9a21717d521f6660e9dddbcb3f5c83944dac5ba900fec1
3
+ metadata.gz: 76b94b56a94ff354ad82df46b823adc23c911b4acc377aff3232271dfaeb2b4e
4
+ data.tar.gz: ab8885c93afd32eb6aed12d1fd8fe3102a419efc8ae1a4dac483ae41a003359b
5
5
  SHA512:
6
- metadata.gz: d4ea6a78c336c44172b03af8606bc6f783b6a2372b06db9d35d0c95e3090e1abbf75ffd0345d308ef38c25d4b126beda6f56d62fe1b17ac792c5740f0db80010
7
- data.tar.gz: d7b4f886c8685df462f0af2404a6cc3513e09f17ccb7809ab81826e8b393fcd29632d73c86e0983eb66d49e8fde1d4c86aad7e04300083c3ece5cc99fc3b45ed
6
+ metadata.gz: 1c55a14f4e4ba227de03fa508907be7edd1e5912602794d8520192ed70d05cdbb7bd2feeae0b73ef1ce33b273bf7c40b8b5e5fd6074bf98937b702127e5addd9
7
+ data.tar.gz: 9431a33406b7b535be98ba6ef18694370acd0eea21e45e0f9ea0066a356abdfc1a6e59bd137357004a8e7917581e862ce97c299ad411a0b4d4ac5fb631849127
@@ -0,0 +1,75 @@
1
+ name: ci
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - master
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ test:
15
+ runs-on: ubuntu-latest
16
+
17
+ strategy:
18
+ matrix:
19
+ ruby-version:
20
+ - '2.5'
21
+ - '2.7'
22
+ - '3.0'
23
+ - '3.1'
24
+ - '3.2'
25
+ - '3.3'
26
+
27
+ name: test (ruby ${{ matrix.ruby-version }})
28
+
29
+ services:
30
+ consul:
31
+ image: consul:1.3.0
32
+ ports:
33
+ - "8500:8500"
34
+
35
+ vault:
36
+ image: vault:0.11.3
37
+ ports:
38
+ - "8200:8200"
39
+ env:
40
+ VAULT_DEV_ROOT_TOKEN_ID: 94e1a9ed-5d72-5677-27ab-ebc485cca368
41
+
42
+ permissions:
43
+ contents: read
44
+ checks: write
45
+
46
+ env:
47
+ LATEST_RUBY_VERSION: '3.3'
48
+ BUNDLE_ONLY: default test
49
+ CI: true
50
+
51
+ steps:
52
+ - uses: actions/checkout@v4
53
+
54
+ - uses: ruby/setup-ruby@v1
55
+ with:
56
+ ruby-version: ${{ matrix.ruby-version }}
57
+ bundler-cache: true
58
+
59
+ - run: ./spec/support/populate_consul.sh
60
+
61
+ - run: bundle exec rspec
62
+
63
+ - uses: joshmfrankel/simplecov-check-action@main
64
+ if: matrix.ruby-version == env.LATEST_RUBY_VERSION
65
+ with:
66
+ github_token: ${{ secrets.GITHUB_TOKEN }}
67
+ check_job_name: "SimpleCov (ruby ${{ matrix.ruby-version }})"
68
+ on_fail_status: neutral
69
+
70
+ - uses: actions/upload-artifact@v4
71
+ with:
72
+ name: coverage-ruby-${{ matrix.ruby-version }}-${{ github.head_ref || github.ref_name }}-${{ github.sha }}
73
+ path: |
74
+ coverage/
75
+ if-no-files-found: ignore
data/.rspec CHANGED
@@ -1,3 +1,3 @@
1
- --format documentation
1
+ --format progress
2
2
  --color
3
3
  --require spec_helper
data/CHANGELOG.md CHANGED
@@ -10,6 +10,7 @@
10
10
  * Enable defining vars at the env block level, rather than only on template blocks
11
11
  * Create directories for rendered files as needed
12
12
  * Add the `skip_missing_template` config for templates
13
+ * Expand support to from Ruby 2.5 to Ruby 3.3
13
14
 
14
15
  #### 0.11.0
15
16
 
data/CODEOWNERS ADDED
@@ -0,0 +1 @@
1
+ * @veracross/product-tech-leads
data/Dockerfile ADDED
@@ -0,0 +1,13 @@
1
+ FROM ruby:3.1
2
+
3
+ WORKDIR /consult
4
+
5
+ COPY Gemfile consult.gemspec ./
6
+ COPY lib/consult/version.rb ./lib/consult/version.rb
7
+ RUN bundle package --all --no-install
8
+ RUN bundle install
9
+
10
+ COPY . .
11
+
12
+ ENTRYPOINT ["ruby", "bin/consult"]
13
+ CMD ["--help"]
data/Gemfile CHANGED
@@ -4,3 +4,14 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in consult.gemspec
6
6
  gemspec
7
+
8
+ group :development, :test do
9
+ gem 'bundler'
10
+ gem 'guard'
11
+ gem 'guard-rspec'
12
+ gem 'pry-byebug'
13
+ gem 'rake'
14
+ gem 'rspec', '~> 3.0'
15
+ gem 'rspec_junit_formatter', '~> 0.4.1'
16
+ gem 'simplecov', '~> 0.22'
17
+ end
data/README.md CHANGED
@@ -48,6 +48,14 @@ Consult: Rendered my_config
48
48
  Consult: Rendered secrets
49
49
  ```
50
50
 
51
+ The Consult CLI is also available via Docker:
52
+
53
+ ```bash
54
+ $ docker run --rm -v .:/app veracross/consult:latest --directory /app
55
+ ```
56
+
57
+ If your templates reference `localhost` (such as the templates in the `spec` directory of this repo), add `--net host` to the command.
58
+
51
59
  ### Configuration
52
60
 
53
61
  ```yaml
data/bin/console CHANGED
File without changes
data/bin/consult CHANGED
File without changes
data/bin/setup CHANGED
File without changes
data/consult.gemspec CHANGED
@@ -26,13 +26,4 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency 'diplomat', '~> 2.6'
28
28
  spec.add_dependency 'vault', '>= 0.10.0', '< 1.0.0'
29
-
30
- spec.add_development_dependency 'bundler'
31
- spec.add_development_dependency 'guard'
32
- spec.add_development_dependency 'guard-rspec'
33
- spec.add_development_dependency 'pry-byebug'
34
- spec.add_development_dependency 'rake'
35
- spec.add_development_dependency 'rspec', '~> 3.0'
36
- spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4.1'
37
- spec.add_development_dependency 'simplecov', '~> 0.16.1'
38
29
  end
@@ -24,7 +24,11 @@ module Consult
24
24
  end
25
25
 
26
26
  # Attempt to render
27
- renderer = ERB.new(contents, nil, '-')
27
+ renderer = if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.0')
28
+ ERB.new(contents, trim_mode: '-')
29
+ else
30
+ ERB.new(contents, nil, '-')
31
+ end
28
32
  result = renderer.result(binding)
29
33
 
30
34
  puts "Consult: Rendering #{name}" + (save ? " to #{dest}" : "...") if verbose?
@@ -1,3 +1,3 @@
1
1
  module Consult
2
- VERSION = '1.0.0.pre2'
2
+ VERSION = '1.0.0'
3
3
  end
data/lib/consult.rb CHANGED
@@ -5,6 +5,8 @@ require 'yaml'
5
5
  require 'erb'
6
6
  require 'vault'
7
7
  require 'diplomat'
8
+ # https://github.com/WeAreFarmGeek/diplomat/issues/26
9
+ require 'ostruct'
8
10
 
9
11
  require_relative './consult/version'
10
12
  require_relative './consult/utilities'
@@ -41,7 +43,7 @@ module Consult
41
43
  @all_config ||= {}
42
44
 
43
45
  @config = @all_config[:shared].to_h.deep_merge @all_config[env&.to_sym].to_h
44
- @templates = @config[:templates]&.map { |name, config| Template.new(name, config.merge(verbose: verbose).merge(env_vars: @config[:vars])) } || []
46
+ @templates = @config[:templates]&.map { |name, config| Template.new(name, config.merge({verbose: verbose, env_vars: @config[:vars]})) } || []
45
47
 
46
48
  @force_render = force_render
47
49
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: consult
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Fraser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-19 00:00:00.000000000 Z
11
+ date: 2025-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diplomat
@@ -44,118 +44,6 @@ dependencies:
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
46
  version: 1.0.0
47
- - !ruby/object:Gem::Dependency
48
- name: bundler
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- - !ruby/object:Gem::Dependency
62
- name: guard
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: '0'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: '0'
75
- - !ruby/object:Gem::Dependency
76
- name: guard-rspec
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
- - !ruby/object:Gem::Dependency
90
- name: pry-byebug
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
- - !ruby/object:Gem::Dependency
104
- name: rake
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: '0'
117
- - !ruby/object:Gem::Dependency
118
- name: rspec
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '3.0'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '3.0'
131
- - !ruby/object:Gem::Dependency
132
- name: rspec_junit_formatter
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: 0.4.1
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: 0.4.1
145
- - !ruby/object:Gem::Dependency
146
- name: simplecov
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: 0.16.1
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: 0.16.1
159
47
  description: Manage consul/vault backed template files in Ruby.
160
48
  email:
161
49
  - jeff.fraser@veracross.com
@@ -164,12 +52,14 @@ executables:
164
52
  extensions: []
165
53
  extra_rdoc_files: []
166
54
  files:
167
- - ".circleci/config.yml"
55
+ - ".github/workflows/ci.yml"
168
56
  - ".gitignore"
169
57
  - ".rspec"
170
58
  - ".rubocop.yml"
171
59
  - ".ruby-version"
172
60
  - CHANGELOG.md
61
+ - CODEOWNERS
62
+ - Dockerfile
173
63
  - Gemfile
174
64
  - Guardfile
175
65
  - LICENSE.txt
@@ -205,11 +95,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
95
  version: '0'
206
96
  required_rubygems_version: !ruby/object:Gem::Requirement
207
97
  requirements:
208
- - - ">"
98
+ - - ">="
209
99
  - !ruby/object:Gem::Version
210
- version: 1.3.1
100
+ version: '0'
211
101
  requirements: []
212
- rubygems_version: 3.1.6
102
+ rubygems_version: 3.3.3
213
103
  signing_key:
214
104
  specification_version: 4
215
105
  summary: Manage consul/vault backed template files in Ruby.
data/.circleci/config.yml DELETED
@@ -1,79 +0,0 @@
1
- version: 2.1
2
-
3
- jobs:
4
- test:
5
- parameters:
6
- ruby_version:
7
- type: string
8
-
9
- docker:
10
- - image: cimg/ruby:<< parameters.ruby_version >>
11
- - image: consul:1.3.0
12
- - image: vault:0.11.3
13
- environment:
14
- - VAULT_DEV_ROOT_TOKEN_ID=94e1a9ed-5d72-5677-27ab-ebc485cca368
15
- # - SKIP_SETCAP=skip
16
- # cap_add:
17
- # - IPC_LOCK
18
-
19
- working_directory: ~/repo
20
-
21
- steps:
22
- - checkout
23
-
24
- - restore_cache:
25
- name: restore gem cache
26
- keys:
27
- - v1-bundle-<< parameters.ruby_version >>-{{ .Branch }}-{{ checksum "consult.gemspec" }}
28
- - v1-bundle-<< parameters.ruby_version >>-{{ .Branch }}-
29
- - v1-bundle-<< parameters.ruby_version >>-
30
-
31
- - run:
32
- name: install dependencies
33
- command: |
34
- bundle check --path ./vendor/bundle || bundle install --jobs=3 --retry=3 --path vendor/bundle
35
- bundle clean
36
-
37
- - save_cache:
38
- name: save gem cache
39
- paths:
40
- - ./vendor/bundle
41
- key: v1-bundle-<< parameters.ruby_version >>-{{ .Branch }}-{{ checksum "consult.gemspec" }}
42
-
43
- - run:
44
- name: setup fixture data
45
- command: |
46
- ./spec/support/populate_consul.sh
47
-
48
- - run:
49
- name: run tests
50
- command: |
51
- mkdir /tmp/test-results
52
-
53
- TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | \
54
- circleci tests split --split-by=timings)"
55
-
56
- bundle exec rspec \
57
- --format progress \
58
- --format RspecJunitFormatter \
59
- --out /tmp/test-results/rspec.xml \
60
- --format progress \
61
- $TEST_FILES
62
-
63
- - store_test_results:
64
- path: /tmp/test-results
65
-
66
- - store_artifacts:
67
- path: ./coverage
68
- destination: coverage
69
-
70
- workflows:
71
- test_supported_ruby_versions:
72
- jobs:
73
- - test:
74
- matrix:
75
- parameters:
76
- ruby_version:
77
- - '2.5'
78
- - '2.7'
79
- - '3.1'