environment_helpers 1.5.0 → 1.6.1
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 +4 -4
- data/.bundle/config +2 -0
- data/.github/workflows/quality.yml +5 -7
- data/.github/workflows/rspec.yml +4 -13
- data/.gitignore +0 -1
- data/CHANGELOG.md +14 -0
- data/Steepfile +0 -8
- data/environment_helpers.gemspec +7 -6
- data/lib/environment_helpers/numeric_helpers.rb +13 -1
- data/lib/environment_helpers/string_helpers.rb +1 -0
- data/lib/environment_helpers/version.rb +1 -1
- metadata +18 -20
- data/.github/workflows/type_check.yml +0 -18
- data/Gemfile +0 -7
- data/sig/environment_helpers.rbs +0 -96
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1bd91d77fcc6e3a42c4c5a8c1fec17a9d6829b974b7377616bced1ef0cf7cfc
|
4
|
+
data.tar.gz: 828a4cfd5dec907ca7f8e694c7d30f963b9679a96bf063a0bcad29a607094f3f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71ec962fc48bb0780795ed5a5c1abc8829595ed810489721f6d94fd3f5c049a5efe79cf82f872422595e8179e2b2fb4c1e98bdf8d95bbfc067d41547b4193b1d
|
7
|
+
data.tar.gz: 2aa867aa7de1c8a35bb866123b99c6e9163b7159d0738c3c30ff45938d351ffaccea1e41b1782412c225ec42a87f4ad5d4c87d9bc0a3856e9b8106478c7e9bbe
|
data/.bundle/config
ADDED
@@ -6,6 +6,8 @@ permissions: write-all
|
|
6
6
|
jobs:
|
7
7
|
check:
|
8
8
|
runs-on: ubuntu-latest
|
9
|
+
env:
|
10
|
+
BUNDLE_GEMFILE: Gemfile.ruby3.3
|
9
11
|
steps:
|
10
12
|
- uses: actions/checkout@v4
|
11
13
|
with:
|
@@ -18,12 +20,8 @@ jobs:
|
|
18
20
|
- name: Set up Ruby
|
19
21
|
uses: ruby/setup-ruby@v1
|
20
22
|
with:
|
21
|
-
ruby-version: 3.
|
22
|
-
|
23
|
-
- name: Install gems
|
24
|
-
run: bundle install --jobs 4 --retry 3
|
23
|
+
ruby-version: 3.3
|
24
|
+
bundler-cache: true
|
25
25
|
|
26
26
|
- name: Run QuietQuality
|
27
|
-
run:
|
28
|
-
gem install quiet_quality standard rubocop
|
29
|
-
qq -C .quiet_quality.ci-cd.yml
|
27
|
+
run: bundle exec qq -C .quiet_quality.ci-cd.yml
|
data/.github/workflows/rspec.yml
CHANGED
@@ -8,9 +8,10 @@ jobs:
|
|
8
8
|
strategy:
|
9
9
|
fail-fast: false
|
10
10
|
matrix:
|
11
|
-
ruby-version: ['2.7', '3.0', '3.1', '3.2', '
|
11
|
+
ruby-version: ['2.7', '3.0', '3.1', '3.2', '3.3']
|
12
12
|
env:
|
13
|
-
|
13
|
+
SIMPLECOV: "enabled"
|
14
|
+
BUNDLE_GEMFILE: Gemfile.ruby${{ matrix.ruby-version }}
|
14
15
|
|
15
16
|
steps:
|
16
17
|
- uses: actions/checkout@v4
|
@@ -19,17 +20,7 @@ jobs:
|
|
19
20
|
uses: ruby/setup-ruby@v1
|
20
21
|
with:
|
21
22
|
ruby-version: ${{ matrix.ruby-version }}
|
22
|
-
|
23
|
-
- name: Cache gems
|
24
|
-
uses: actions/cache@v3
|
25
|
-
with:
|
26
|
-
path: vendor/bundle
|
27
|
-
key: ${{ runner.os }}-rspec-${{ matrix.ruby-version }}-${{ hashFiles('Gemfile.lock') }}
|
28
|
-
restore-keys:
|
29
|
-
${{ runner.os }}-rspec-${{ matrix.ruby-version }}-
|
30
|
-
|
31
|
-
- name: Install gems
|
32
|
-
run: bundle install --jobs 4 --retry 3
|
23
|
+
bundler-cache: true
|
33
24
|
|
34
25
|
- name: Run RSpec
|
35
26
|
run: bundle exec rspec
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## Relase 1.6.1
|
4
|
+
|
5
|
+
* Update all of the Gemfile(.lock) symlinks to actual file copies, for platform
|
6
|
+
compatibility
|
7
|
+
* Stop including Gemfiles and lockfiles in the built gem.
|
8
|
+
|
9
|
+
## Release 1.6.0
|
10
|
+
|
11
|
+
* Remove steep and the rbs types (#41)
|
12
|
+
* Check the default's type in StringHelpers, preventing
|
13
|
+
`ENV.string("FOO", default: 5)` (#38 fixes #33)
|
14
|
+
* Handle non-numeric values in `ENV.integer` in a more sensible way (#39 fixes #34)
|
15
|
+
* Split Gemfile out per supported ruby, and commit all of the resulting lockfiles.
|
16
|
+
|
3
17
|
## Release 1.5.0
|
4
18
|
|
5
19
|
* Add rbs/steep, and enforce types in CI (.rbs file is exported as part
|
data/Steepfile
CHANGED
data/environment_helpers.gemspec
CHANGED
@@ -22,18 +22,19 @@ Gem::Specification.new do |spec|
|
|
22
22
|
`git ls-files -z`
|
23
23
|
.split("\x0")
|
24
24
|
.reject { |f| f.start_with?("spec") }
|
25
|
+
.reject { |f| f.start_with?("Gemfile") }
|
25
26
|
end
|
26
27
|
|
27
28
|
spec.bindir = "bin"
|
28
29
|
spec.executables = []
|
29
30
|
spec.require_paths = ["lib"]
|
30
31
|
|
31
|
-
spec.add_development_dependency "rspec", "~> 3.
|
32
|
+
spec.add_development_dependency "rspec", "~> 3.13"
|
32
33
|
spec.add_development_dependency "simplecov", "~> 0.22.0"
|
33
34
|
spec.add_development_dependency "rspec-cover_it", "~> 0.1.0"
|
34
|
-
spec.add_development_dependency "pry", "~> 0.
|
35
|
-
spec.add_development_dependency "standard", "
|
36
|
-
spec.add_development_dependency "rubocop", "~> 1.
|
37
|
-
spec.add_development_dependency "quiet_quality", "~> 1.
|
38
|
-
spec.add_development_dependency "mdl", "~> 0.
|
35
|
+
spec.add_development_dependency "pry", "~> 0.15"
|
36
|
+
spec.add_development_dependency "standard", "= 1.37.0"
|
37
|
+
spec.add_development_dependency "rubocop", "~> 1.63"
|
38
|
+
spec.add_development_dependency "quiet_quality", "~> 1.5"
|
39
|
+
spec.add_development_dependency "mdl", "~> 0.13"
|
39
40
|
end
|
@@ -2,8 +2,20 @@ module EnvironmentHelpers
|
|
2
2
|
module NumericHelpers
|
3
3
|
def integer(name, default: nil, required: false)
|
4
4
|
check_default_type(:integer, default, Integer)
|
5
|
-
text = fetch_value(name, required: required)
|
5
|
+
text = fetch_value(name, required: required)&.strip
|
6
|
+
text = enforced_format(name: name, text: text, required: required)
|
6
7
|
text&.to_i || default
|
7
8
|
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def enforced_format(name:, text:, required:)
|
13
|
+
return nil unless text
|
14
|
+
return text if text.match?(/\A-?\d+\z/)
|
15
|
+
|
16
|
+
# Not a "correct" integer (we accept only limited forms here)
|
17
|
+
return nil unless required
|
18
|
+
fail(InvalidIntegerText, "The environment variable '#{name}' contains text that does not look like an integer")
|
19
|
+
end
|
8
20
|
end
|
9
21
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: environment_helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Mueller
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '3.
|
19
|
+
version: '3.13'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '3.
|
26
|
+
version: '3.13'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: simplecov
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,70 +58,70 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0.
|
61
|
+
version: '0.15'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0.
|
68
|
+
version: '0.15'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: standard
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 1.37.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 1.37.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rubocop
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '1.
|
89
|
+
version: '1.63'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '1.
|
96
|
+
version: '1.63'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: quiet_quality
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
103
|
+
version: '1.5'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.
|
110
|
+
version: '1.5'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: mdl
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0.
|
117
|
+
version: '0.13'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0.
|
124
|
+
version: '0.13'
|
125
125
|
description: |
|
126
126
|
Convenience helpers for more simply accessing data passed to applications through the
|
127
127
|
environment that may have types and/or defaults
|
@@ -131,9 +131,9 @@ executables: []
|
|
131
131
|
extensions: []
|
132
132
|
extra_rdoc_files: []
|
133
133
|
files:
|
134
|
+
- ".bundle/config"
|
134
135
|
- ".github/workflows/quality.yml"
|
135
136
|
- ".github/workflows/rspec.yml"
|
136
|
-
- ".github/workflows/type_check.yml"
|
137
137
|
- ".gitignore"
|
138
138
|
- ".mdl_rules.rb"
|
139
139
|
- ".mdlrc"
|
@@ -142,7 +142,6 @@ files:
|
|
142
142
|
- ".rspec"
|
143
143
|
- ".rubocop.yml"
|
144
144
|
- CHANGELOG.md
|
145
|
-
- Gemfile
|
146
145
|
- LICENSE
|
147
146
|
- README.md
|
148
147
|
- Steepfile
|
@@ -157,7 +156,6 @@ files:
|
|
157
156
|
- lib/environment_helpers/range_helpers.rb
|
158
157
|
- lib/environment_helpers/string_helpers.rb
|
159
158
|
- lib/environment_helpers/version.rb
|
160
|
-
- sig/environment_helpers.rbs
|
161
159
|
homepage: https://github.com/nevinera/environment_helpers
|
162
160
|
licenses:
|
163
161
|
- MIT
|
@@ -179,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
177
|
- !ruby/object:Gem::Version
|
180
178
|
version: '0'
|
181
179
|
requirements: []
|
182
|
-
rubygems_version: 3.
|
180
|
+
rubygems_version: 3.5.22
|
183
181
|
signing_key:
|
184
182
|
specification_version: 4
|
185
183
|
summary: A set of convenience methods for accessing environment data
|
@@ -1,18 +0,0 @@
|
|
1
|
-
name: Steep Type Checking
|
2
|
-
|
3
|
-
on: push
|
4
|
-
|
5
|
-
jobs:
|
6
|
-
check:
|
7
|
-
runs-on: ubuntu-latest
|
8
|
-
steps:
|
9
|
-
- uses: actions/checkout@v4
|
10
|
-
|
11
|
-
- name: Set up ruby
|
12
|
-
uses: ruby/setup-ruby@v1
|
13
|
-
with:
|
14
|
-
ruby-version: 3.3
|
15
|
-
bundler-cache: true
|
16
|
-
|
17
|
-
- name: Run Steep
|
18
|
-
run: bundle exec steep check
|
data/Gemfile
DELETED
data/sig/environment_helpers.rbs
DELETED
@@ -1,96 +0,0 @@
|
|
1
|
-
module EnvironmentHelpers
|
2
|
-
VERSION: String
|
3
|
-
|
4
|
-
class Error < StandardError
|
5
|
-
end
|
6
|
-
|
7
|
-
class MissingVariableError < Error
|
8
|
-
end
|
9
|
-
|
10
|
-
class BadDefault < Error
|
11
|
-
end
|
12
|
-
|
13
|
-
class BadFormat < Error
|
14
|
-
end
|
15
|
-
|
16
|
-
class InvalidType < Error
|
17
|
-
end
|
18
|
-
|
19
|
-
class InvalidValue < Error
|
20
|
-
end
|
21
|
-
|
22
|
-
class InvalidBooleanText < InvalidValue
|
23
|
-
end
|
24
|
-
|
25
|
-
class InvalidRangeText < InvalidValue
|
26
|
-
end
|
27
|
-
|
28
|
-
class InvalidIntegerText < InvalidValue
|
29
|
-
end
|
30
|
-
|
31
|
-
class InvalidDateText < InvalidValue
|
32
|
-
end
|
33
|
-
|
34
|
-
class InvalidDateTimeText < InvalidValue
|
35
|
-
end
|
36
|
-
|
37
|
-
module AccessHelpers
|
38
|
-
# (Actually provided by ENV, which these are all extended onto)
|
39
|
-
def fetch: (String name) -> String?
|
40
|
-
| (String name, String? default) -> String?
|
41
|
-
|
42
|
-
private def fetch_value: (String name, required: bool) -> String?
|
43
|
-
private def check_default_type: (String | Symbol context, untyped value, *Class types) -> void
|
44
|
-
private def check_default_value: (String | Symbol context, untyped value, allow: Enumerable[untyped]) -> void
|
45
|
-
end
|
46
|
-
|
47
|
-
module FileHelpers : AccessHelpers
|
48
|
-
def file_path: (String name, default: String?, required: bool) -> Pathname?
|
49
|
-
end
|
50
|
-
|
51
|
-
module DatetimeHelpers : AccessHelpers
|
52
|
-
type date_time_result = DateTime? | Time?
|
53
|
-
def date: (String name, format: String, default: Date?, required: bool) -> Date?
|
54
|
-
def date_time: (String name, format: String | Symbol, default: date_time_result, required: bool) -> date_time_result
|
55
|
-
private def parse_date_from: (String? text, format: String) -> Date?
|
56
|
-
private def parse_date_time_from: (String? text, format: String | Symbol) -> DateTime?
|
57
|
-
private def iso8601_date_time: (String) -> DateTime?
|
58
|
-
private def unix_date_time: (String) -> DateTime?
|
59
|
-
private def strptime_date_time: (String, format: String) -> DateTime?
|
60
|
-
end
|
61
|
-
|
62
|
-
module NumericHelpers : AccessHelpers
|
63
|
-
def integer: (String name, default: Integer?, required: bool) -> Integer?
|
64
|
-
end
|
65
|
-
|
66
|
-
module RangeHelpers : AccessHelpers
|
67
|
-
def integer_range: (String name, default: Range[Integer]?, required: bool) -> Range[Integer]?
|
68
|
-
private def check_range_endpoint: (String | Symbol context, untyped value) -> void
|
69
|
-
private def parse_range_bound_from: (String?) -> Integer?
|
70
|
-
private def parse_range_from: (String) -> Range[Integer]?
|
71
|
-
end
|
72
|
-
|
73
|
-
module BooleanHelpers : AccessHelpers
|
74
|
-
BOOLEAN_VALUES: Set[bool]
|
75
|
-
def boolean: (String name, default: bool?, required: bool) -> boolish
|
76
|
-
private def truthy_text?: (String?) -> boolish
|
77
|
-
private def falsey_text?: (String?) -> boolish
|
78
|
-
private def truthy_strings: () -> Set[String]
|
79
|
-
private def falsey_strings: () -> Set[String]
|
80
|
-
end
|
81
|
-
|
82
|
-
module EnumerableHelpers : AccessHelpers
|
83
|
-
VALID_TYPES: Array[Symbol]
|
84
|
-
TYPE_HANDLERS: Hash[Symbol, Symbol]
|
85
|
-
TYPE_MAP: Hash[Symbol, Class]
|
86
|
-
type arrayable = Integer | String | Symbol
|
87
|
-
def array: (String key, of: Symbol, delimiter: String, default: Array[arrayable]?, required: bool) -> Array[arrayable]?
|
88
|
-
private def check_valid_data_type!: (Symbol) -> void
|
89
|
-
private def check_default_data_types!: (Array[arrayable]?, Symbol) -> void
|
90
|
-
end
|
91
|
-
|
92
|
-
module StringHelpers : AccessHelpers
|
93
|
-
def string: (String name, default: String?, required: bool) -> String?
|
94
|
-
def symbol: (String name, default: Symbol?, required: bool) -> Symbol?
|
95
|
-
end
|
96
|
-
end
|