gm-notepad 0.0.13 → 0.0.14

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: 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