environment_helpers 1.2.1 → 1.3.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 +4 -4
- data/README.md +6 -0
- data/lib/environment_helpers/datetime_helpers.rb +42 -0
- data/lib/environment_helpers/version.rb +1 -1
- data/lib/environment_helpers.rb +2 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c789efc6ec01f80dab6e39fcf2ae8c1941642b61751e8585ed4765e7679260c2
|
4
|
+
data.tar.gz: 29fab39b2237db66ef6d980880f606d4ec0ba4be4991ccb38a3aface1149d68f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 617d37082c5f021bbf1691332e4cade122014508394c8f6f3a8b6e80e20847a57d41793a1fbb99ff3f9ca15bfd5f86666ff8b72883643681f72341757f88043e
|
7
|
+
data.tar.gz: 040fc4d6d63f5306c96bdf39fd4814608912c23063b9ced4f101b9250c39cbbf0ebf93626e47d41813e8872bebc946dfcbd54d4003fcf994b711ba820c201672
|
data/README.md
CHANGED
@@ -38,6 +38,7 @@ ENV.integer_range("ID_RANGE", default: (500..6000))
|
|
38
38
|
ENV.integer("MAX_THREAD_COUNT", default: 5)
|
39
39
|
ENV.file_path("FILE_PATH", default: "/some/path", required: true)
|
40
40
|
ENV.date("SCHEDULED_DATE", required: true, format: "%Y-%m-%d")
|
41
|
+
ENV.date_time("RUN_AT", required: true, default: DateTime.now)
|
41
42
|
```
|
42
43
|
|
43
44
|
Each of the supplied methods takes a positional parameter for the name of the environment variable,
|
@@ -64,3 +65,8 @@ The available methods added to `ENV`:
|
|
64
65
|
which would parse a date like `2023-12-25`. It will handle invalid values (or format strings) like
|
65
66
|
the variable not being present, though if it's specified as `required`, you will see a different
|
66
67
|
exception in each case.
|
68
|
+
* `date_time` - produces a `DateTime` object, using either `DateTime.strptime` or `DateTime.iso8601`.
|
69
|
+
The default format is `:iso8601`, and `:unix` is also an allowed 'format'. But if it is supplied
|
70
|
+
as a _string_, it will be handled as a strptime format string (the `:unix` format is equivalent to
|
71
|
+
the format string `"%s"`). It handles invalid or unparseable values like `ENV.date` does, in that
|
72
|
+
they are treated as if not supplied.
|
@@ -12,6 +12,16 @@ module EnvironmentHelpers
|
|
12
12
|
fail(InvalidDateText, "Required date environment variable #{name} had inappropriate content '#{text}'")
|
13
13
|
end
|
14
14
|
|
15
|
+
def date_time(name, format: :iso8601, default: nil, required: false)
|
16
|
+
check_default_type(:date_time, default, DateTime)
|
17
|
+
text = fetch_value(name, required: required)
|
18
|
+
dt = parse_date_time_from(text, format: format)
|
19
|
+
|
20
|
+
return dt if dt
|
21
|
+
return default unless required
|
22
|
+
fail(InvalidDateTimeText, "Require date_time environment variable #{name} had inappropriate content '#{text}'")
|
23
|
+
end
|
24
|
+
|
15
25
|
private
|
16
26
|
|
17
27
|
def parse_date_from(text, format:)
|
@@ -20,5 +30,37 @@ module EnvironmentHelpers
|
|
20
30
|
rescue ArgumentError
|
21
31
|
nil
|
22
32
|
end
|
33
|
+
|
34
|
+
def parse_date_time_from(text, format:)
|
35
|
+
if text.nil?
|
36
|
+
nil
|
37
|
+
elsif format == :iso8601
|
38
|
+
iso8601_date_time(text)
|
39
|
+
elsif format == :unix
|
40
|
+
unix_date_time(text)
|
41
|
+
elsif format.is_a?(String)
|
42
|
+
strptime_date_time(text, format: format)
|
43
|
+
else
|
44
|
+
fail(BadFormat, "ENV.date_time requires either a strptime format string, :unix, or :iso8601")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def iso8601_date_time(text)
|
49
|
+
DateTime.iso8601(text)
|
50
|
+
rescue
|
51
|
+
nil
|
52
|
+
end
|
53
|
+
|
54
|
+
def unix_date_time(text)
|
55
|
+
DateTime.strptime(text, "%s")
|
56
|
+
rescue
|
57
|
+
nil
|
58
|
+
end
|
59
|
+
|
60
|
+
def strptime_date_time(text, format:)
|
61
|
+
DateTime.strptime(text, format)
|
62
|
+
rescue
|
63
|
+
nil
|
64
|
+
end
|
23
65
|
end
|
24
66
|
end
|
data/lib/environment_helpers.rb
CHANGED
@@ -14,12 +14,14 @@ module EnvironmentHelpers
|
|
14
14
|
Error = Class.new(::StandardError)
|
15
15
|
MissingVariableError = Class.new(Error)
|
16
16
|
BadDefault = Class.new(Error)
|
17
|
+
BadFormat = Class.new(Error)
|
17
18
|
|
18
19
|
InvalidValue = Class.new(Error)
|
19
20
|
InvalidBooleanText = Class.new(InvalidValue)
|
20
21
|
InvalidRangeText = Class.new(InvalidValue)
|
21
22
|
InvalidIntegerText = Class.new(InvalidValue)
|
22
23
|
InvalidDateText = Class.new(InvalidValue)
|
24
|
+
InvalidDateTimeText = Class.new(InvalidValue)
|
23
25
|
|
24
26
|
include AccessHelpers
|
25
27
|
include StringHelpers
|
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.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Mueller
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
128
|
- !ruby/object:Gem::Version
|
129
129
|
version: '0'
|
130
130
|
requirements: []
|
131
|
-
rubygems_version: 3.
|
131
|
+
rubygems_version: 3.1.6
|
132
132
|
signing_key:
|
133
133
|
specification_version: 4
|
134
134
|
summary: A set of convenience methods for accessing environment data
|