dotenv-merge 1.0.2 → 7.1.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
- checksums.yaml.gz.sig +0 -0
- data/LICENSE.md +13 -0
- data/README.md +101 -515
- data/lib/dotenv/merge/backend.rb +70 -0
- data/lib/dotenv/merge/comment_tracker.rb +112 -0
- data/lib/dotenv/merge/debug_logger.rb +2 -2
- data/lib/dotenv/merge/env_line.rb +10 -14
- data/lib/dotenv/merge/file_analysis.rb +135 -24
- data/lib/dotenv/merge/freeze_node.rb +1 -1
- data/lib/dotenv/merge/merge_result.rb +6 -6
- data/lib/dotenv/merge/smart_merger.rb +360 -137
- data/lib/dotenv/merge/version.rb +5 -4
- data/lib/dotenv/merge.rb +22 -18
- data/lib/dotenv-merge.rb +9 -1
- data/sig/dotenv/merge.rbs +3 -207
- data.tar.gz.sig +0 -0
- metadata +114 -76
- metadata.gz.sig +0 -0
- data/CHANGELOG.md +0 -95
- data/CITATION.cff +0 -20
- data/CODE_OF_CONDUCT.md +0 -134
- data/CONTRIBUTING.md +0 -227
- data/FUNDING.md +0 -74
- data/LICENSE.txt +0 -21
- data/REEK +0 -0
- data/RUBOCOP.md +0 -71
- data/SECURITY.md +0 -21
- data/sig/dotenv/merge/env_line.rbs +0 -90
data/lib/dotenv-merge.rb
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
# For technical reasons, if we move to Zeitwerk, this cannot be require_relative.
|
|
2
4
|
# See: https://github.com/fxn/zeitwerk#for_gem_extension
|
|
3
5
|
# Hook for other libraries to load this library (e.g. via bundler)
|
|
4
|
-
require
|
|
6
|
+
require 'dotenv/merge'
|
|
7
|
+
require 'version_gem'
|
|
8
|
+
require_relative 'dotenv/merge/version'
|
|
9
|
+
|
|
10
|
+
Dotenv::Merge::Version.class_eval do
|
|
11
|
+
extend VersionGem::Basic
|
|
12
|
+
end
|
data/sig/dotenv/merge.rbs
CHANGED
|
@@ -1,212 +1,8 @@
|
|
|
1
|
-
# Type signatures for dotenv-merge gem
|
|
2
|
-
# Smart merge for .env files using line-based analysis
|
|
3
|
-
|
|
4
1
|
module Dotenv
|
|
5
2
|
module Merge
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
# Base error class for dotenv-merge
|
|
9
|
-
class Error < StandardError
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
# Raised when the template file cannot be parsed
|
|
13
|
-
class TemplateParseError < Error
|
|
14
|
-
attr_reader errors: Array[String]
|
|
15
|
-
attr_reader content: String?
|
|
16
|
-
|
|
17
|
-
def initialize: (Array[String] errors, ?content: String?) -> void
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# Raised when the destination file cannot be parsed
|
|
21
|
-
class DestinationParseError < Error
|
|
22
|
-
attr_reader errors: Array[String]
|
|
23
|
-
attr_reader content: String?
|
|
24
|
-
|
|
25
|
-
def initialize: (Array[String] errors, ?content: String?) -> void
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Debug logging utility for Dotenv::Merge
|
|
29
|
-
module DebugLogger
|
|
30
|
-
extend Ast::Merge::DebugLogger
|
|
31
|
-
|
|
32
|
-
def self.env_var_name: () -> String
|
|
33
|
-
def self.env_var_name=: (String name) -> String
|
|
34
|
-
def self.log_prefix: () -> String
|
|
35
|
-
def self.log_prefix=: (String prefix) -> String
|
|
36
|
-
def self.enabled?: () -> bool
|
|
37
|
-
def self.debug: (String message, ?Hash[Symbol, untyped] context) -> void
|
|
38
|
-
def self.info: (String message) -> void
|
|
39
|
-
def self.warning: (String message) -> void
|
|
40
|
-
def self.time: [T] (String operation) { () -> T } -> T
|
|
41
|
-
def self.extract_node_info: (untyped node) -> Hash[Symbol, untyped]
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# Represents a single line in a dotenv file
|
|
45
|
-
class EnvLine
|
|
46
|
-
attr_reader line_number: Integer
|
|
47
|
-
attr_reader raw: String
|
|
48
|
-
attr_reader key: String?
|
|
49
|
-
attr_reader value: String?
|
|
50
|
-
attr_reader comment: String?
|
|
51
|
-
|
|
52
|
-
def initialize: (
|
|
53
|
-
Integer line_number,
|
|
54
|
-
String raw,
|
|
55
|
-
?key: String?,
|
|
56
|
-
?value: String?,
|
|
57
|
-
?comment: String?
|
|
58
|
-
) -> void
|
|
59
|
-
|
|
60
|
-
def assignment?: () -> bool
|
|
61
|
-
def comment?: () -> bool
|
|
62
|
-
def blank?: () -> bool
|
|
63
|
-
def signature: () -> Array[Symbol | String]
|
|
64
|
-
def start_line: () -> Integer
|
|
65
|
-
def end_line: () -> Integer
|
|
66
|
-
def location: () -> Ast::Merge::FreezeNode::Location
|
|
67
|
-
def freeze_node?: () -> bool
|
|
68
|
-
def slice: () -> String
|
|
69
|
-
def to_s: () -> String
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
# Represents a freeze block in a dotenv file
|
|
73
|
-
class FreezeNode < Ast::Merge::FreezeNode
|
|
74
|
-
InvalidStructureError: singleton(Ast::Merge::FreezeNode::InvalidStructureError)
|
|
75
|
-
Location: singleton(Ast::Merge::FreezeNode::Location)
|
|
76
|
-
|
|
77
|
-
attr_reader analysis: FileAnalysis
|
|
78
|
-
attr_reader lines: Array[EnvLine]
|
|
79
|
-
attr_reader reason: String?
|
|
80
|
-
|
|
81
|
-
def initialize: (
|
|
82
|
-
start_line: Integer,
|
|
83
|
-
end_line: Integer,
|
|
84
|
-
analysis: FileAnalysis,
|
|
85
|
-
?lines: Array[EnvLine]?,
|
|
86
|
-
?reason: String?,
|
|
87
|
-
?pattern_type: Symbol
|
|
88
|
-
) -> void
|
|
89
|
-
|
|
90
|
-
def content: () -> String
|
|
91
|
-
def signature: () -> Array[Symbol | String]
|
|
92
|
-
def env_lines: () -> Array[EnvLine]
|
|
93
|
-
def assignment?: () -> bool
|
|
94
|
-
def comment?: () -> bool
|
|
95
|
-
def slice: () -> String
|
|
96
|
-
def inspect: () -> String
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
# File analysis for dotenv files
|
|
100
|
-
class FileAnalysis
|
|
101
|
-
include Ast::Merge::FileAnalysisBase
|
|
102
|
-
|
|
103
|
-
DEFAULT_FREEZE_TOKEN: String
|
|
104
|
-
|
|
105
|
-
attr_reader source: String
|
|
106
|
-
attr_reader lines: Array[EnvLine]
|
|
107
|
-
attr_reader freeze_token: String
|
|
108
|
-
attr_reader signature_generator: (^(EnvLine) -> Array[Symbol | String]?)?
|
|
109
|
-
attr_reader statements: Array[EnvLine | FreezeNode]
|
|
110
|
-
attr_reader freeze_blocks: Array[FreezeNode]
|
|
111
|
-
|
|
112
|
-
def initialize: (
|
|
113
|
-
String source,
|
|
114
|
-
?freeze_token: String,
|
|
115
|
-
?signature_generator: (^(EnvLine) -> Array[Symbol | String]?)?
|
|
116
|
-
) -> void
|
|
117
|
-
|
|
118
|
-
def valid?: () -> bool
|
|
119
|
-
def nodes: () -> Array[EnvLine | FreezeNode]
|
|
120
|
-
def assignment_lines: () -> Array[EnvLine]
|
|
121
|
-
def line_at: (Integer line_number) -> String?
|
|
122
|
-
def normalized_line: (Integer line_num) -> String?
|
|
123
|
-
def in_freeze_block?: (Integer line_num) -> bool
|
|
124
|
-
def freeze_block_at: (Integer line_num) -> FreezeNode?
|
|
125
|
-
def signature_at: (Integer index) -> Array[Symbol | String]?
|
|
126
|
-
def generate_signature: (EnvLine | FreezeNode node) -> Array[Symbol | String]?
|
|
127
|
-
def compute_node_signature: (untyped node) -> Array[Symbol | String]?
|
|
128
|
-
|
|
129
|
-
private
|
|
130
|
-
|
|
131
|
-
def parse_lines: () -> Array[EnvLine]
|
|
132
|
-
def extract_freeze_blocks: () -> Array[FreezeNode]
|
|
133
|
-
def integrate_lines_and_freeze_blocks: () -> Array[EnvLine | FreezeNode]
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
# Result of a merge operation
|
|
137
|
-
class MergeResult < Ast::Merge::MergeResult
|
|
138
|
-
DECISION_KEPT_TEMPLATE: Symbol
|
|
139
|
-
DECISION_KEPT_DEST: Symbol
|
|
140
|
-
DECISION_MERGED: Symbol
|
|
141
|
-
DECISION_ADDED: Symbol
|
|
142
|
-
DECISION_FREEZE_BLOCK: Symbol
|
|
143
|
-
|
|
144
|
-
attr_reader template_analysis: FileAnalysis
|
|
145
|
-
attr_reader dest_analysis: FileAnalysis
|
|
146
|
-
attr_reader lines: Array[String]
|
|
147
|
-
attr_reader provenance: Array[Hash[Symbol, untyped]]
|
|
148
|
-
attr_reader decisions: Array[Hash[Symbol, untyped]]
|
|
149
|
-
|
|
150
|
-
def initialize: (
|
|
151
|
-
?template_analysis: FileAnalysis?,
|
|
152
|
-
?dest_analysis: FileAnalysis?,
|
|
153
|
-
?conflicts: Array[Hash[Symbol, untyped]],
|
|
154
|
-
?frozen_blocks: Array[FreezeNode],
|
|
155
|
-
?stats: Hash[Symbol, untyped]
|
|
156
|
-
) -> void
|
|
157
|
-
|
|
158
|
-
def add_line: (String line, Symbol origin, ?Integer? source_line) -> void
|
|
159
|
-
def add_env_line: (EnvLine env_line, Symbol decision) -> void
|
|
160
|
-
def add_freeze_block: (FreezeNode freeze_node) -> void
|
|
161
|
-
def to_s: () -> String
|
|
162
|
-
def to_dotenv: () -> String
|
|
163
|
-
def content: () -> Array[String]
|
|
164
|
-
def content_string: () -> String
|
|
165
|
-
def empty?: () -> bool
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
# Smart merger for dotenv files
|
|
169
|
-
class SmartMerger
|
|
170
|
-
include Ast::Merge::MergerConfig
|
|
171
|
-
|
|
172
|
-
attr_reader template_analysis: FileAnalysis
|
|
173
|
-
attr_reader dest_analysis: FileAnalysis
|
|
174
|
-
attr_reader signature_match_preference: (Symbol | Hash[Symbol, Symbol])
|
|
175
|
-
attr_reader add_template_only_nodes: bool
|
|
176
|
-
|
|
177
|
-
def initialize: (
|
|
178
|
-
String template_content,
|
|
179
|
-
String dest_content,
|
|
180
|
-
?signature_match_preference: (Symbol | Hash[Symbol, Symbol]),
|
|
181
|
-
?add_template_only_nodes: bool,
|
|
182
|
-
?freeze_token: String,
|
|
183
|
-
?signature_generator: (^(EnvLine) -> Array[Symbol | String]?)?,
|
|
184
|
-
?node_splitter: Hash[Symbol, untyped]?
|
|
185
|
-
) -> void
|
|
186
|
-
|
|
187
|
-
def merge: () -> MergeResult
|
|
188
|
-
|
|
189
|
-
private
|
|
190
|
-
|
|
191
|
-
def perform_merge: () -> MergeResult
|
|
192
|
-
def merge_lines: (MergeResult result) -> void
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
# Conflict resolver for dotenv merges
|
|
196
|
-
class ConflictResolver
|
|
197
|
-
attr_reader template_analysis: FileAnalysis
|
|
198
|
-
attr_reader dest_analysis: FileAnalysis
|
|
199
|
-
attr_reader signature_match_preference: (Symbol | Hash[Symbol, Symbol])
|
|
200
|
-
attr_reader add_template_only_nodes: bool
|
|
201
|
-
|
|
202
|
-
def initialize: (
|
|
203
|
-
FileAnalysis template_analysis,
|
|
204
|
-
FileAnalysis dest_analysis,
|
|
205
|
-
?signature_match_preference: (Symbol | Hash[Symbol, Symbol]),
|
|
206
|
-
?add_template_only_nodes: bool
|
|
207
|
-
) -> void
|
|
208
|
-
|
|
209
|
-
def resolve: (untyped boundary, MergeResult result) -> void
|
|
3
|
+
module Version
|
|
4
|
+
VERSION: String
|
|
210
5
|
end
|
|
6
|
+
VERSION: String
|
|
211
7
|
end
|
|
212
8
|
end
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dotenv-merge
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 7.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -38,45 +38,47 @@ cert_chain:
|
|
|
38
38
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
39
39
|
dependencies:
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
|
-
name:
|
|
41
|
+
name: ast-merge
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
|
-
- -
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: '5.0'
|
|
47
|
-
- - ">="
|
|
44
|
+
- - '='
|
|
48
45
|
- !ruby/object:Gem::Version
|
|
49
|
-
version:
|
|
46
|
+
version: 7.1.1
|
|
50
47
|
type: :runtime
|
|
51
48
|
prerelease: false
|
|
52
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
53
50
|
requirements:
|
|
54
|
-
- -
|
|
55
|
-
- !ruby/object:Gem::Version
|
|
56
|
-
version: '5.0'
|
|
57
|
-
- - ">="
|
|
51
|
+
- - '='
|
|
58
52
|
- !ruby/object:Gem::Version
|
|
59
|
-
version:
|
|
53
|
+
version: 7.1.1
|
|
60
54
|
- !ruby/object:Gem::Dependency
|
|
61
|
-
name:
|
|
55
|
+
name: plain-merge
|
|
62
56
|
requirement: !ruby/object:Gem::Requirement
|
|
63
57
|
requirements:
|
|
64
|
-
- -
|
|
65
|
-
- !ruby/object:Gem::Version
|
|
66
|
-
version: '4.0'
|
|
67
|
-
- - ">="
|
|
58
|
+
- - '='
|
|
68
59
|
- !ruby/object:Gem::Version
|
|
69
|
-
version:
|
|
60
|
+
version: 7.1.1
|
|
70
61
|
type: :runtime
|
|
71
62
|
prerelease: false
|
|
72
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
73
64
|
requirements:
|
|
74
|
-
- -
|
|
65
|
+
- - '='
|
|
75
66
|
- !ruby/object:Gem::Version
|
|
76
|
-
version:
|
|
77
|
-
|
|
67
|
+
version: 7.1.1
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: tree_haver
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - '='
|
|
78
73
|
- !ruby/object:Gem::Version
|
|
79
|
-
version:
|
|
74
|
+
version: 7.1.1
|
|
75
|
+
type: :runtime
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - '='
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: 7.1.1
|
|
80
82
|
- !ruby/object:Gem::Dependency
|
|
81
83
|
name: version_gem
|
|
82
84
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -86,7 +88,7 @@ dependencies:
|
|
|
86
88
|
version: '1.1'
|
|
87
89
|
- - ">="
|
|
88
90
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: 1.1.
|
|
91
|
+
version: 1.1.15
|
|
90
92
|
type: :runtime
|
|
91
93
|
prerelease: false
|
|
92
94
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -96,35 +98,41 @@ dependencies:
|
|
|
96
98
|
version: '1.1'
|
|
97
99
|
- - ">="
|
|
98
100
|
- !ruby/object:Gem::Version
|
|
99
|
-
version: 1.1.
|
|
101
|
+
version: 1.1.15
|
|
100
102
|
- !ruby/object:Gem::Dependency
|
|
101
103
|
name: kettle-dev
|
|
102
104
|
requirement: !ruby/object:Gem::Requirement
|
|
103
105
|
requirements:
|
|
104
106
|
- - "~>"
|
|
105
107
|
- !ruby/object:Gem::Version
|
|
106
|
-
version: '
|
|
108
|
+
version: '2.5'
|
|
109
|
+
- - ">="
|
|
110
|
+
- !ruby/object:Gem::Version
|
|
111
|
+
version: 2.5.17
|
|
107
112
|
type: :development
|
|
108
113
|
prerelease: false
|
|
109
114
|
version_requirements: !ruby/object:Gem::Requirement
|
|
110
115
|
requirements:
|
|
111
116
|
- - "~>"
|
|
112
117
|
- !ruby/object:Gem::Version
|
|
113
|
-
version: '
|
|
118
|
+
version: '2.5'
|
|
119
|
+
- - ">="
|
|
120
|
+
- !ruby/object:Gem::Version
|
|
121
|
+
version: 2.5.17
|
|
114
122
|
- !ruby/object:Gem::Dependency
|
|
115
123
|
name: bundler-audit
|
|
116
124
|
requirement: !ruby/object:Gem::Requirement
|
|
117
125
|
requirements:
|
|
118
126
|
- - "~>"
|
|
119
127
|
- !ruby/object:Gem::Version
|
|
120
|
-
version: 0.9.
|
|
128
|
+
version: 0.9.3
|
|
121
129
|
type: :development
|
|
122
130
|
prerelease: false
|
|
123
131
|
version_requirements: !ruby/object:Gem::Requirement
|
|
124
132
|
requirements:
|
|
125
133
|
- - "~>"
|
|
126
134
|
- !ruby/object:Gem::Version
|
|
127
|
-
version: 0.9.
|
|
135
|
+
version: 0.9.3
|
|
128
136
|
- !ruby/object:Gem::Dependency
|
|
129
137
|
name: rake
|
|
130
138
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -159,40 +167,86 @@ dependencies:
|
|
|
159
167
|
- - ">="
|
|
160
168
|
- !ruby/object:Gem::Version
|
|
161
169
|
version: 1.0.4
|
|
170
|
+
- !ruby/object:Gem::Dependency
|
|
171
|
+
name: anonymous_loader
|
|
172
|
+
requirement: !ruby/object:Gem::Requirement
|
|
173
|
+
requirements:
|
|
174
|
+
- - "~>"
|
|
175
|
+
- !ruby/object:Gem::Version
|
|
176
|
+
version: '0.1'
|
|
177
|
+
- - ">="
|
|
178
|
+
- !ruby/object:Gem::Version
|
|
179
|
+
version: 0.1.3
|
|
180
|
+
type: :development
|
|
181
|
+
prerelease: false
|
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
183
|
+
requirements:
|
|
184
|
+
- - "~>"
|
|
185
|
+
- !ruby/object:Gem::Version
|
|
186
|
+
version: '0.1'
|
|
187
|
+
- - ">="
|
|
188
|
+
- !ruby/object:Gem::Version
|
|
189
|
+
version: 0.1.3
|
|
162
190
|
- !ruby/object:Gem::Dependency
|
|
163
191
|
name: appraisal2
|
|
164
192
|
requirement: !ruby/object:Gem::Requirement
|
|
165
193
|
requirements:
|
|
166
194
|
- - "~>"
|
|
167
195
|
- !ruby/object:Gem::Version
|
|
168
|
-
version: '3.
|
|
196
|
+
version: '3.2'
|
|
197
|
+
- - ">="
|
|
198
|
+
- !ruby/object:Gem::Version
|
|
199
|
+
version: 3.2.0
|
|
169
200
|
type: :development
|
|
170
201
|
prerelease: false
|
|
171
202
|
version_requirements: !ruby/object:Gem::Requirement
|
|
172
203
|
requirements:
|
|
173
204
|
- - "~>"
|
|
174
205
|
- !ruby/object:Gem::Version
|
|
175
|
-
version: '3.
|
|
206
|
+
version: '3.2'
|
|
207
|
+
- - ">="
|
|
208
|
+
- !ruby/object:Gem::Version
|
|
209
|
+
version: 3.2.0
|
|
176
210
|
- !ruby/object:Gem::Dependency
|
|
177
211
|
name: kettle-test
|
|
178
212
|
requirement: !ruby/object:Gem::Requirement
|
|
179
213
|
requirements:
|
|
180
214
|
- - "~>"
|
|
181
215
|
- !ruby/object:Gem::Version
|
|
182
|
-
version: '
|
|
216
|
+
version: '2.0'
|
|
183
217
|
- - ">="
|
|
184
218
|
- !ruby/object:Gem::Version
|
|
185
|
-
version:
|
|
219
|
+
version: 2.0.19
|
|
186
220
|
type: :development
|
|
187
221
|
prerelease: false
|
|
188
222
|
version_requirements: !ruby/object:Gem::Requirement
|
|
189
223
|
requirements:
|
|
190
224
|
- - "~>"
|
|
191
225
|
- !ruby/object:Gem::Version
|
|
192
|
-
version: '
|
|
226
|
+
version: '2.0'
|
|
227
|
+
- - ">="
|
|
228
|
+
- !ruby/object:Gem::Version
|
|
229
|
+
version: 2.0.19
|
|
230
|
+
- !ruby/object:Gem::Dependency
|
|
231
|
+
name: turbo_tests2
|
|
232
|
+
requirement: !ruby/object:Gem::Requirement
|
|
233
|
+
requirements:
|
|
234
|
+
- - "~>"
|
|
235
|
+
- !ruby/object:Gem::Version
|
|
236
|
+
version: '3.2'
|
|
193
237
|
- - ">="
|
|
194
238
|
- !ruby/object:Gem::Version
|
|
195
|
-
version:
|
|
239
|
+
version: 3.2.4
|
|
240
|
+
type: :development
|
|
241
|
+
prerelease: false
|
|
242
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
243
|
+
requirements:
|
|
244
|
+
- - "~>"
|
|
245
|
+
- !ruby/object:Gem::Version
|
|
246
|
+
version: '3.2'
|
|
247
|
+
- - ">="
|
|
248
|
+
- !ruby/object:Gem::Version
|
|
249
|
+
version: 3.2.4
|
|
196
250
|
- !ruby/object:Gem::Dependency
|
|
197
251
|
name: ruby-progressbar
|
|
198
252
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -216,7 +270,7 @@ dependencies:
|
|
|
216
270
|
version: '1.0'
|
|
217
271
|
- - ">="
|
|
218
272
|
- !ruby/object:Gem::Version
|
|
219
|
-
version: 1.0.
|
|
273
|
+
version: 1.0.8
|
|
220
274
|
type: :development
|
|
221
275
|
prerelease: false
|
|
222
276
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -226,58 +280,41 @@ dependencies:
|
|
|
226
280
|
version: '1.0'
|
|
227
281
|
- - ">="
|
|
228
282
|
- !ruby/object:Gem::Version
|
|
229
|
-
version: 1.0.
|
|
283
|
+
version: 1.0.8
|
|
230
284
|
- !ruby/object:Gem::Dependency
|
|
231
285
|
name: gitmoji-regex
|
|
232
286
|
requirement: !ruby/object:Gem::Requirement
|
|
233
287
|
requirements:
|
|
234
288
|
- - "~>"
|
|
235
289
|
- !ruby/object:Gem::Version
|
|
236
|
-
version: '
|
|
290
|
+
version: '2.0'
|
|
237
291
|
- - ">="
|
|
238
292
|
- !ruby/object:Gem::Version
|
|
239
|
-
version:
|
|
293
|
+
version: 2.0.11
|
|
240
294
|
type: :development
|
|
241
295
|
prerelease: false
|
|
242
296
|
version_requirements: !ruby/object:Gem::Requirement
|
|
243
297
|
requirements:
|
|
244
298
|
- - "~>"
|
|
245
299
|
- !ruby/object:Gem::Version
|
|
246
|
-
version: '
|
|
300
|
+
version: '2.0'
|
|
247
301
|
- - ">="
|
|
248
302
|
- !ruby/object:Gem::Version
|
|
249
|
-
version:
|
|
250
|
-
description: "☯️ Dotenv
|
|
251
|
-
|
|
252
|
-
configuration. Perfect for merging environment templates with local overrides."
|
|
303
|
+
version: 2.0.11
|
|
304
|
+
description: "☯️ Dotenv assignment, comment, freeze-block, and template merge behavior
|
|
305
|
+
for Structured Merge."
|
|
253
306
|
email:
|
|
254
307
|
- floss@galtzo.com
|
|
255
308
|
executables: []
|
|
256
309
|
extensions: []
|
|
257
|
-
extra_rdoc_files:
|
|
258
|
-
- CHANGELOG.md
|
|
259
|
-
- CITATION.cff
|
|
260
|
-
- CODE_OF_CONDUCT.md
|
|
261
|
-
- CONTRIBUTING.md
|
|
262
|
-
- FUNDING.md
|
|
263
|
-
- LICENSE.txt
|
|
264
|
-
- README.md
|
|
265
|
-
- REEK
|
|
266
|
-
- RUBOCOP.md
|
|
267
|
-
- SECURITY.md
|
|
310
|
+
extra_rdoc_files: []
|
|
268
311
|
files:
|
|
269
|
-
-
|
|
270
|
-
- CITATION.cff
|
|
271
|
-
- CODE_OF_CONDUCT.md
|
|
272
|
-
- CONTRIBUTING.md
|
|
273
|
-
- FUNDING.md
|
|
274
|
-
- LICENSE.txt
|
|
312
|
+
- LICENSE.md
|
|
275
313
|
- README.md
|
|
276
|
-
- REEK
|
|
277
|
-
- RUBOCOP.md
|
|
278
|
-
- SECURITY.md
|
|
279
314
|
- lib/dotenv-merge.rb
|
|
280
315
|
- lib/dotenv/merge.rb
|
|
316
|
+
- lib/dotenv/merge/backend.rb
|
|
317
|
+
- lib/dotenv/merge/comment_tracker.rb
|
|
281
318
|
- lib/dotenv/merge/debug_logger.rb
|
|
282
319
|
- lib/dotenv/merge/env_line.rb
|
|
283
320
|
- lib/dotenv/merge/file_analysis.rb
|
|
@@ -286,24 +323,25 @@ files:
|
|
|
286
323
|
- lib/dotenv/merge/smart_merger.rb
|
|
287
324
|
- lib/dotenv/merge/version.rb
|
|
288
325
|
- sig/dotenv/merge.rbs
|
|
289
|
-
|
|
290
|
-
homepage: https://github.com/kettle-rb/dotenv-merge
|
|
326
|
+
homepage: https://github.com/structuredmerge/structuredmerge-ruby
|
|
291
327
|
licenses:
|
|
292
|
-
-
|
|
328
|
+
- AGPL-3.0-only
|
|
329
|
+
- PolyForm-Small-Business-1.0.0
|
|
293
330
|
metadata:
|
|
294
|
-
homepage_uri: https://
|
|
295
|
-
source_code_uri: https://github.com/
|
|
296
|
-
changelog_uri: https://github.com/
|
|
297
|
-
bug_tracker_uri: https://github.com/
|
|
298
|
-
documentation_uri: https://www.rubydoc.info/gems/dotenv-merge/1.
|
|
331
|
+
homepage_uri: https://structuredmerge.org
|
|
332
|
+
source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.1
|
|
333
|
+
changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.1/CHANGELOG.md
|
|
334
|
+
bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
|
|
335
|
+
documentation_uri: https://www.rubydoc.info/gems/dotenv-merge/7.1.1
|
|
299
336
|
funding_uri: https://github.com/sponsors/pboling
|
|
300
|
-
wiki_uri: https://github.com/
|
|
337
|
+
wiki_uri: https://github.com/structuredmerge/structuredmerge-ruby/wiki
|
|
301
338
|
news_uri: https://www.railsbling.com/tags/dotenv-merge
|
|
302
339
|
discord_uri: https://discord.gg/3qme4XHNKN
|
|
340
|
+
mailing_list_uri: https://www.rubyforum.org/tag/structuredmerge
|
|
303
341
|
rubygems_mfa_required: 'true'
|
|
304
342
|
rdoc_options:
|
|
305
343
|
- "--title"
|
|
306
|
-
- dotenv-merge - ☯️
|
|
344
|
+
- dotenv-merge - ☯️ Structured Merge dotenv analysis and merge for Ruby
|
|
307
345
|
- "--main"
|
|
308
346
|
- README.md
|
|
309
347
|
- "--exclude"
|
|
@@ -317,14 +355,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
317
355
|
requirements:
|
|
318
356
|
- - ">="
|
|
319
357
|
- !ruby/object:Gem::Version
|
|
320
|
-
version:
|
|
358
|
+
version: 4.0.0
|
|
321
359
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
322
360
|
requirements:
|
|
323
361
|
- - ">="
|
|
324
362
|
- !ruby/object:Gem::Version
|
|
325
363
|
version: '0'
|
|
326
364
|
requirements: []
|
|
327
|
-
rubygems_version: 4.0.
|
|
365
|
+
rubygems_version: 4.0.17
|
|
328
366
|
specification_version: 4
|
|
329
|
-
summary: "☯️
|
|
367
|
+
summary: "☯️ Structured Merge dotenv analysis and merge for Ruby"
|
|
330
368
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
[![SemVer 2.0.0][📌semver-img]][📌semver] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog]
|
|
4
|
-
|
|
5
|
-
All notable changes to this project will be documented in this file.
|
|
6
|
-
|
|
7
|
-
The format is based on [Keep a Changelog][📗keep-changelog],
|
|
8
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
|
9
|
-
and [yes][📌major-versions-not-sacred], platform and engine support are part of the [public API][📌semver-breaking].
|
|
10
|
-
Please file a bug if you notice a violation of semantic versioning.
|
|
11
|
-
|
|
12
|
-
[📌semver]: https://semver.org/spec/v2.0.0.html
|
|
13
|
-
[📌semver-img]: https://img.shields.io/badge/semver-2.0.0-FFDD67.svg?style=flat
|
|
14
|
-
[📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
|
|
15
|
-
[📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
|
|
16
|
-
[📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
|
|
17
|
-
[📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
|
|
18
|
-
|
|
19
|
-
## [Unreleased]
|
|
20
|
-
|
|
21
|
-
### Added
|
|
22
|
-
|
|
23
|
-
### Changed
|
|
24
|
-
|
|
25
|
-
### Deprecated
|
|
26
|
-
|
|
27
|
-
### Removed
|
|
28
|
-
|
|
29
|
-
### Fixed
|
|
30
|
-
|
|
31
|
-
### Security
|
|
32
|
-
|
|
33
|
-
## [1.0.2] - 2026-02-01
|
|
34
|
-
|
|
35
|
-
- TAG: [v1.0.2][1.0.2t]
|
|
36
|
-
- COVERAGE: 97.73% -- 345/353 lines in 8 files
|
|
37
|
-
- BRANCH COVERAGE: 83.06% -- 103/124 branches in 8 files
|
|
38
|
-
- 96.83% documented
|
|
39
|
-
|
|
40
|
-
### Added
|
|
41
|
-
|
|
42
|
-
- Utilizes `Ast::Merge::RSpec::MergeGemRegistry` when running RSpec tests
|
|
43
|
-
|
|
44
|
-
### Changed
|
|
45
|
-
|
|
46
|
-
- Documentation cleanup
|
|
47
|
-
- Upgrade to [ast-merge v4.0.5](https://github.com/kettle-rb/ast-merge/releases/tag/v4.0.5)
|
|
48
|
-
- Upgrade to [tree_haver v5.0.3](https://github.com/kettle-rb/tree_haver/releases/tag/v5.0.3)
|
|
49
|
-
|
|
50
|
-
## [1.0.1] - 2026-01-01
|
|
51
|
-
|
|
52
|
-
- TAG: [v1.0.1][1.0.1t]
|
|
53
|
-
- COVERAGE: 97.72% -- 343/351 lines in 8 files
|
|
54
|
-
- BRANCH COVERAGE: 83.61% -- 102/122 branches in 8 files
|
|
55
|
-
- 96.83% documented
|
|
56
|
-
|
|
57
|
-
### Added
|
|
58
|
-
|
|
59
|
-
- `node_typing` parameter for per-node-type merge preferences
|
|
60
|
-
- Enables `preference: { default: :destination, special_type: :template }` pattern
|
|
61
|
-
- Works with custom merge_types assigned via node_typing lambdas
|
|
62
|
-
- `match_refiner` parameter for fuzzy matching support
|
|
63
|
-
- `regions` and `region_placeholder` parameters for nested content merging
|
|
64
|
-
- `EnvLine#type` method returning `"env_line"` for TreeHaver::Node protocol compatibility
|
|
65
|
-
|
|
66
|
-
### Changed
|
|
67
|
-
|
|
68
|
-
- **SmartMerger**: Added `**options` for forward compatibility
|
|
69
|
-
- Accepts additional options that may be added to base class in future
|
|
70
|
-
- Passes all options through to `SmartMergerBase`
|
|
71
|
-
- **MergeResult**: Added `**options` for forward compatibility
|
|
72
|
-
- **BREAKING**: `SmartMerger` now inherits from `Ast::Merge::SmartMergerBase`
|
|
73
|
-
- Provides standardized options API consistent with all other `*-merge` gems
|
|
74
|
-
- All keyword arguments are now explicit (no more positional-only arguments)
|
|
75
|
-
- Gains automatic support for new SmartMergerBase features
|
|
76
|
-
- Renamed `EnvLine#type` attribute to `EnvLine#line_type` to avoid conflict with TreeHaver::Node protocol
|
|
77
|
-
|
|
78
|
-
## [1.0.0] - 2025-12-12
|
|
79
|
-
|
|
80
|
-
- TAG: [v1.0.0][1.0.0t]
|
|
81
|
-
- COVERAGE: 97.85% -- 319/326 lines in 8 files
|
|
82
|
-
- BRANCH COVERAGE: 82.69% -- 86/104 branches in 8 files
|
|
83
|
-
- 96.97% documented
|
|
84
|
-
|
|
85
|
-
### Added
|
|
86
|
-
|
|
87
|
-
- Initial release
|
|
88
|
-
|
|
89
|
-
[Unreleased]: https://github.com/kettle-rb/dotenv-merge/compare/v1.0.2...HEAD
|
|
90
|
-
[1.0.2]: https://github.com/kettle-rb/dotenv-merge/compare/v1.0.1...v1.0.2
|
|
91
|
-
[1.0.2t]: https://github.com/kettle-rb/dotenv-merge/releases/tag/v1.0.2
|
|
92
|
-
[1.0.1]: https://github.com/kettle-rb/dotenv-merge/compare/v1.0.0...v1.0.1
|
|
93
|
-
[1.0.1t]: https://github.com/kettle-rb/dotenv-merge/releases/tag/v1.0.1
|
|
94
|
-
[1.0.0]: https://github.com/kettle-rb/dotenv-merge/compare/a34c8f20c877a45d03b9f0b83b973614e123a92b...v1.0.0
|
|
95
|
-
[1.0.0t]: https://github.com/kettle-rb/dotenv-merge/tags/v1.0.0
|