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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/lib/varslist.rb +86 -64
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 56ddd614869539081b7a61d3002ad4ce618874367f74335bbf2175cabdf0ab12
4
- data.tar.gz: b4558236f55cf480b7d9a9dd3546f038d321e579c72608a7575fbdb8d37d592f
3
+ metadata.gz: 834c1a4f7da0c33c32d7eb4adcd9d890ec192ac7a5c2343a6acdcea299ff5474
4
+ data.tar.gz: 757f408ac7d53073050f450de9af924379499f077bfaba1ca7c7c0389c699622
5
5
  SHA512:
6
- metadata.gz: 540f5ba64e65909b8e9dc687be8b41b2998529b8a4e31f1d0aac682157ca0aac966b34b679cfca8918f0d3d8f5d9765161570523f9bd87cef0ebaf96fffcd20c
7
- data.tar.gz: f9be254681bc329368bd057b120ceec665a77896df3ae4f3d632d0858c90f2b213bb5a2af9f1d2f9d7581450c4757229fe060ab8e1a45f1ee83ac284d378c57c
6
+ metadata.gz: d67cac3ef0c6b6705ba7eb4c8beab7ed522d61b2522f9d0ffe86a87f44a301a03470529d7d9e2d39a5867b408b2492516ca28c3d7fe636b70819fdedbe4b2c34
7
+ data.tar.gz: 0dcffe31dc38e3f4f8f5c3990656104e1fa0270339f8f3d3d97071331d5226d3e3d103e17ac81e8ed29e988d4a75c58bcbddc393aee48d814fdeeb4051d08461
data/Gemfile CHANGED
@@ -9,4 +9,5 @@ gem 'dotenv'
9
9
  group :development do
10
10
  gem 'rubocop', '~> 1.60'
11
11
  gem 'rubocop-performance'
12
+ gem 'pry'
12
13
  end
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
- def self.list_env_variables
8
- env_use_list = []
9
- watch_list = /\.rb$|\.html\.erb$/
10
- env_regex = /ENV\[['"]\w+['"]\]|ENV\.fetch/
11
- filelist = Dir['./**/**/*.*']
12
- filelist.each do |file|
13
- if File.basename(file)&.match?(watch_list)
14
- File.foreach(file).with_index do |line, index|
15
- next if line.strip.empty? || line.strip.start_with?('#')
16
- if line&.match?(env_regex)
17
- env_use_list << { "line" => line.strip, "file_name" => file, "line_number" => index + 1, "var_name" => check_var_name(line)}
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
- def self.print_help
26
- puts "Help for Varslist".colorize(:magenta)
27
- puts "Use varslist to show all the ENV variables used in all .rb and .erb files"
28
- puts "--file = to show file list where the ENV variables are used"
29
- puts "--verify = to verify if all the ENV variable are valid"
30
- end
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
- def self.check_var_name(line)
34
- if match = line.scan(/ENV\[['"]([^'"]+)['"]\]|ENV\.fetch\(['"]([^'"]+)['"]/)
35
- vars=match.flatten.compact.each do |env_var|
36
- env_var
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
- end
43
-
44
- def self.print_env(found_envs)
45
- found_envs.each do |env_line|
46
- puts "#{env_line["file_name"]}:#{env_line["line_number"]}\t#{env_line["var_name"]}".colorize(:magenta)
47
- puts "\n\t#{env_line["line"]}\n".colorize(:green)
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
- def self.print_used_var_list(found_envs)
53
- puts "\n\nThe used ENV variables".colorize(:magenta)
54
- used_vars=[]
55
- found_envs.each do |found_env|
56
- used_vars << found_env["var_name"] unless used_vars.include?(found_env["var_name"])
57
- end
58
- used_vars.each do |var|
59
- puts "\t#{var}".colorize(:green)
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
- def self.verify_var_list(found_envs)
64
- valid_env = []
65
- invalid_env = []
66
- found_envs.each do |found_env|
67
- if ENV[found_env["var_name"]].nil?
68
- invalid_env << found_env["var_name"] unless invalid_env.include?(found_env["var_name"])
69
- else
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
- end
73
- if !valid_env.empty?
74
- puts "\n\nThe valid envs are:".colorize(:magenta)
75
- valid_env.each do |valid|
76
- puts "\t#{valid}".colorize(:green)
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
- if !invalid_env.empty?
80
- puts "\n\nThe invalid envs are:".colorize(:magenta)
81
- invalid_env.each do |valid|
82
- puts "\t#{valid}".colorize(:red)
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
- # private_class_method :check_environment
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: varslist
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sumit Pati