spidy 0.0.2 → 0.0.3

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: 5ee6041bae6fd932f5b19a52890766192fd59e7ab2be070390e3a8ac16b511cf
4
- data.tar.gz: 49d00e22394f0d83d3b49aa8926710ee23c2bffae1c14ce469f3227b338b9cad
3
+ metadata.gz: 45d422fb444d14f2d8e72f68d897acfceb257cfc63a04b90ab6c1b5b6b4bcd02
4
+ data.tar.gz: 7047acace733723466be506c8031feea78b3e3b8e973327aad8ebebfabd8108f
5
5
  SHA512:
6
- metadata.gz: 82dd5bb591c47412c0648afe1a5ac7b971c8f1ccbf01708e3556d6edd2ca2a8d514ee3160cbf5cdc550c77d8e10b470eb6b70ff493f30d0b5458384cb18379a7
7
- data.tar.gz: 798f5ef00e24d12d14058bc6ad87a54d3a9d67f9d091ee64f1450ceed1008bee027d4a396d2d8cf449bacb895220384b2ddbf141ccfbe7fb8b9e6a5290183d74
6
+ metadata.gz: 01f8d7efed9be9f0d043de2131d8a39220629773b4f3ddaa36a03bc1a144e5d514e0982e05b20ad2c5aa8ae8ab8feaf3acb3d2f1ccbf4c397ff77501c833f65d
7
+ data.tar.gz: ca8dd34d812b3806ce6e7d13dfefda34ed1817b38359714e963e4b8665f39eecee934af4645f545ee60374e1ac9992295f3b0053a1580e23ff37cb1993fe68f5
data/lib/spidy/shell.rb CHANGED
@@ -7,12 +7,21 @@ require 'pry'
7
7
  #
8
8
  class Spidy::Shell
9
9
  attr_reader :definition_file
10
+ class_attribute :output_yielder, default: (proc { |result| STDOUT.puts(result.to_s) })
10
11
  delegate :namespace, :spiders, to: :definition_file
11
12
 
12
13
  def initialize(definition_file)
13
14
  @definition_file = definition_file
14
15
  end
15
16
 
17
+ def call(name)
18
+ exec(namespace[name&.to_sym] || namespace.values.first)
19
+ end
20
+
21
+ def each(name)
22
+ exec(spiders[name&.to_sym] || spiders.values.first)
23
+ end
24
+
16
25
  def function
17
26
  print <<~SHELL
18
27
  function spider() {
@@ -24,8 +33,22 @@ class Spidy::Shell
24
33
  SHELL
25
34
  end
26
35
 
27
- # rubocop:disable Metrics/MethodLength
28
36
  def build(name)
37
+ build_shell(name)
38
+ build_ruby(name)
39
+ end
40
+
41
+ def build_shell(name)
42
+ File.open("#{name}.sh", 'w') do |f|
43
+ f.write <<~SHELL
44
+ #!/bin/bash
45
+ eval "$(spidy $(dirname "${0}")/#{name}.rb shell)"
46
+ spider example
47
+ SHELL
48
+ end
49
+ end
50
+
51
+ def build_ruby(name)
29
52
  File.open("#{name}.rb", 'w') do |f|
30
53
  f.write <<~RUBY
31
54
  # frozen_string_literal: true
@@ -42,35 +65,18 @@ class Spidy::Shell
42
65
  end
43
66
  RUBY
44
67
  end
45
-
46
- File.open("#{name}.sh", 'w') do |f|
47
- f.write <<~SHELL
48
- #!/bin/bash
49
- eval "$(spidy $(dirname "${0}")/#{name}.rb shell)"
50
- spider example
51
- SHELL
52
- end
53
- end
54
- # rubocop:enable Metrics/MethodLength
55
-
56
- def call(name)
57
- exec(namespace[name&.to_sym] || namespace.values.first)
58
- end
59
-
60
- def each(name)
61
- exec(spiders[name&.to_sym] || spiders.values.first)
62
68
  end
63
69
 
64
70
  private
65
71
 
66
72
  def exec(command)
67
73
  fail "undefined commmand[#{name}]" if command.nil?
74
+ return command.call(&output_yielder) unless FileTest.pipe?(STDIN)
68
75
 
69
- yielder = proc { |result| STDOUT.puts(result.to_s) }
70
- if FileTest.pipe?(STDIN)
71
- STDIN.each { |line| command.call(line.strip, &yielder) }
72
- else
73
- command.call(&yielder)
76
+ STDIN.each do |line|
77
+ command.call(line.strip, &yielder)
78
+ rescue StandardError => e
79
+ STDERR.puts("#{line.strip} => \n #{e.message}")
74
80
  end
75
81
  end
76
82
  end
data/lib/spidy/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spidy
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spidy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - aileron
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-01 00:00:00.000000000 Z
11
+ date: 2019-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler