dotenv-init 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 997a16a8601fe23db03bf06da4681472f96b8fc2
4
+ data.tar.gz: 5099b8166736ec67344fd90f95ac6a7e14825220
5
+ SHA512:
6
+ metadata.gz: 9b2c7169a60b7e7b5e8cbebb9567691ac206ce85f7c2998202c82b80d35053b14d9ac0cba6c1f60ba21a0039959695c2394a04946e3d71f833978f3465fac667
7
+ data.tar.gz: 3b07f35dd6443bdd3b49b1a158214b451f827ce627bb04be29f5708def425b5d78d6a4324a3af628e509208f41fa9121e8ecc387895ba89e883017bc7b02ff41
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,614 @@
1
+ AllCops:
2
+ Exclude:
3
+ - "*.gemspec"
4
+
5
+ TargetRubyVersion: 2.3
6
+
7
+ Style/AccessorMethodName:
8
+ Description: Check the naming of accessor methods for get_/set_.
9
+ Enabled: false
10
+
11
+ Style/Alias:
12
+ Description: 'Use alias_method instead of alias.'
13
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#alias-method'
14
+ Enabled: false
15
+
16
+ Style/ArrayJoin:
17
+ Description: 'Use Array#join instead of Array#*.'
18
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#array-join'
19
+ Enabled: false
20
+
21
+ Style/AsciiComments:
22
+ Description: 'Use only ascii symbols in comments.'
23
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-comments'
24
+ Enabled: false
25
+
26
+ Style/AsciiIdentifiers:
27
+ Description: 'Use only ascii symbols in identifiers.'
28
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-identifiers'
29
+ Enabled: false
30
+
31
+ Style/Attr:
32
+ Description: 'Checks for uses of Module#attr.'
33
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr'
34
+ Enabled: false
35
+
36
+ Style/FrozenStringLiteralComment:
37
+ Enabled: false
38
+
39
+ Metrics/BlockNesting:
40
+ Description: 'Avoid excessive block nesting'
41
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count'
42
+ Enabled: false
43
+
44
+ Style/CaseEquality:
45
+ Description: 'Avoid explicit use of the case equality operator(===).'
46
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-case-equality'
47
+ Enabled: false
48
+
49
+ Style/CharacterLiteral:
50
+ Description: 'Checks for uses of character literals.'
51
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-character-literals'
52
+ Enabled: false
53
+
54
+ Style/ClassAndModuleChildren:
55
+ Description: 'Checks style of children classes and modules.'
56
+ Enabled: true
57
+ EnforcedStyle: nested
58
+
59
+ Metrics/ClassLength:
60
+ Description: 'Avoid classes longer than 100 lines of code.'
61
+ Enabled: false
62
+
63
+ Metrics/ModuleLength:
64
+ Description: 'Avoid modules longer than 100 lines of code.'
65
+ Enabled: false
66
+
67
+ Style/ClassVars:
68
+ Description: 'Avoid the use of class variables.'
69
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-class-vars'
70
+ Enabled: false
71
+
72
+ Style/CollectionMethods:
73
+ Enabled: true
74
+ PreferredMethods:
75
+ find: detect
76
+ inject: reduce
77
+ collect: map
78
+ find_all: select
79
+
80
+ Style/ColonMethodCall:
81
+ Description: 'Do not use :: for method call.'
82
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#double-colons'
83
+ Enabled: false
84
+
85
+ Style/CommentAnnotation:
86
+ Description: >-
87
+ Checks formatting of special comments
88
+ (TODO, FIXME, OPTIMIZE, HACK, REVIEW).
89
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#annotate-keywords'
90
+ Enabled: false
91
+
92
+ Metrics/CyclomaticComplexity:
93
+ Description: >-
94
+ A complexity metric that is strongly correlated to the number
95
+ of test cases needed to validate a method.
96
+ Enabled: false
97
+
98
+ Rails/Delegate:
99
+ Description: 'Prefer delegate method for delegations.'
100
+ Enabled: false
101
+
102
+ Style/DeprecatedHashMethods:
103
+ Description: 'Checks for use of deprecated Hash methods.'
104
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#hash-key'
105
+ Enabled: false
106
+
107
+ Style/Documentation:
108
+ Description: 'Document classes and non-namespace modules.'
109
+ Enabled: false
110
+
111
+ Style/DotPosition:
112
+ Description: 'Checks the position of the dot in multi-line method calls.'
113
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains'
114
+ EnforcedStyle: trailing
115
+
116
+ Style/DoubleNegation:
117
+ Description: 'Checks for uses of double negation (!!).'
118
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-bang-bang'
119
+ Enabled: false
120
+
121
+ Style/EachWithObject:
122
+ Description: 'Prefer `each_with_object` over `inject` or `reduce`.'
123
+ Enabled: false
124
+
125
+ Style/EmptyLiteral:
126
+ Description: 'Prefer literals to Array.new/Hash.new/String.new.'
127
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#literal-array-hash'
128
+ Enabled: false
129
+
130
+ # Checks whether the source file has a utf-8 encoding comment or not
131
+ # AutoCorrectEncodingComment must match the regex
132
+ # /#.*coding\s?[:=]\s?(?:UTF|utf)-8/
133
+ Style/Encoding:
134
+ Enabled: false
135
+
136
+ Style/EvenOdd:
137
+ Description: 'Favor the use of Fixnum#even? && Fixnum#odd?'
138
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods'
139
+ Enabled: false
140
+
141
+ Style/ExtraSpacing:
142
+ Description: 'Do not use unnecessary spacing.'
143
+ Enabled: true
144
+
145
+ Style/FileName:
146
+ Description: 'Use snake_case for source file names.'
147
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#snake-case-files'
148
+ Enabled: false
149
+
150
+ Style/FlipFlop:
151
+ Description: 'Checks for flip flops'
152
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-flip-flops'
153
+ Enabled: false
154
+
155
+ Style/FormatString:
156
+ Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.'
157
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#sprintf'
158
+ Enabled: false
159
+
160
+ Style/GlobalVars:
161
+ Description: 'Do not introduce global variables.'
162
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#instance-vars'
163
+ Reference: 'http://www.zenspider.com/Languages/Ruby/QuickRef.html'
164
+ Enabled: false
165
+
166
+ Style/GuardClause:
167
+ Description: 'Check for conditionals that can be replaced with guard clauses'
168
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals'
169
+ Enabled: false
170
+
171
+ Style/IfUnlessModifier:
172
+ Description: >-
173
+ Favor modifier if/unless usage when you have a
174
+ single-line body.
175
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier'
176
+ Enabled: false
177
+
178
+ Style/IfWithSemicolon:
179
+ Description: 'Do not use if x; .... Use the ternary operator instead.'
180
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-semicolon-ifs'
181
+ Enabled: false
182
+
183
+ Style/InlineComment:
184
+ Description: 'Avoid inline comments.'
185
+ Enabled: false
186
+
187
+ Style/Lambda:
188
+ Description: 'Use the new lambda literal syntax for single-line blocks.'
189
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#lambda-multi-line'
190
+ Enabled: false
191
+
192
+ Style/LambdaCall:
193
+ Description: 'Use lambda.call(...) instead of lambda.(...).'
194
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc-call'
195
+ Enabled: false
196
+
197
+ Style/LineEndConcatenation:
198
+ Description: >-
199
+ Use \ instead of + or << to concatenate two string literals at
200
+ line end.
201
+ Enabled: false
202
+
203
+ Metrics/LineLength:
204
+ Description: 'Limit lines to 100 characters.'
205
+ Max: 100
206
+ Exclude:
207
+ - config/initializers/secret_token.rb
208
+
209
+ Metrics/MethodLength:
210
+ Description: 'Avoid methods longer than 10 lines of code.'
211
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#short-methods'
212
+ Enabled: false
213
+
214
+ Style/ModuleFunction:
215
+ Description: 'Checks for usage of `extend self` in modules.'
216
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#module-function'
217
+ Enabled: false
218
+
219
+ Style/MultilineOperationIndentation:
220
+ Description: >-
221
+ Checks indentation of binary operations that span more than
222
+ one line.
223
+ Enabled: true
224
+ EnforcedStyle: indented
225
+
226
+ Style/NegatedIf:
227
+ Description: >-
228
+ Favor unless over if for negative conditions
229
+ (or control flow or).
230
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#unless-for-negatives'
231
+ Enabled: false
232
+
233
+ Style/NegatedWhile:
234
+ Description: 'Favor until over while for negative conditions.'
235
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#until-for-negatives'
236
+ Enabled: false
237
+
238
+ Style/Next:
239
+ Description: 'Use `next` to skip iteration instead of a condition at the end.'
240
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals'
241
+ Enabled: false
242
+
243
+ Style/NilComparison:
244
+ Description: 'Prefer x.nil? to x == nil.'
245
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods'
246
+ Enabled: false
247
+
248
+ Style/Not:
249
+ Description: 'Use ! instead of not.'
250
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bang-not-not'
251
+ Enabled: false
252
+
253
+ Style/NumericLiterals:
254
+ Description: >-
255
+ Add underscores to large numeric literals to improve their
256
+ readability.
257
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscores-in-numerics'
258
+ Enabled: false
259
+
260
+ Style/OneLineConditional:
261
+ Description: >-
262
+ Favor the ternary operator(?:) over
263
+ if/then/else/end constructs.
264
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#ternary-operator'
265
+ Enabled: false
266
+
267
+ Style/OpMethod:
268
+ Description: 'When defining binary operators, name the argument other.'
269
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#other-arg'
270
+ Enabled: false
271
+
272
+ Metrics/ParameterLists:
273
+ Description: 'Avoid parameter lists longer than three or four parameters.'
274
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#too-many-params'
275
+ Enabled: false
276
+
277
+ Style/PercentLiteralDelimiters:
278
+ Description: 'Use `%`-literal delimiters consistently'
279
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-literal-braces'
280
+ Enabled: false
281
+
282
+ Style/PerlBackrefs:
283
+ Description: 'Avoid Perl-style regex back references.'
284
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers'
285
+ Enabled: false
286
+
287
+ Style/PredicateName:
288
+ Description: 'Check the names of predicate methods.'
289
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark'
290
+ NamePrefixBlacklist:
291
+ - is_
292
+ Exclude:
293
+ - spec/**/*
294
+
295
+ Style/Proc:
296
+ Description: 'Use proc instead of Proc.new.'
297
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc'
298
+ Enabled: false
299
+
300
+ Style/RaiseArgs:
301
+ Description: 'Checks the arguments passed to raise/fail.'
302
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#exception-class-messages'
303
+ Enabled: false
304
+
305
+ Style/RegexpLiteral:
306
+ Description: 'Use / or %r around regular expressions.'
307
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-r'
308
+ Enabled: false
309
+
310
+ Style/SelfAssignment:
311
+ Description: >-
312
+ Checks for places where self-assignment shorthand should have
313
+ been used.
314
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#self-assignment'
315
+ Enabled: false
316
+
317
+ Style/SingleLineBlockParams:
318
+ Description: 'Enforces the names of some block params.'
319
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#reduce-blocks'
320
+ Enabled: false
321
+
322
+ Style/SingleLineMethods:
323
+ Description: 'Avoid single-line methods.'
324
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-single-line-methods'
325
+ Enabled: false
326
+
327
+ Style/SignalException:
328
+ Description: 'Checks for proper usage of fail and raise.'
329
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#fail-method'
330
+ Enabled: false
331
+
332
+ Style/SpecialGlobalVars:
333
+ Description: 'Avoid Perl-style global variables.'
334
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms'
335
+ Enabled: false
336
+
337
+ Style/StringLiterals:
338
+ Description: 'Checks if uses of quotes match the configured preference.'
339
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-string-literals'
340
+ EnforcedStyle: double_quotes
341
+ Enabled: true
342
+
343
+ Style/TrailingCommaInArguments:
344
+ Description: 'Checks for trailing comma in argument lists.'
345
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
346
+ EnforcedStyleForMultiline: comma
347
+ SupportedStyles:
348
+ - comma
349
+ - consistent_comma
350
+ - no_comma
351
+ Enabled: true
352
+
353
+ Style/TrailingCommaInLiteral:
354
+ Description: 'Checks for trailing comma in array and hash literals.'
355
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
356
+ EnforcedStyleForMultiline: comma
357
+ SupportedStyles:
358
+ - comma
359
+ - consistent_comma
360
+ - no_comma
361
+ Enabled: true
362
+
363
+ Style/TrivialAccessors:
364
+ Description: 'Prefer attr_* methods to trivial readers/writers.'
365
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr_family'
366
+ Enabled: false
367
+
368
+ Style/VariableInterpolation:
369
+ Description: >-
370
+ Don't interpolate global, instance and class variables
371
+ directly in strings.
372
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#curlies-interpolate'
373
+ Enabled: false
374
+
375
+ Style/WhenThen:
376
+ Description: 'Use when x then ... for one-line cases.'
377
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#one-line-cases'
378
+ Enabled: false
379
+
380
+ Style/WhileUntilModifier:
381
+ Description: >-
382
+ Favor modifier while/until usage when you have a
383
+ single-line body.
384
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#while-as-a-modifier'
385
+ Enabled: false
386
+
387
+ Style/WordArray:
388
+ Description: 'Use %w or %W for arrays of words.'
389
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-w'
390
+ Enabled: false
391
+
392
+ # Lint
393
+
394
+ Lint/AmbiguousOperator:
395
+ Description: >-
396
+ Checks for ambiguous operators in the first argument of a
397
+ method invocation without parentheses.
398
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-as-args'
399
+ Enabled: false
400
+
401
+ Lint/AmbiguousRegexpLiteral:
402
+ Description: >-
403
+ Checks for ambiguous regexp literals in the first argument of
404
+ a method invocation without parenthesis.
405
+ Enabled: false
406
+
407
+ Lint/AssignmentInCondition:
408
+ Description: "Don't use assignment in conditions."
409
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition'
410
+ Enabled: false
411
+
412
+ Lint/CircularArgumentReference:
413
+ Description: "Don't refer to the keyword argument in the default value."
414
+ Enabled: false
415
+
416
+ Lint/ConditionPosition:
417
+ Description: >-
418
+ Checks for condition placed in a confusing position relative to
419
+ the keyword.
420
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#same-line-condition'
421
+ Enabled: false
422
+
423
+ Lint/DeprecatedClassMethods:
424
+ Description: 'Check for deprecated class method calls.'
425
+ Enabled: false
426
+
427
+ Lint/DuplicatedKey:
428
+ Description: 'Check for duplicate keys in hash literals.'
429
+ Enabled: false
430
+
431
+ Lint/EachWithObjectArgument:
432
+ Description: 'Check for immutable argument given to each_with_object.'
433
+ Enabled: false
434
+
435
+ Lint/ElseLayout:
436
+ Description: 'Check for odd code arrangement in an else block.'
437
+ Enabled: false
438
+
439
+ Lint/FormatParameterMismatch:
440
+ Description: 'The number of parameters to format/sprint must match the fields.'
441
+ Enabled: false
442
+
443
+ Lint/HandleExceptions:
444
+ Description: "Don't suppress exception."
445
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions'
446
+ Enabled: false
447
+
448
+ Lint/InvalidCharacterLiteral:
449
+ Description: >-
450
+ Checks for invalid character literals with a non-escaped
451
+ whitespace character.
452
+ Enabled: false
453
+
454
+ Style/InitialIndentation:
455
+ Description: >-
456
+ Checks the indentation of the first non-blank non-comment line in a file.
457
+ Enabled: false
458
+
459
+ Lint/LiteralInCondition:
460
+ Description: 'Checks of literals used in conditions.'
461
+ Enabled: false
462
+
463
+ Lint/LiteralInInterpolation:
464
+ Description: 'Checks for literals used in interpolation.'
465
+ Enabled: false
466
+
467
+ Lint/Loop:
468
+ Description: >-
469
+ Use Kernel#loop with break rather than begin/end/until or
470
+ begin/end/while for post-loop tests.
471
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#loop-with-break'
472
+ Enabled: false
473
+
474
+ Lint/NestedMethodDefinition:
475
+ Description: 'Do not use nested method definitions.'
476
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-methods'
477
+ Enabled: false
478
+
479
+ Lint/NonLocalExitFromIterator:
480
+ Description: 'Do not use return in iterator to cause non-local exit.'
481
+ Enabled: false
482
+
483
+ Lint/ParenthesesAsGroupedExpression:
484
+ Description: >-
485
+ Checks for method calls with a space before the opening
486
+ parenthesis.
487
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-no-spaces'
488
+ Enabled: false
489
+
490
+ Lint/RequireParentheses:
491
+ Description: >-
492
+ Use parentheses in the method call to avoid confusion
493
+ about precedence.
494
+ Enabled: false
495
+
496
+ Lint/UnderscorePrefixedVariableName:
497
+ Description: 'Do not use prefix `_` for a variable that is used.'
498
+ Enabled: false
499
+
500
+ Lint/UnneededDisable:
501
+ Description: >-
502
+ Checks for rubocop:disable comments that can be removed.
503
+ Note: this cop is not disabled when disabling all cops.
504
+ It must be explicitly disabled.
505
+ Enabled: false
506
+
507
+ Lint/Void:
508
+ Description: 'Possible use of operator/literal/variable in void context.'
509
+ Enabled: false
510
+
511
+ # Performance
512
+
513
+ Performance/CaseWhenSplat:
514
+ Description: >-
515
+ Place `when` conditions that use splat at the end
516
+ of the list of `when` branches.
517
+ Enabled: false
518
+
519
+ Performance/Count:
520
+ Description: >-
521
+ Use `count` instead of `select...size`, `reject...size`,
522
+ `select...count`, `reject...count`, `select...length`,
523
+ and `reject...length`.
524
+ Enabled: false
525
+
526
+ Performance/Detect:
527
+ Description: >-
528
+ Use `detect` instead of `select.first`, `find_all.first`,
529
+ `select.last`, and `find_all.last`.
530
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code'
531
+ Enabled: false
532
+
533
+ Performance/FlatMap:
534
+ Description: >-
535
+ Use `Enumerable#flat_map`
536
+ instead of `Enumerable#map...Array#flatten(1)`
537
+ or `Enumberable#collect..Array#flatten(1)`
538
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code'
539
+ Enabled: false
540
+
541
+ Performance/ReverseEach:
542
+ Description: 'Use `reverse_each` instead of `reverse.each`.'
543
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code'
544
+ Enabled: false
545
+
546
+ Performance/Sample:
547
+ Description: >-
548
+ Use `sample` instead of `shuffle.first`,
549
+ `shuffle.last`, and `shuffle[Fixnum]`.
550
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code'
551
+ Enabled: false
552
+
553
+ Performance/Size:
554
+ Description: >-
555
+ Use `size` instead of `count` for counting
556
+ the number of elements in `Array` and `Hash`.
557
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#arraycount-vs-arraysize-code'
558
+ Enabled: false
559
+
560
+ Performance/StringReplacement:
561
+ Description: >-
562
+ Use `tr` instead of `gsub` when you are replacing the same
563
+ number of characters. Use `delete` instead of `gsub` when
564
+ you are deleting characters.
565
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code'
566
+ Enabled: false
567
+
568
+ # Rails
569
+
570
+ Rails/ActionFilter:
571
+ Description: 'Enforces consistent use of action filter methods.'
572
+ Enabled: false
573
+
574
+ Rails/Date:
575
+ Description: >-
576
+ Checks the correct usage of date aware methods,
577
+ such as Date.today, Date.current etc.
578
+ Enabled: false
579
+
580
+ Rails/FindBy:
581
+ Description: 'Prefer find_by over where.first.'
582
+ Enabled: false
583
+
584
+ Rails/FindEach:
585
+ Description: 'Prefer all.find_each over all.find.'
586
+ Enabled: false
587
+
588
+ Rails/HasAndBelongsToMany:
589
+ Description: 'Prefer has_many :through to has_and_belongs_to_many.'
590
+ Enabled: false
591
+
592
+ Rails/Output:
593
+ Description: 'Checks for calls to puts, print, etc.'
594
+ Enabled: false
595
+
596
+ Rails/ReadWriteAttribute:
597
+ Description: >-
598
+ Checks for read_attribute(:attr) and
599
+ write_attribute(:attr, val).
600
+ Enabled: false
601
+
602
+ Rails/ScopeArgs:
603
+ Description: 'Checks the arguments of ActiveRecord scopes.'
604
+ Enabled: false
605
+
606
+ Rails/TimeZone:
607
+ Description: 'Checks the correct usage of time zone aware methods.'
608
+ StyleGuide: 'https://github.com/bbatsov/rails-style-guide#time'
609
+ Reference: 'http://danilenko.org/2012/7/6/rails_timezones'
610
+ Enabled: false
611
+
612
+ Rails/Validation:
613
+ Description: 'Use validates :attribute, hash of validations.'
614
+ Enabled: false
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ ruby "2.3.1"
2
+ source "https://rubygems.org"
3
+
4
+ # Specify your gem's dependencies in dotenv-assigner.gemspec
5
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Steven Petryk
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,84 @@
1
+ # Dotenv::Init
2
+
3
+ [![CircleCI](https://circleci.com/gh/stevenpetryk/dotenv-init.svg?style=svg)](https://circleci.com/gh/stevenpetryk/dotenv-init)
4
+
5
+ Copy over your `.env.example` in style.
6
+
7
+ ## Rationale
8
+
9
+ Typically, in any marginally complex app using [dotenv](https://github.com/bkeepers/dotenv), you'll have some step in new developer onboarding where you need to copy over a `.env.example` file to `.env`.
10
+
11
+ Also, in most Rails apps, gems, and other setups, you typically have a `bin/setup` script that will do its best to automate the app bootstrapping process for freshly cloned copies.
12
+
13
+ This is an attempt to harmonize these two concepts by creating a user-friendly automated flow for filling in `.env`.
14
+
15
+ ## Installation
16
+
17
+ To install globally and run anywhere:
18
+
19
+ ```
20
+ gem install dotenv-init
21
+ ```
22
+
23
+ Or, to use in your project (i.e., in `bin/setup`):
24
+
25
+ ```
26
+ gem "dotenv-init", group: :development
27
+
28
+ # Optional: enable colors
29
+ gem "colorize"
30
+ ```
31
+
32
+ ## Usage
33
+
34
+ Given a `.env.example` like this:
35
+
36
+ ```
37
+ # Facebook credentials can be found in the 1Password Vault.
38
+ # Create a test app specifically for your local copy of this
39
+ # app and then grab its app ID.
40
+ export FACEBOOK_APP_ID=
41
+
42
+ # This is the password used as a backdoor to the admin
43
+ # console in the event the client locks themselves out (again).
44
+ # Regenerate with `rake secret`, or just use the default in development:
45
+ export ADMIN_PASSWORD=hunter2
46
+ ```
47
+
48
+ Running `dotenv-init` will present you with a prompt interactively walking you through filling these values in, providing defaults when they're given:
49
+
50
+ ```
51
+ Facebook credentials can be found in the 1Password Vault.
52
+ Create a test app specifically for your local copy of this
53
+ app and then grab its app ID.
54
+ FACEBOOK_APP_ID: 110318327925842
55
+
56
+ This is the password used as a backdoor to the admin
57
+ console in the event the client locks themselves out (again).
58
+ Regenerate with `rake secret`, or just use the default in development:
59
+ ADMIN_PASSWORD: (hunter2) hunter3
60
+ ```
61
+
62
+ Providing all of the values will populate `.env` with the exact same formatting as your `.env.example`, including comments and whitespace.
63
+
64
+ ## Contributing
65
+
66
+ 1. Fork this repo
67
+ 2. Add your feature in a branch
68
+ 3. Open a pull request
69
+
70
+ Before making a commit, please run `rake spec` and `rubocop` to ensure it will pass CI.
71
+
72
+ Please write [good commit messages](https://robots.thoughtbot.com/5-useful-tips-for-a-better-commit-message), be polite, and be open to discussing ways to improve on the code you've contributed.
73
+
74
+ ## Architecture
75
+
76
+ For details on how the parser works, check out [dotenv's parser](https://github.com/bkeepers/dotenv/blob/master/lib/dotenv/parser.rb) as well as [comment_aware_parser_spec.rb](spec/dotenv/init/comment_aware_parser_spec.rb). This project's parser simply subclasses dotenv's parser to add more functionality.
77
+
78
+ ## Contributing
79
+
80
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/dotenv-assigner.
81
+
82
+ ## License
83
+
84
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "dotenv/assigner"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $0 = "dotenv-init"
4
+
5
+ require "dotenv/init"
6
+
7
+ # Process command line options and run Pry
8
+ Dotenv::Init::CLI.start
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # This file was generated by Bundler.
5
+ #
6
+ # The application 'rspec' is installed as part of a gem, and
7
+ # this file is here to facilitate running it.
8
+ #
9
+
10
+ require "pathname"
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
+ Pathname.new(__FILE__).realpath)
13
+
14
+ require "rubygems"
15
+ require "bundler/setup"
16
+
17
+ load Gem.bin_path("rspec-core", "rspec")
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,3 @@
1
+ test:
2
+ override:
3
+ - bundle exec rspec -r rspec_junit_formatter --format RspecJunitFormatter -o $CIRCLE_TEST_REPORTS/rspec/junit.xml
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "dotenv/init/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "dotenv-init"
8
+ spec.version = Dotenv::Init::VERSION
9
+ spec.authors = ["Steven Petryk"]
10
+ spec.email = ["me@stevenpetryk.com"]
11
+
12
+ spec.summary = "Sick of copying from .env.example files? Me too."
13
+ spec.homepage = "https://github.com/stevenpetryk/dotenv-init"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "bin"
18
+ spec.executables = ["dotenv-init"]
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "dotenv", "~> 2.1.1"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.12"
24
+ spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "pry", "~> 0.10.3"
26
+ spec.add_development_dependency "rubocop", "~> 0.40.0"
27
+ spec.add_development_dependency "rspec", "~> 3.0"
28
+ spec.add_development_dependency "rspec_junit_formatter", "0.2.2"
29
+ end
@@ -0,0 +1,9 @@
1
+ require "dotenv/init/version"
2
+ require "dotenv/init/cli"
3
+ require "dotenv/init/comment_aware_parser"
4
+ require "dotenv/init/assigner"
5
+
6
+ module Dotenv
7
+ module Init
8
+ end
9
+ end
@@ -0,0 +1,44 @@
1
+ require "dotenv/init/comment_aware_parser"
2
+
3
+ module Dotenv
4
+ module Init
5
+ class Assigner
6
+ attr_reader :string, :env, :lines
7
+
8
+ class << self
9
+ def call(string, env)
10
+ new(string, env).call
11
+ end
12
+ end
13
+
14
+ def initialize(string, env)
15
+ @string = string
16
+ @lines = string.split(/[\n\r]/)
17
+ @env = env
18
+ end
19
+
20
+ def call
21
+ parsed.each do |key, value|
22
+ line_number, offset, default = value.values_at(:line_number, :offset, :default)
23
+
24
+ replacement = lines[line_number]
25
+ replacement[range(offset)] = env[key] || default
26
+
27
+ lines[line_number] = replacement
28
+ end
29
+
30
+ lines.join("\n") + "\n"
31
+ end
32
+
33
+ private
34
+
35
+ def range(offset)
36
+ offset[0]..(offset[1] - 1)
37
+ end
38
+
39
+ def parsed
40
+ @parsed ||= CommentAwareParser.call(@string)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,48 @@
1
+ require "pry"
2
+
3
+ module Dotenv
4
+ module Init
5
+ class CLI
6
+ class << self
7
+ def start
8
+ @file = File.open(".env.example")
9
+ @contents = @file.read
10
+
11
+ env = {}
12
+
13
+ parsed.each do |key, value|
14
+ print prompt(key, value)
15
+
16
+ value = $stdin.gets.chomp
17
+ env[key] = value.empty? ? nil : value
18
+ puts
19
+ end
20
+
21
+ File.write(".env", Assigner.call(@contents, env))
22
+ end
23
+
24
+ def prompt(key, value)
25
+ <<~PROMPT.chomp
26
+ #{value[:comments]}
27
+ #{try_color(key, :yellow)}: #{default_value(value)}
28
+ PROMPT
29
+ end
30
+
31
+ def parsed
32
+ @parsed ||= CommentAwareParser.call(@contents)
33
+ end
34
+
35
+ def default_value(value)
36
+ try_color("(#{value[:default]}) ", :green) unless value[:default].empty?
37
+ end
38
+
39
+ def try_color(string, color)
40
+ require "colorize"
41
+ string.colorize(color)
42
+ rescue LoadError
43
+ string
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,100 @@
1
+ require "dotenv/parser"
2
+ require "dotenv/substitutions/variable"
3
+ require "dotenv/substitutions/command" if RUBY_VERSION > "1.8.7"
4
+
5
+ module Dotenv
6
+ module Init
7
+ class CommentAwareParser < Dotenv::Parser
8
+ @substitutions =
9
+ [Dotenv::Substitutions::Variable, Dotenv::Substitutions::Command]
10
+
11
+ LINE = /
12
+ \A
13
+ (?: # optional variable setting
14
+ (?:export\s+)? # optional export
15
+ ([\w\.]+) # key
16
+ (?:\s*(=)\s*|:\s+?) # separator
17
+ ( # optional value
18
+ '(?:\'|[^'])*' # single quoted value
19
+ | # or
20
+ "(?:\"|[^"])*" # double quoted value
21
+ | # or
22
+ [^#\n\s]+ # unquoted value
23
+ )? #
24
+ )? #
25
+ (?:\s*\#\s*(.*))? # optional comment
26
+ \z
27
+ /x # '
28
+
29
+ COMMENT_OR_BLANK_LINE = /\A\s*(?:#.*)?\z/
30
+
31
+ def initialize(*args)
32
+ @line_number = 0
33
+ @comments = []
34
+ super
35
+ end
36
+
37
+ def call
38
+ @string.split(/[\n\r]/).each do |line|
39
+ parse_line(line)
40
+ @line_number += 1
41
+ end
42
+ @hash
43
+ end
44
+
45
+ private
46
+
47
+ def parse_line(line)
48
+ if match = validate_line!(line)
49
+ key, _, value, comment = match.captures
50
+ @comments << comment
51
+
52
+ if key
53
+ @hash[key] = {
54
+ default: parse_value(value),
55
+ comments: flush_comments,
56
+ line_number: @line_number,
57
+ offset: offset_for(match, value),
58
+ }
59
+ end
60
+ end
61
+ end
62
+
63
+ def offset_for(match, value)
64
+ return [match.offset(2)[1]] * 2 unless value
65
+
66
+ offset = match.offset(3)
67
+
68
+ if value.start_with?("'", '"')
69
+ [offset[0] + 1, offset[1] - 1]
70
+ else
71
+ offset
72
+ end
73
+ end
74
+
75
+ def validate_line!(line)
76
+ if match = line.match(LINE)
77
+ return match
78
+ elsif exports_nothing?(line)
79
+ raise FormatError, "Line #{line.inspect} has an unset variable"
80
+ elsif line !~ COMMENT_OR_BLANK_LINE
81
+ raise FormatError, "Line #{line.inspect} doesn't match format"
82
+ end
83
+ end
84
+
85
+ def parse_value(value)
86
+ super(value || "")
87
+ end
88
+
89
+ def flush_comments
90
+ comments = @comments
91
+ @comments = []
92
+ comments.compact.map(&:chomp).join(" ")
93
+ end
94
+
95
+ def exports_nothing?(line)
96
+ line.split.first == "export" && variable_not_set?(line)
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,5 @@
1
+ module Dotenv
2
+ module Init
3
+ VERSION = "0.1.0".freeze
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dotenv-init
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Steven Petryk
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-06-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dotenv
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.1.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.1.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.12'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.10.3
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.10.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.40.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.40.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec_junit_formatter
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 0.2.2
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 0.2.2
111
+ description:
112
+ email:
113
+ - me@stevenpetryk.com
114
+ executables:
115
+ - dotenv-init
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - ".gitignore"
120
+ - ".rspec"
121
+ - ".rubocop.yml"
122
+ - Gemfile
123
+ - LICENSE.txt
124
+ - README.md
125
+ - Rakefile
126
+ - bin/console
127
+ - bin/dotenv-init
128
+ - bin/rspec
129
+ - bin/setup
130
+ - circle.yml
131
+ - dotenv-init.gemspec
132
+ - lib/dotenv/init.rb
133
+ - lib/dotenv/init/assigner.rb
134
+ - lib/dotenv/init/cli.rb
135
+ - lib/dotenv/init/comment_aware_parser.rb
136
+ - lib/dotenv/init/version.rb
137
+ homepage: https://github.com/stevenpetryk/dotenv-init
138
+ licenses:
139
+ - MIT
140
+ metadata: {}
141
+ post_install_message:
142
+ rdoc_options: []
143
+ require_paths:
144
+ - lib
145
+ required_ruby_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ requirements: []
156
+ rubyforge_project:
157
+ rubygems_version: 2.6.4
158
+ signing_key:
159
+ specification_version: 4
160
+ summary: Sick of copying from .env.example files? Me too.
161
+ test_files: []