varslist 0.1.0 → 0.2.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/Gemfile +1 -0
- data/lib/varslist.rb +86 -64
- 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: 834c1a4f7da0c33c32d7eb4adcd9d890ec192ac7a5c2343a6acdcea299ff5474
|
|
4
|
+
data.tar.gz: 757f408ac7d53073050f450de9af924379499f077bfaba1ca7c7c0389c699622
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d67cac3ef0c6b6705ba7eb4c8beab7ed522d61b2522f9d0ffe86a87f44a301a03470529d7d9e2d39a5867b408b2492516ca28c3d7fe636b70819fdedbe4b2c34
|
|
7
|
+
data.tar.gz: 0dcffe31dc38e3f4f8f5c3990656104e1fa0270339f8f3d3d97071331d5226d3e3d103e17ac81e8ed29e988d4a75c58bcbddc393aee48d814fdeeb4051d08461
|
data/Gemfile
CHANGED
data/lib/varslist.rb
CHANGED
|
@@ -1,88 +1,110 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'colorize'
|
|
4
|
+
require_relative 'varslist/errors'
|
|
4
5
|
|
|
5
6
|
module Varslist
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
class << self
|
|
8
|
+
def env_vars
|
|
9
|
+
@env_vars ||= list_env_variables
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def list_env_variables
|
|
13
|
+
env_use_list = []
|
|
14
|
+
watch_list = /\.rb$|\.html\.erb$/
|
|
15
|
+
env_regex = /ENV\[['"]\w+['"]\]|ENV\.fetch/
|
|
16
|
+
filelist = Dir['./**/**/*.*']
|
|
17
|
+
filelist.each do |file|
|
|
18
|
+
if File.basename(file)&.match?(watch_list)
|
|
19
|
+
File.foreach(file).with_index do |line, index|
|
|
20
|
+
next if line.strip.empty? || line.strip.start_with?('#')
|
|
21
|
+
if line&.match?(env_regex)
|
|
22
|
+
env_use_list << { "line" => line.strip, "file_name" => file, "line_number" => index + 1, "var_name" => check_var_name(line)}
|
|
23
|
+
end
|
|
18
24
|
end
|
|
19
25
|
end
|
|
20
26
|
end
|
|
27
|
+
env_use_list
|
|
21
28
|
end
|
|
22
|
-
env_use_list
|
|
23
|
-
end
|
|
24
29
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
def print_help
|
|
31
|
+
puts "Help for Varslist".colorize(:magenta)
|
|
32
|
+
puts "Use varslist to show all the ENV variables used in all .rb and .erb files"
|
|
33
|
+
puts "--file = to show file list where the ENV variables are used"
|
|
34
|
+
puts "--verify = to verify if all the ENV variable are valid"
|
|
35
|
+
end
|
|
36
|
+
|
|
32
37
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
38
|
+
def check_var_name(line)
|
|
39
|
+
if match = line.scan(/ENV\[['"]([^'"]+)['"]\]|ENV\.fetch\(['"]([^'"]+)['"]/)
|
|
40
|
+
vars=match.flatten.compact.each do |env_var|
|
|
41
|
+
env_var
|
|
42
|
+
end
|
|
43
|
+
vars.join
|
|
44
|
+
else
|
|
45
|
+
nil
|
|
37
46
|
end
|
|
38
|
-
vars.join
|
|
39
|
-
else
|
|
40
|
-
nil
|
|
41
47
|
end
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
+
|
|
49
|
+
def print_env(found_envs)
|
|
50
|
+
found_envs.each do |env_line|
|
|
51
|
+
puts "#{env_line["file_name"]}:#{env_line["line_number"]}\t#{env_line["var_name"]}".colorize(:magenta)
|
|
52
|
+
puts "\n\t#{env_line["line"]}\n".colorize(:green)
|
|
53
|
+
end
|
|
48
54
|
end
|
|
49
|
-
end
|
|
50
55
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
|
|
57
|
+
def print_used_var_list(found_envs)
|
|
58
|
+
puts "\n\nThe used ENV variables".colorize(:magenta)
|
|
59
|
+
used_vars=[]
|
|
60
|
+
found_envs.each do |found_env|
|
|
61
|
+
used_vars << found_env["var_name"] unless used_vars.include?(found_env["var_name"])
|
|
62
|
+
end
|
|
63
|
+
used_vars.each do |var|
|
|
64
|
+
puts "\t#{var}".colorize(:green)
|
|
65
|
+
end
|
|
60
66
|
end
|
|
61
|
-
end
|
|
62
67
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
valid_env << found_env["var_name"] unless valid_env.include?(found_env["var_name"])
|
|
68
|
+
def verify_var_list
|
|
69
|
+
valid_env, invalid_env = get_used_and_unused_vars
|
|
70
|
+
if !valid_env.empty?
|
|
71
|
+
puts "\n\nThe valid envs are:".colorize(:magenta)
|
|
72
|
+
valid_env.each do |valid|
|
|
73
|
+
puts "\t#{valid}".colorize(:green)
|
|
74
|
+
end
|
|
71
75
|
end
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
76
|
+
if !invalid_env.empty?
|
|
77
|
+
puts "\n\nThe invalid envs are:".colorize(:magenta)
|
|
78
|
+
invalid_env.each do |valid|
|
|
79
|
+
puts "\t#{valid}".colorize(:red)
|
|
80
|
+
end
|
|
77
81
|
end
|
|
78
82
|
end
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
invalid_env
|
|
82
|
-
|
|
83
|
+
|
|
84
|
+
def verify!
|
|
85
|
+
invalid_env = get_used_and_unused_vars[1]
|
|
86
|
+
if invalid_env.empty?
|
|
87
|
+
puts "\n\nThe envs are valid".colorize(:green)
|
|
88
|
+
else
|
|
89
|
+
message = "The envs are invalid"
|
|
90
|
+
puts "\n\nThe envs are invalid".colorize(:red)
|
|
91
|
+
raise Varslist::MissingEnvError, message
|
|
83
92
|
end
|
|
84
93
|
end
|
|
85
|
-
end
|
|
86
94
|
|
|
87
|
-
|
|
95
|
+
private
|
|
96
|
+
|
|
97
|
+
def get_used_and_unused_vars
|
|
98
|
+
valid_env = []
|
|
99
|
+
invalid_env = []
|
|
100
|
+
env_vars.each do |found_env|
|
|
101
|
+
if ENV[found_env["var_name"]].nil?
|
|
102
|
+
invalid_env << found_env["var_name"] unless invalid_env.include?(found_env["var_name"])
|
|
103
|
+
else
|
|
104
|
+
valid_env << found_env["var_name"] unless valid_env.include?(found_env["var_name"])
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
return valid_env, invalid_env
|
|
108
|
+
end
|
|
109
|
+
end
|
|
88
110
|
end
|