pry-shell 0.2.1 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2f9a629aa438ee37cbeba5f9f4773b188e8df465c78847509c3892257408fa1d
4
- data.tar.gz: '082b79f813e2e9d96fdf459f4d92113d5ec112897ddc4e04bda79c687e832fbb'
3
+ metadata.gz: 339b96b3477c3abfe68e09e2112a2c4d59a533466d2d800174fe1d255530e84f
4
+ data.tar.gz: 47cede13047e2c16cc427f75fe9333600620a6a7703f259fb8e0c378a77b183e
5
5
  SHA512:
6
- metadata.gz: 64daa0a9fc25ade4ed370e3940b60030afa3340856db5a28f7ff3c79c9b7533ce3579a9ed3f72faff4614b620b7c670c6d85814ac993867818f376b978f0dd7b
7
- data.tar.gz: 19055e234eefd7d82e7c95dd1bc329e57b423a3bb85e4f88fa0c86e8fee164c73e5784b07fccd272766cb0f0991c2256f810720016ae3452ad1fb714dd0e9f0b
6
+ metadata.gz: e9e426725066c6653d8a5c14e5ff2df0ecfb56fcfa0368e96ea6ca7b1fccab3ba42be1b07cb67b4e705f26275e59af59c74a52e0fbf74b2bde6aec895fe4cec8
7
+ data.tar.gz: 46ec623b15d359d3d108c94697a088cb094bf27ae9885be6177f390baad36f5cd09c9be87561002e78ce43f05563c5aeee210bec24fa03cc044628682677f675
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pry-shell (0.2.1)
4
+ pry-shell (0.3.0)
5
5
  pry (~> 0.13.0)
6
6
  tty-markdown
7
7
  tty-prompt
data/lib/pry/shell.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require_relative "shell/version"
4
4
  require_relative "shell/client"
5
5
  require_relative "shell/command"
6
+ require_relative "shell/configuration"
6
7
  require_relative "shell/logger"
7
8
  require_relative "shell/registry"
8
9
  require_relative "shell/server"
@@ -15,6 +16,8 @@ require_relative "shell/io/pager"
15
16
  require_relative "shell/ui"
16
17
  require_relative "shell/ui/base"
17
18
  require_relative "shell/ui/about"
19
+ require_relative "shell/ui/configuration"
20
+ require_relative "shell/ui/configuration/auto_connect"
18
21
  require_relative "shell/ui/list"
19
22
  require_relative "shell/ui/menu"
20
23
  require_relative "shell/ui/session"
@@ -25,12 +28,9 @@ class Pry
25
28
  DEFAULT_PORT = "1881"
26
29
 
27
30
  class << self
28
- attr_reader :registry
29
-
30
- def run(host:, port:, auto_connect:)
31
- @registry = Registry.new(auto_connect)
32
-
33
- new(host, port, registry).run
31
+ def run
32
+ run_server
33
+ draw_ui
34
34
  end
35
35
 
36
36
  def active_shell_options(thread: Thread.current)
@@ -40,29 +40,24 @@ class Pry
40
40
  def active_shell_options=(value)
41
41
  Thread.current[:active_shell_options] = value
42
42
  end
43
- end
44
43
 
45
- def initialize(host, port, registry)
46
- @host = host
47
- @port = port
48
- @registry = registry
49
- end
50
-
51
- def run
52
- run_server
53
- draw_ui
54
- end
44
+ def configuration
45
+ @configuration ||= Configuration.new
46
+ end
55
47
 
56
- private
48
+ def registry
49
+ @registry ||= Registry.new
50
+ end
57
51
 
58
- attr_reader :host, :port, :registry
52
+ private
59
53
 
60
- def run_server
61
- Server.new(host, port, registry).run
62
- end
54
+ def run_server
55
+ Server.run
56
+ end
63
57
 
64
- def draw_ui
65
- UI.draw!
58
+ def draw_ui
59
+ UI.draw!
60
+ end
66
61
  end
67
62
  end
68
63
  end
data/lib/pry/shell/cli.rb CHANGED
@@ -10,35 +10,27 @@ class Pry
10
10
  def run
