gm-notepad 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7132b07f0d60930e2ee6872e5b61cdc7c316b948911b73ba3a03ea2b55425b85
4
- data.tar.gz: 06a8a66713c90f704e1756510f799a810b96e98233141100a17c122a99bbcc2b
3
+ metadata.gz: 183a799326643a98e2ee4936d5788549453746e1f74fcd5439b85ffbcfbb24f8
4
+ data.tar.gz: 1e55a32eaab16d88b6ae07ecfa155b01fb2c261943d80cf95175200b3c239553
5
5
  SHA512:
6
- metadata.gz: eb74e6192b9d77c1d48b46be76651a6fea524d481a88537f63ae20f041a8b3b0a370773ca7c6efe0c2ea293c4ddaa9bfa1e6b1196885829a8a35e7b5847a12a4
7
- data.tar.gz: '04984f322e40f16053b54210262691e0336024bb73b9dd72c78a9b0f1262d1597e9d6f9bef4969970179366c0d62c16ba8a08bb6a78ed6a269059cb502756582'
6
+ metadata.gz: 0ca9a59b30268a02d7e94718276f597f6c120f4f5cfa120e0f6159a2ee340eb7e69491326d1f04c148994b040f704b876acfd53f02d463b66ff407e0990b34de
7
+ data.tar.gz: 6207a2cd3628d05ebf53e97e232c25c3ee1cb5bfd36a909ed6177ff4c79089957ab32c3829badbb11863a5a72bc814de0ddf93c562d335e104775a4ce2de95d0
data/gm-notepad.gemspec CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency "dry-container"
27
27
  spec.add_dependency "dry-initializer"
28
28
  spec.add_dependency "term-ansicolor"
29
+ spec.add_dependency "popen4"
29
30
  spec.add_development_dependency "bundler"
30
31
  spec.add_development_dependency "rake"
31
32
  spec.add_development_dependency "rspec"
@@ -11,6 +11,22 @@ module Gm
11
11
  Config
12
12
  end
13
13
 
14
+ # Responsible for handling command line parsing. I wanted a separate function to unit test.
15
+ register "shell_handler" do
16
+ require "popen4"
17
+ ->(input) do
18
+ output = ""
19
+ POpen4.popen4(input.to_s) do |stdout, stderr, stdin, pid|
20
+ output = stdout.read.strip
21
+ end
22
+ if output.empty?
23
+ "# Command Not Found: #{input.to_s.inspect}"
24
+ else
25
+ output
26
+ end
27
+ end
28
+ end
29
+
14
30
  register "table_registry" do
15
31
  require 'gm/notepad/table_registry'
16
32
  TableRegistry.build_and_load
@@ -1,9 +1,11 @@
1
1
  require "gm/notepad/input_handlers/default_handler"
2
- require "shellwords"
3
2
  module Gm
4
3
  module Notepad
5
4
  module InputHandlers
5
+ # Responsible for handling shell out commands
6
6
  class ShellOutHandler < DefaultHandler
7
+ option :shell_handler, default: -> { Container.resolve(:shell_handler) }
8
+
7
9
  SHELL_OUT_HANDLER_REGEXP = /^`/.freeze
8
10
  TO_OUTPUT_REGEXP = /^\>/.freeze
9
11
 
@@ -20,8 +22,7 @@ module Gm
20
22
  else
21
23
  to_output = false
22
24
  end
23
- command = input.to_s.split
24
- response = `#{command.shelljoin}`.strip
25
+ response = shell_handler.call(input)
25
26
 
26
27
  input.for_rendering(
27
28
  text: response,
@@ -1,5 +1,5 @@
1
1
  module Gm
2
2
  module Notepad
3
- VERSION = "0.0.13"
3
+ VERSION = "0.0.14"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gm-notepad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Friesen
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: popen4
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: bundler
85
99
  requirement: !ruby/object:Gem::Requirement