dotenvx 4.0.4-aarch64-linux → 4.0.5-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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 175831972b38370f6dd9d99f66f4c290c6a8671bc19eb54a3feb5036f4ec1932
4
- data.tar.gz: 21662fb9e6fa46ae773d1211b584cd27cd3bc8513d1a666fa20c0fd02557c034
3
+ metadata.gz: 41d8626e02c96be8c2520c2397dbb7e54698e08c65ae1b7ca892d68d37eb8825
4
+ data.tar.gz: 949ce0c60bd81a9739b23fe9600c518ae187798daf419767aa019b5a4d0947fd
5
5
  SHA512:
6
- metadata.gz: c77e0e64712d1b1bbbb6993d790b8b2b9d0cfdda7ce4e1154d5457559991f6150ee8d01fd337e1bea5f5235b77ea86962cb9e973a139d25c0081ee78a96c0d35
7
- data.tar.gz: 593b316496aa977d8cd133ce203f9904ef4a571c4f651ea375feed11110ff652a315acecb001e1754534d7bc65143c17fe69cddd5c0aafac238fbacd4bab5524
6
+ metadata.gz: 57eae63e7bd49277258140fc26a4111bdc669036d224178f37ac5d92cc720036fdcc443814f8efed5a9554263a5a9295ce6f1f76321a29c75eb6d58aa4c09d86
7
+ data.tar.gz: 74a5171428952ea3a53be3ec34be12763de19ef0d14b89f1cd32c294b68972f7168c0f6a913d68778173333fd74029c77c1a6106d7cb4fa37321bc2a7ed6bf3c
data/CHANGELOG.md CHANGED
@@ -2,7 +2,12 @@
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.4...main)
5
+ ## [Unreleased](https://github.com/dotenvx/dotenvx-ruby/compare/v4.0.5...main)
6
+
7
+ ## [4.0.5](https://github.com/dotenvx/dotenvx-ruby/compare/v4.0.4...v4.0.5)
8
+
9
+ - Continue after parse and decryption errors by default, with strict and
10
+ error-code ignore options for callers that need them.
6
11
 
7
12
  ## [4.0.4](https://github.com/dotenvx/dotenvx-ruby/compare/v4.0.3...v4.0.4)
8
13
 
Binary file
@@ -1,3 +1,3 @@
1
1
  module Dotenvx
2
- VERSION = "4.0.4"
2
+ VERSION = "4.0.5"
3
3
  end
data/lib/dotenvx.rb CHANGED
@@ -13,14 +13,24 @@ module Dotenvx
13
13
  end
14
14
  end
15
15
 
16
+ class ParseError < RuntimeError
17
+ attr_reader :code
18
+
19
+ def initialize(code, message)
20
+ @code = code
21
+ super(message)
22
+ end
23
+ end
24
+
16
25
  class << self
17
26
  attr_accessor :instrumenter
18
27
 
19
- def load(*filenames, overwrite: false, ignore: true)
28
+ def load(*filenames, overwrite: false, ignore: true, strict: false)
20
29
  env, injected_keys, loaded_paths = parse_files(
21
30
  *filenames,
22
31
  overwrite: overwrite,
23
- ignore: ignore
32
+ ignore: ignore,
33
+ strict: strict
24
34
  )
25
35
  changed = update(env, overwrite: overwrite)
26
36
  log_injected(injected_keys, loaded_paths)
@@ -28,7 +38,7 @@ module Dotenvx
28
38
  end
29
39
 
30
40
  def load!(*filenames)
31
- load(*filenames, ignore: false)
41
+ load(*filenames, ignore: false, strict: true)
32
42
  end
33
43
 
34
44
  def overwrite(*filenames)
@@ -37,12 +47,17 @@ module Dotenvx
37
47
  alias overload overwrite
38
48
 
39
49
  def overwrite!(*filenames)
40
- load(*filenames, overwrite: true, ignore: false)
50
+ load(*filenames, overwrite: true, ignore: false, strict: true)
41
51
  end
42
52
  alias overload! overwrite!
43
53
 
44
- def parse(*filenames, overwrite: false, ignore: true)
45
- parse_files(*filenames, overwrite: overwrite, ignore: ignore).first
54
+ def parse(*filenames, overwrite: false, ignore: true, strict: false)
55
+ parse_files(
56
+ *filenames,
57
+ overwrite: overwrite,
58
+ ignore: ignore,
59
+ strict: strict
60
+ ).first
46
61
  end
47
62
 
48
63
  def update(env = {}, overwrite: false)
@@ -72,7 +87,7 @@ module Dotenvx
72
87
 
73
88
  private
74
89
 
75
- def parse_files(*filenames, overwrite: false, ignore: true)
90
+ def parse_files(*filenames, overwrite: false, ignore: true, strict: false)
76
91
  filenames = [".env"] if filenames.empty?
77
92
  filenames = filenames.flatten.reverse if overwrite
78
93
 
@@ -84,16 +99,17 @@ module Dotenvx
84
99
  begin
85
100
  source = File.binread(path).sub(/\A\xEF\xBB\xBF/, "").force_encoding(Encoding::UTF_8)
86
101
  rescue Errno::ENOENT, Errno::EISDIR
87
- raise unless ignore
102
+ raise unless ignore_missing?(ignore)
88
103
  next accumulator
89
104
  end
90
105
 
91
- parsed, injected = Native.parse_dotenv(JSON.generate(
106
+ parsed, injected, errors = Native.parse_dotenv(JSON.generate(
92
107
  source: source,
93
108
  process_env: process_env,
94
109
  overwrite: overwrite == true,
95
110
  key_files: key_files(path)
96
111
  ))
112
+ handle_errors(errors, ignore: ignore, strict: strict)
97
113
  parsed = parsed.to_h
98
114
  injected.each { |key, _value| injected_keys[key] = true }
99
115
  loaded_paths << path
@@ -105,6 +121,21 @@ module Dotenvx
105
121
  [values, injected_keys.keys, loaded_paths]
106
122
  end
107
123
 
124
+ def handle_errors(errors, ignore:, strict:)
125
+ ignored_codes = Array(ignore).grep(String)
126
+ errors.each do |code, message|
127
+ next if ignored_codes.include?(code)
128
+
129
+ raise ParseError.new(code, message) if strict
130
+
131
+ warn "☠ #{message}"
132
+ end
133
+ end
134
+
135
+ def ignore_missing?(ignore)
136
+ ignore == true || Array(ignore).map(&:to_s).include?("MISSING_ENV_FILE")
137
+ end
138
+
108
139
  def log_injected(injected_keys, loaded_paths)
109
140
  message = "⟐ injected env (#{injected_keys.length})"
110
141
  unless loaded_paths.empty?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dotenvx
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.4
4
+ version: 4.0.5
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - motdotla