lit-cli 0.5.0 → 0.6.4
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/bin/lit +1 -1
- data/lib/config.rb +10 -7
- data/lib/lit_cli.rb +13 -4
- data/lib/lit_pry.rb +88 -49
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f467ef2808f341c61ebfa6ae5cbe7cbe354c4e9d2068aa8de96ee0e4b69175e
|
4
|
+
data.tar.gz: 36cbff3ecfa9c4585e6a1fed552bbdc35f2ef7d8ef51890439dd333049cb9008
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: caa0776bab81bc74a9c166e966f4fe12eabcd291e7147b036a6893520d083a0b1e2addde2ac76d3ff965f6cca629b6b2372ee154b47861c08cacf714bdae512d
|
7
|
+
data.tar.gz: 9204b7bdec4d2365fc5b17d513df0cbea56d4051a59baa8e3182b22b0e07d7c7658b45cf18ed0d12b2cf1bfab207ecc6d8176a6a4d8ab190447df979cc759ab7
|
data/bin/lit
CHANGED
data/lib/config.rb
CHANGED
@@ -33,12 +33,12 @@ module LitCLI
|
|
33
33
|
def initialize()
|
34
34
|
|
35
35
|
@statuses = {
|
36
|
-
:info => { icon: "ℹ", color: :blue },
|
37
|
-
:pass => { icon: "✔", color: :green },
|
38
|
-
:warn => { icon: "⚠", color: :yellow },
|
39
|
-
:fail => { icon: "⨯", color: :red },
|
40
|
-
:error => { icon: "!", color: :red },
|
41
|
-
:debug => { icon: "?", color: :purple },
|
36
|
+
:info => { icon: "ℹ", color: :blue, styles: [:upcase] },
|
37
|
+
:pass => { icon: "✔", color: :green, styles: [:upcase] },
|
38
|
+
:warn => { icon: "⚠", color: :yellow, styles: [:upcase] },
|
39
|
+
:fail => { icon: "⨯", color: :red, styles: [:upcase] },
|
40
|
+
:error => { icon: "!", color: :red, styles: [:upcase] },
|
41
|
+
:debug => { icon: "?", color: :purple, styles: [:upcase] },
|
42
42
|
}
|
43
43
|
|
44
44
|
@types = nil
|
@@ -70,7 +70,10 @@ module LitCLI
|
|
70
70
|
|
71
71
|
# Override config from command line.
|
72
72
|
def cli_configure()
|
73
|
-
|
73
|
+
|
74
|
+
# Enable lit via the command line.
|
75
|
+
@enabled = true if ENV['LIT_ENABLED'] == Time.now.to_i.to_s
|
76
|
+
return unless @enabled
|
74
77
|
|
75
78
|
# Convert flag string to hash.
|
76
79
|
flags = {}
|
data/lib/lit_cli.rb
CHANGED
@@ -8,18 +8,22 @@ module LitCLI
|
|
8
8
|
@@config = Config.new
|
9
9
|
@@is_prying = false
|
10
10
|
|
11
|
-
def lit(message, status = :info, type = nil)
|
11
|
+
def lit(message, status = :info, type = nil, context = nil)
|
12
12
|
if @@config.enabled
|
13
13
|
return if LitCLI.filter_status? status
|
14
14
|
return if LitCLI.filter_type? type
|
15
|
-
|
15
|
+
|
16
|
+
LitCLI.render(message, status, type, context)
|
17
|
+
|
16
18
|
LitCLI.step()
|
19
|
+
yield if block_given?
|
20
|
+
|
17
21
|
LitCLI.delay()
|
18
22
|
end
|
19
23
|
end
|
20
24
|
alias 🔥 lit
|
21
25
|
|
22
|
-
def self.render(message, status, type)
|
26
|
+
def self.render(message, status, type, context)
|
23
27
|
text = "🔥"
|
24
28
|
|
25
29
|
# Time.
|
@@ -40,6 +44,9 @@ module LitCLI
|
|
40
44
|
end
|
41
45
|
end
|
42
46
|
|
47
|
+
# Context.
|
48
|
+
text << LitCLI.format(" #{context}", styles: [:bold, :dim])
|
49
|
+
|
43
50
|
# Message.
|
44
51
|
text << " #{message}"
|
45
52
|
|
@@ -91,6 +98,8 @@ module LitCLI
|
|
91
98
|
text = text.upcase
|
92
99
|
when :downcase
|
93
100
|
text = text.downcase
|
101
|
+
when :capitalize
|
102
|
+
text = text.capitalize
|
94
103
|
end
|
95
104
|
end
|
96
105
|
# Then apply styling.
|
@@ -140,7 +149,7 @@ module LitCLI
|
|
140
149
|
def self.configure()
|
141
150
|
yield(@@config)
|
142
151
|
|
143
|
-
# Override config from command line.
|
152
|
+
# Override config from flags on command line.
|
144
153
|
@@config.cli_configure()
|
145
154
|
end
|
146
155
|
|
data/lib/lit_pry.rb
CHANGED
@@ -1,70 +1,109 @@
|
|
1
1
|
# Only override kernel methods when Lit's @step flag is true.
|
2
2
|
if ENV['LIT_FLAGS'] && ENV['LIT_FLAGS'].include?('step')
|
3
|
+
require 'set'
|
4
|
+
|
5
|
+
# TODO: Investigate RubyGems `require` before overriding.
|
6
|
+
# SEE: https://github.com/ruby/ruby/blob/v2_6_3/lib/rubygems/core_ext/kernel_require.rb
|
7
|
+
|
3
8
|
module Kernel
|
4
9
|
|
5
|
-
|
6
|
-
filename = relative_path
|
10
|
+
@@lit_processed_paths = Set.new
|
7
11
|
|
8
|
-
|
9
|
-
|
10
|
-
absolute_path.pop
|
12
|
+
def require_relative relative_path, current_directory = nil
|
13
|
+
return false if relative_path.nil?
|
11
14
|
|
12
|
-
#
|
13
|
-
if relative_path.start_with?('
|
14
|
-
|
15
|
-
|
15
|
+
# Handle absolute path.
|
16
|
+
if relative_path.start_with?('/') && File.exist?(relative_path)
|
17
|
+
absolute_path = relative_path.split('/')
|
18
|
+
file_name = absolute_path.pop
|
19
|
+
# Handle relative path.
|
20
|
+
else
|
21
|
+
# Get directory of the file that called this file.
|
22
|
+
if current_directory.nil?
|
23
|
+
absolute_path = caller_locations.first.absolute_path.split('/')
|
24
|
+
absolute_path.pop
|
25
|
+
else
|
26
|
+
absolute_path = current_directory.split('/')
|
27
|
+
end
|
28
|
+
|
29
|
+
# When path is current directory.
|
30
|
+
if relative_path.start_with?('./')
|
31
|
+
relative_path.delete_prefix! './'
|
32
|
+
end
|
33
|
+
|
34
|
+
# When path is parent directory.
|
35
|
+
while relative_path.start_with?('../')
|
36
|
+
relative_path.delete_prefix! '../'
|
37
|
+
absolute_path.pop
|
38
|
+
end
|
39
|
+
|
40
|
+
# When path contains child directories.
|
41
|
+
if relative_path.split('/').count > 1
|
42
|
+
# Add child directories to absolute path and remove from relative path.
|
43
|
+
child_path = relative_path.split('/')
|
44
|
+
relative_path = child_path.pop
|
45
|
+
child_path.each do |dir|
|
46
|
+
absolute_path << dir
|
47
|
+
end
|
48
|
+
end
|
16
49
|
|
17
|
-
|
18
|
-
while relative_path.start_with?('../')
|
19
|
-
relative_path.delete_prefix! '../'
|
20
|
-
absolute_path.pop
|
50
|
+
file_name = relative_path
|
21
51
|
end
|
22
52
|
|
23
53
|
# Append default extension.
|
24
|
-
unless
|
25
|
-
|
54
|
+
unless file_name.end_with? '.rb'
|
55
|
+
file_name << '.rb'
|
26
56
|
end
|
27
57
|
|
28
|
-
|
58
|
+
file_path = File.join(absolute_path.join('/'), file_name)
|
29
59
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
new_lines
|
34
|
-
|
35
|
-
|
36
|
-
|
60
|
+
unless @@lit_processed_paths.include? file_path
|
61
|
+
@@lit_processed_paths.add file_path
|
62
|
+
|
63
|
+
new_lines = ''
|
64
|
+
line_count = 0
|
65
|
+
new_lines_count = 0
|
66
|
+
|
67
|
+
File.foreach(file_path) do |line|
|
68
|
+
line_count = line_count + 1
|
69
|
+
|
70
|
+
# Pass current directory into the next file's requires.
|
71
|
+
if line.strip.start_with? 'require_relative '
|
72
|
+
line = line.strip + ", '#{absolute_path.join('/')}'\n"
|
73
|
+
new_lines << line
|
74
|
+
# Add pry binding on each lit method.
|
75
|
+
elsif lit_line = Kernel.add_lit_binding(line)
|
76
|
+
new_lines << lit_line
|
77
|
+
else
|
78
|
+
new_lines << line
|
79
|
+
end
|
37
80
|
end
|
81
|
+
|
82
|
+
eval(new_lines, get_binding(__dir__ = absolute_path), file_path)
|
83
|
+
|
84
|
+
return true
|
85
|
+
# Path has already been required.
|
86
|
+
else
|
87
|
+
return false
|
38
88
|
end
|
89
|
+
end
|
39
90
|
|
40
|
-
|
91
|
+
def get_binding(__dir__)
|
92
|
+
# Don't go to this binding when Pry session activated.
|
93
|
+
# The variables have already been evaluated by eval(). NEEDS CONFIRMATION.
|
94
|
+
# Setting file_path in eval() negates this fix but will keep just in case.
|
95
|
+
return binding unless LitCLI.is_prying?
|
41
96
|
end
|
42
97
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
# #p File.dirname(File.realpath(__FILE__))
|
51
|
-
# #p File.realpath(__FILE__)
|
52
|
-
#
|
53
|
-
# # Split client-side and server-side code.
|
54
|
-
# new_lines = []
|
55
|
-
# binding_line = "binding.pry if LitCLI.is_prying?"
|
56
|
-
#
|
57
|
-
# # Add pry binding beneath each lit message.
|
58
|
-
# p path
|
59
|
-
# File.foreach(path) do |line|
|
60
|
-
# new_lines << line
|
61
|
-
# if line.strip.start_with? 'lit "'
|
62
|
-
# new_lines << binding_line
|
63
|
-
# end
|
64
|
-
# end
|
65
|
-
#
|
66
|
-
# eval(new_lines.join)
|
67
|
-
# end
|
98
|
+
def self.add_lit_binding(line)
|
99
|
+
['lit ', 'lit(', '🔥 ', '🔥(', '🔥'].each do |needle|
|
100
|
+
if line.strip.start_with? needle
|
101
|
+
args = line.strip.delete_prefix(needle).delete_suffix(")").chomp
|
102
|
+
return "lit(#{args}) { binding.pry if LitCLI.is_prying?; @@is_prying = false } \n"
|
103
|
+
end
|
104
|
+
end
|
68
105
|
|
106
|
+
false
|
107
|
+
end
|
69
108
|
end
|
70
109
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lit-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maedi Prichard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02-
|
11
|
+
date: 2021-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pastel
|