11
11
  options.parse!
12
12
 
13
- Shell.run(**config)
13
+ Shell.run
14
14
 
15
15
  join_drb_thread
16
16
  end
17
17
 
18
18
  private
19
19
 
20
- def config
21
- @config ||= {
22
- host: DEFAULT_HOST,
23
- port: DEFAULT_PORT,
24
- auto_connect: false
25
- }
26
- end
27
-
28
20
  def options # rubocop:disable Metrics/MethodLength
29
21
  @parser = OptionParser.new do |o|
30
22
  o.banner = "Usage: bundle exec pry-shell [options]"
31
23
 
32
24
  o.on "-h", "--host HOST", "Host name" do |arg|
33
- config[:host] = arg
25
+ Shell.configuration.host = arg
34
26
  end
35
27
 
36
28
  o.on "-p", "--post PORT", "Port of the shell application" do |arg|
37
- config[:port] = arg
29
+ Shell.configuration.port = arg
38
30
  end
39
31
 
40
32
  o.on "-a", "--auto-connect", "Connect automatically to the first Pry session" do
41
- config[:auto_connect] = true
33
+ Shell.configuration.auto_connect = true
42
34
  end
43
35
 
44
36
  o.on "-v", "--version", "Print version and exit" do
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Pry
4
+ class Shell
5
+ class Configuration
6
+ CONFIG_KEYS = {
7
+ host: "localhost",
8
+ port: "1881",
9
+ auto_connect: false
10
+ }.freeze
11
+
12
+ CONFIG_KEYS.each do |config_key, default_value|
13
+ attr_writer config_key
14
+
15
+ define_method(config_key) do
16
+ return default_value unless instance_variable_defined?("@#{config_key}")
17
+
18
+ instance_variable_get("@#{config_key}")
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -7,10 +7,9 @@ class Pry
7
7
  class Registry
8
8
  include DRb::DRbUndumped
9
9
 
10
- attr_reader :auto_connect, :clients, :current, :mutex
10
+ attr_reader :clients, :current, :mutex
11
11
 
12
- def initialize(auto_connect)
13
- @auto_connect = auto_connect
12
+ def initialize
14
13
  @clients = {}
15
14
  @mutex = Mutex.new
16
15
  end
@@ -20,7 +19,7 @@ class Pry
20
19
  Logger.debug("New client connected - #{client}")
21
20
 
22
21
  @clients[id] = client
23
- connect_to(client) if auto_connect
22
+ connect_to(client) if Shell.configuration.auto_connect
24
23
  end
25
24
  end
26
25
 
@@ -5,24 +5,18 @@ require "drb"
5
5
  class Pry
6
6
  class Shell
7
7
  class Server
8
- def initialize(host, port, registry)
9
- @host = host
10
- @port = port
11
- @registry = registry
12
- end
13
-
14
- def run
15
- Logger.info("Running Drb server on '#{uri}'")
16
-
17
- DRb.start_service(uri, registry)
18
- end
8
+ class << self
9
+ def run
10
+ Logger.info("Running Drb server on '#{uri}'")
19
11
 
20
- private
12
+ DRb.start_service(uri, Shell.registry)
13
+ end
21
14
 
22
- attr_reader :host, :port, :registry
15
+ private
23
16
 
24
- def uri
25
- "druby://#{host}:#{port}"
17
+ def uri
18
+ "druby://#{Shell.configuration.host}:#{Shell.configuration.port}"
19
+ end
26
20
  end
27
21
  end
28
22
  end
data/lib/pry/shell/ui.rb CHANGED
@@ -8,6 +8,7 @@ class Pry
8
8
  class << self
9
9
  def draw!
10
10
  UI::Menu.draw!
11
+ draw!
11
12
  rescue StopMainUI
12
13
  sleep
13
14
  draw!
@@ -42,7 +42,7 @@ class Pry
42
42
  end
43
43
 
44
44
  def draw_footer
45
- return_menu_prompt
45
+ prompt.keypress("Press any key to return to the menu...")
46
46
  end
