lit-cli 0.6.1 → 0.8.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 (6) hide show
  1. checksums.yaml +4 -4
  2. data/bin/lit +1 -1
  3. data/lib/config.rb +12 -4
  4. data/lib/lit_cli.rb +45 -14
  5. data/lib/lit_pry.rb +20 -7
  6. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39a417c815a30ecdf0e99aaa9aa47d22b4def3f2d891f6da1911414a7187a86b
4
- data.tar.gz: 5bb7af898274544027202aedb33d9428401044867ad0693ae6314b1c361c9418
3
+ metadata.gz: d7d27ec65b3d6ead4109e2ec4509c30ad071645bb2f0cac4b8e9fd0ee27e1e2e
4
+ data.tar.gz: efd72529bd96e50d8e286ab9cf3fe610e6077728282a15bd640c5195d15a8562
5
5
  SHA512:
6
- metadata.gz: 1b45c6ae31e1db4cf3ac3fd338e8a11df273618cd8aa8b7d870d3764c9ae86b472b5823504fec11956c33fcc7fe0ca044db544e6c872f167a9db7bbfeaf881b5
7
- data.tar.gz: 47a8560f08cbd269877dcd1a6bd14b718a684b190991b80b439602fe766b15f84bc1c44826aafed8416277e2fb425f66d35d447f32676cacdc8d9ef4fa31a8a0
6
+ metadata.gz: c5ab9a686068313a84c120a354303ccdc2d9d24db4e6eafaf0ea45c9adedf8b59952b0503f52268b5765b45a5bb1f0bc0800d0b199d770a3f87b9c90e4d1b700
7
+ data.tar.gz: 548cb66165d4f9b9b396dbd7e2d554008d7450d2bafadfdb13a8fe19b61b104bf80428d1ae3c90120bc368bf8ce4d84484594237f82929bd37f8712797c7fe71
data/bin/lit CHANGED
@@ -8,7 +8,7 @@
8
8
  # lit rails server
9
9
  ################################################################################
10
10
 
11
- ENV['LIT_ENABLED'] = 'true'
11
+ ENV['LIT_ENABLED'] = Time.now.to_i.to_s
12
12
 
13
13
  # Get flags from arguments.
14
14
  args = []
data/lib/config.rb CHANGED
@@ -53,9 +53,6 @@ module LitCLI
53
53
  # Flag defaults when not supplied via command line.
54
54
  ##
55
55
 
56
- # Boolean on whether or not to step through each lit() breakpoint.
57
- @step = false
58
-
59
56
  # Array of statuses to filter by, for example: [:warn, :error, :fail]
60
57
  @status = nil
61
58
 
@@ -65,12 +62,23 @@ module LitCLI
65
62
  # Integer or float representing amount of seconds to delay each lit() by.
66
63
  @delay = 0
67
64
 
65
+ ##
66
+ # PRIVATE.
67
+ ##
68
+
69
+ # Boolean on whether or not to step through each lit() breakpoint.
70
+ # Setting to true here wont enable Pry, best to enable via command line.
71
+ @step = false
72
+
68
73
  cli_configure()
69
74
  end
70
75
 
71
76
  # Override config from command line.
72
77
  def cli_configure()
73
- @enabled = true if ENV['LIT_ENABLED'] == 'true'
78
+
79
+ # Enable lit via the command line.
80
+ @enabled = true if ENV['LIT_ENABLED'] && ENV['LIT_ENABLED'].to_i >= (Time.now.to_i() - 1)
81
+ return unless @enabled
74
82
 
75
83
  # Convert flag string to hash.
76
84
  flags = {}
data/lib/lit_cli.rb CHANGED
@@ -12,46 +12,77 @@ module LitCLI
12
12
  if @@config.enabled
13
13
  return if LitCLI.filter_status? status
14
14
  return if LitCLI.filter_type? type
15
- LitCLI.render(message, status, type, context)
16
- LitCLI.step()
15
+
16
+ indent = LitCLI.render(message, status, type, context)
17
+
18
+ LitCLI.step(indent)
19
+ yield if block_given?
20
+
17
21
  LitCLI.delay()
18
22
  end
19
23
  end
20
24
  alias 🔥 lit
21
25
 
22
26
  def self.render(message, status, type, context)
23
- text = "🔥"
27
+ output = "🔥"
24
28
 
25
29
  # Time.
26
30
  time = LitCLI.format(Time.now().strftime("%k:%M"), color: :cyan)
27
- text << " #{time}"
31
+ output << " #{time}"
28
32
 
29
33
  # Status.
30
34
  config = @@config.statuses[status]
