dotenvx 4.0.3-aarch64-linux → 4.0.4-aarch64-linux
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/CHANGELOG.md +5 -1
- data/lib/dotenvx/dotenvx_native.so +0 -0
- data/lib/dotenvx/rails.rb +3 -0
- data/lib/dotenvx/version.rb +1 -1
- data/lib/dotenvx.rb +60 -27
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 175831972b38370f6dd9d99f66f4c290c6a8671bc19eb54a3feb5036f4ec1932
|
|
4
|
+
data.tar.gz: 21662fb9e6fa46ae773d1211b584cd27cd3bc8513d1a666fa20c0fd02557c034
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c77e0e64712d1b1bbbb6993d790b8b2b9d0cfdda7ce4e1154d5457559991f6150ee8d01fd337e1bea5f5235b77ea86962cb9e973a139d25c0081ee78a96c0d35
|
|
7
|
+
data.tar.gz: 593b316496aa977d8cd133ce203f9904ef4a571c4f651ea375feed11110ff652a315acecb001e1754534d7bc65143c17fe69cddd5c0aafac238fbacd4bab5524
|
data/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
-
## [Unreleased](https://github.com/dotenvx/dotenvx-ruby/compare/v4.0.
|
|
5
|
+
## [Unreleased](https://github.com/dotenvx/dotenvx-ruby/compare/v4.0.4...main)
|
|
6
|
+
|
|
7
|
+
## [4.0.4](https://github.com/dotenvx/dotenvx-ruby/compare/v4.0.3...v4.0.4)
|
|
8
|
+
|
|
9
|
+
- Report the unique variables injected from readable dotenv files.
|
|
6
10
|
|
|
7
11
|
## [4.0.0](https://github.com/dotenvx/dotenvx-ruby/compare/v0.0.2...v4.0.0)
|
|
8
12
|
|
|
Binary file
|
data/lib/dotenvx/rails.rb
CHANGED
data/lib/dotenvx/version.rb
CHANGED
data/lib/dotenvx.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require "dotenvx/version"
|
|
2
2
|
require "dotenvx/dotenvx_native"
|
|
3
3
|
require "json"
|
|
4
|
+
require "pathname"
|
|
4
5
|
|
|
5
6
|
module Dotenvx
|
|
6
7
|
class MissingKeys < RuntimeError
|
|
@@ -16,8 +17,14 @@ module Dotenvx
|
|
|
16
17
|
attr_accessor :instrumenter
|
|
17
18
|
|
|
18
19
|
def load(*filenames, overwrite: false, ignore: true)
|
|
19
|
-
env
|
|
20
|
-
|
|
20
|
+
env, injected_keys, loaded_paths = parse_files(
|
|
21
|
+
*filenames,
|
|
22
|
+
overwrite: overwrite,
|
|
23
|
+
ignore: ignore
|
|
24
|
+
)
|
|
25
|
+
changed = update(env, overwrite: overwrite)
|
|
26
|
+
log_injected(injected_keys, loaded_paths)
|
|
27
|
+
changed
|
|
21
28
|
end
|
|
22
29
|
|
|
23
30
|
def load!(*filenames)
|
|
@@ -35,31 +42,7 @@ module Dotenvx
|
|
|
35
42
|
alias overload! overwrite!
|
|
36
43
|
|
|
37
44
|
def parse(*filenames, overwrite: false, ignore: true)
|
|
38
|
-
filenames
|
|
39
|
-
filenames = filenames.flatten.reverse if overwrite
|
|
40
|
-
|
|
41
|
-
process_env = ENV.to_h
|
|
42
|
-
filenames.reduce({}) do |values, filename|
|
|
43
|
-
path = File.expand_path(filename)
|
|
44
|
-
begin
|
|
45
|
-
source = File.binread(path).sub(/\A\xEF\xBB\xBF/, "").force_encoding(Encoding::UTF_8)
|
|
46
|
-
rescue Errno::ENOENT, Errno::EISDIR
|
|
47
|
-
raise unless ignore
|
|
48
|
-
next values
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
parsed, = Native.parse_dotenv(JSON.generate(
|
|
52
|
-
source: source,
|
|
53
|
-
process_env: process_env,
|
|
54
|
-
overwrite: overwrite == true,
|
|
55
|
-
key_files: key_files(path)
|
|
56
|
-
))
|
|
57
|
-
parsed = parsed.to_h
|
|
58
|
-
process_env.merge!(parsed)
|
|
59
|
-
values.merge!(parsed)
|
|
60
|
-
yield Environment.new(path, parsed) if block_given?
|
|
61
|
-
values
|
|
62
|
-
end
|
|
45
|
+
parse_files(*filenames, overwrite: overwrite, ignore: ignore).first
|
|
63
46
|
end
|
|
64
47
|
|
|
65
48
|
def update(env = {}, overwrite: false)
|
|
@@ -89,6 +72,56 @@ module Dotenvx
|
|
|
89
72
|
|
|
90
73
|
private
|
|
91
74
|
|
|
75
|
+
def parse_files(*filenames, overwrite: false, ignore: true)
|
|
76
|
+
filenames = [".env"] if filenames.empty?
|
|
77
|
+
filenames = filenames.flatten.reverse if overwrite
|
|
78
|
+
|
|
79
|
+
process_env = ENV.to_h
|
|
80
|
+
injected_keys = {}
|
|
81
|
+
loaded_paths = []
|
|
82
|
+
values = filenames.reduce({}) do |accumulator, filename|
|
|
83
|
+
path = File.expand_path(filename)
|
|
84
|
+
begin
|
|
85
|
+
source = File.binread(path).sub(/\A\xEF\xBB\xBF/, "").force_encoding(Encoding::UTF_8)
|
|
86
|
+
rescue Errno::ENOENT, Errno::EISDIR
|
|
87
|
+
raise unless ignore
|
|
88
|
+
next accumulator
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
parsed, injected = Native.parse_dotenv(JSON.generate(
|
|
92
|
+
source: source,
|
|
93
|
+
process_env: process_env,
|
|
94
|
+
overwrite: overwrite == true,
|
|
95
|
+
key_files: key_files(path)
|
|
96
|
+
))
|
|
97
|
+
parsed = parsed.to_h
|
|
98
|
+
injected.each { |key, _value| injected_keys[key] = true }
|
|
99
|
+
loaded_paths << path
|
|
100
|
+
process_env.merge!(parsed)
|
|
101
|
+
accumulator.merge!(parsed)
|
|
102
|
+
yield Environment.new(path, parsed) if block_given?
|
|
103
|
+
accumulator
|
|
104
|
+
end
|
|
105
|
+
[values, injected_keys.keys, loaded_paths]
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def log_injected(injected_keys, loaded_paths)
|
|
109
|
+
message = "⟐ injected env (#{injected_keys.length})"
|
|
110
|
+
unless loaded_paths.empty?
|
|
111
|
+
paths = loaded_paths.map { |path| readable_path(path) }
|
|
112
|
+
message = "#{message} from #{paths.join(", ")}"
|
|
113
|
+
end
|
|
114
|
+
warn message
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def readable_path(path)
|
|
118
|
+
pathname = Pathname.new(path)
|
|
119
|
+
relative = pathname.relative_path_from(Pathname.pwd).to_s
|
|
120
|
+
relative.start_with?("../") ? pathname.to_s : relative
|
|
121
|
+
rescue ArgumentError
|
|
122
|
+
pathname.to_s
|
|
123
|
+
end
|
|
124
|
+
|
|
92
125
|
def key_files(path)
|
|
93
126
|
candidates = ["#{path}.keys", File.join(File.dirname(path), ".env.keys")]
|
|
94
127
|
candidates.select { |candidate| File.file?(candidate) }
|