47
47
 
48
48
  def header
@@ -60,12 +60,6 @@ class Pry
60
60
  def print_markdown(text)
61
61
  puts TTY::Markdown.parse(text)
62
62
  end
63
-
64
- def return_menu_prompt
65
- prompt.keypress("Press any key to return to the menu...")
66
-
67
- Menu.draw!
68
- end
69
63
  end
70
64
  end
71
65
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Pry
4
+ class Shell
5
+ class UI
6
+ class Configuration < Base
7
+ HEADER = "PRY-SHELL Configuration"
8
+ ITEMS = [
9
+ { name: "Auto-connect", value: "auto_connect" },
10
+ { name: "Go back to menu", value: "menu" }
11
+ ].freeze
12
+ ACTIONS = {
13
+ "auto_connect" => -> { AutoConnect.draw! & draw! },
14
+ "menu" => -> {}
15
+ }.freeze
16
+
17
+ class << self
18
+ def draw_content
19
+ selection = prompt.select("Select a configuration item to change it's value", ITEMS)
20
+
21
+ ACTIONS[selection].call
22
+ end
23
+
24
+ def draw_footer; end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Pry
4
+ class Shell
5
+ class UI
6
+ class Configuration
7
+ class AutoConnect < Base
8
+ class << self
9
+ def draw!
10
+ Shell.configuration.auto_connect = show_prompt
11
+ end
12
+
13
+ private
14
+
15
+ def show_prompt
16
+ prompt.select("Accept connections automatically?", cycle: true) do |config|
17
+ config.default default_value
18
+
19
+ config.choice "yes", true
20
+ config.choice "no", false
21
+ end
22
+ end
23
+
24
+ def default_value
25
+ Shell.configuration.auto_connect ? "yes" : "no"
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -7,11 +7,13 @@ class Pry
7
7
  HEADER = "PRY-SHELL Main Menu"
8
8
  ITEMS = [
9
9
  { name: "1) Available sessions", value: "list" },
10
- { name: "2) About pry-shell", value: "about" },
11
- { name: "3) Quit", value: "quit" }
10
+ { name: "2) Configuration", value: "configuration" },
11
+ { name: "3) About pry-shell", value: "about" },
12
+ { name: "4) Quit", value: "quit" }
12
13
  ].freeze
13
14
  MENU_ACTIONS = {
14
15
  "list" => -> { List.draw! },
16
+ "configuration" => -> { Configuration.draw! },
15
17
  "about" => -> { About.draw! },
16
18
  "quit" => -> { clear! && exit(0) }
17
19
  }.freeze
@@ -23,6 +25,9 @@ class Pry
23
25
  switch_to(selection)
24
26
  end
25
27
 
28
+ # Override this to remove "press any key" prompt
29
+ def draw_footer; end
30
+
26
31
  def switch_to(selected_ui)
27
32
  MENU_ACTIONS[selected_ui].call
28
33
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  class Pry
4
4
  class Shell
5
- VERSION = "0.2.1"
5
+ VERSION = "0.3.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-shell
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mehmet Emin INAC
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-12 00:00:00.000000000 Z
11
+ date: 2021-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -75,6 +75,7 @@ files:
75
75
  - lib/pry/shell/cli.rb
76
76
  - lib/pry/shell/client.rb
77
77
  - lib/pry/shell/command.rb
78
+ - lib/pry/shell/configuration.rb
78
79
  - lib/pry/shell/io/base.rb
79
80
  - lib/pry/shell/io/editor.rb
80
81
  - lib/pry/shell/io/input.rb
@@ -92,6 +93,8 @@ files:
92
93
  - lib/pry/shell/ui.rb
93
94
  - lib/pry/shell/ui/about.rb
94
95
  - lib/pry/shell/ui/base.rb
96
+ - lib/pry/shell/ui/configuration.rb
97
+ - lib/pry/shell/ui/configuration/auto_connect.rb
95
98
  - lib/pry/shell/ui/list.rb
96
99
  - lib/pry/shell/ui/menu.rb
97
100
  - lib/pry/shell/ui/session.rb