31
- text << LitCLI.format(" #{config[:icon]} #{status.to_s}", config)
35
+ output << LitCLI.format(" #{config[:icon]} #{status.to_s}", config)
32
36
 
33
37
  # Type.
34
38
  if !@@config.types.nil? && @@config.types.has_key?(type)
35
39
  config = @@config.types[type]
36
40
  if config.has_key? :icon
37
- text << LitCLI.format(" #{config[:icon]} #{type.to_s}", config)
41
+ output << LitCLI.format(" #{config[:icon]} #{type.to_s}", config)
38
42
  else
39
- text << LitCLI.format(" #{type.to_s}", config)
43
+ output << LitCLI.format(" #{type.to_s}", config)
40
44
  end
41
45
  end
42
46
 
43
47
  # Context.
44
- text << LitCLI.format(" #{context}", styles: [:bold, :dim])
48
+ output << LitCLI.format(" #{context}", styles: [:bold, :dim])
49
+
50
+ # Line break.
51
+ while message.start_with?('^')
52
+ message.delete_prefix!('^').strip!
53
+ unless @@config.status || @@config.type
54
+ output = "\n" + output
55
+ end
56
+ end
57
+
58
+ # Indent.
59
+ indent = ''
60
+ while message.start_with?('>')
61
+ message.delete_prefix!('>').strip!
62
+ unless @@config.status || @@config.type
63
+ indent = indent + ' '
64
+ output = ' ' + output
65
+ end
66
+ end
67
+
68
+ # Highlight numbers and methods.
69
+ words = []
70
+ message.split(/(#\d+|\w+\(\))/).each do |word|
71
+ if word.start_with?('#') || word.end_with?(')')
72
+ words << @@pastel.yellow(word)
73
+ else
74
+ words << word
75
+ end
76
+ end
45
77
 
46
- # Message.
47
- text << " #{message}"
78
+ puts output << " " + words.join()
48
79
 
49
- puts text
80
+ return indent
50
81
  end
51
82
 
52
- def self.step()
83
+ def self.step(indent)
53
84
  if @@config.step
54
- puts "🔥 Press ENTER to step or P to Pry:"
85
+ puts "#{indent}🔥 Press ENTER to step or P to Pry:"
55
86
  input = gets.chomp
56
87
  binding while input == nil
57
88
  @@is_prying = true if input.downcase == "p"
@@ -145,7 +176,7 @@ module LitCLI
145
176
  def self.configure()
146
177
  yield(@@config)
147
178
 
148
- # Override config from command line.
179
+ # Override config from flags on command line.
149
180
  @@config.cli_configure()
150
181
  end
151
182
 
data/lib/lit_pry.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # Only override kernel methods when Lit's @step flag is true.
2
- if ENV['LIT_FLAGS'] && ENV['LIT_FLAGS'].include?('step')
2
+ if ENV['LIT_ENABLED'] && ENV['LIT_ENABLED'].to_i >= (Time.now.to_i() - 1) && ENV['LIT_FLAGS'] && ENV['LIT_FLAGS'].include?('step')
3
3
  require 'set'
4
4
 
5
5
  # TODO: Investigate RubyGems `require` before overriding.
@@ -61,24 +61,26 @@ if ENV['LIT_FLAGS'] && ENV['LIT_FLAGS'].include?('step')
61
61
  @@lit_processed_paths.add file_path
62
62
 
63
63
  new_lines = ''
64
+ line_count = 0
65
+ new_lines_count = 0
66
+
64
67
  File.foreach(file_path) do |line|
68
+ line_count = line_count + 1
65
69
 
66
70
  # Pass current directory into the next file's requires.
67
71
  if line.strip.start_with? 'require_relative '
68
72
  line = line.strip + ", '#{absolute_path.join('/')}'\n"
69
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
70
77
  else
71
78
  new_lines << line
72
79
  end
73
-
74
- # Add pry binding beneath each lit message.
75
- if line.strip.start_with? 'lit "'
76
- new_lines << "binding.pry if LitCLI.is_prying?\n"
77
- new_lines << "@@is_prying = false\n"
78
- end
79
80
  end
80
81
 
81
82
  eval(new_lines, get_binding(__dir__ = absolute_path), file_path)
83
+
82
84
  return true
83
85
  # Path has already been required.
84
86
  else
@@ -92,5 +94,16 @@ if ENV['LIT_FLAGS'] && ENV['LIT_FLAGS'].include?('step')
92
94
  # Setting file_path in eval() negates this fix but will keep just in case.
93
95
  return binding unless LitCLI.is_prying?
94
96
  end
97
+
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
105
+
106
+ false
107
+ end
95
108
  end
96
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.6.1
4
+ version: 0.8.0
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-08 00:00:00.000000000 Z
11
+ date: 2021-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pastel