seiya 0.0.2 → 0.0.3

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
  SHA1:
3
- metadata.gz: a243544d23bb0e78a9f44914427965765dcbb16c
4
- data.tar.gz: 6396685f3efacc40b99383600022a63ddb7a9bd7
3
+ metadata.gz: 773e5110dc60954f583477e9d687fa0c0d4c1d12
4
+ data.tar.gz: ad74ed26b1ab7768498fa79a9485865d07e2019e
5
5
  SHA512:
6
- metadata.gz: 51f05f8ef56f00a466867df76259ed09b7c629e84b0626001596a7bb492010d3221c3cac7bb160d64f1df4096e45b3f7c33e7f576eceb44453411c40d760c4a0
7
- data.tar.gz: 67c7618b9a93605a0a1e7dbc85ec652c2e1c092b1e69420406c9b328d9aeab4bfe5cff1d68384389f201f468a684134f73e1ab50a61dec5d74e40631de014480
6
+ metadata.gz: b57e9683866b759e76a23fa38baab25fa4070c71226bb787d682f3f9b4e4393494e05435de93c6f1104a1bc3f11e9af4d8ca3270f21bb2e02164e135c9a2f5ce
7
+ data.tar.gz: 221eb7a9590ceb0e4f9a3992354ef0a7344d85701c0a71b8ef50ee496ee5491543a9c235bad5aaf1faa59573a4561cc14bf1c10be246765aed91dcdc43a67d92
data/bin/seiya CHANGED
@@ -13,7 +13,7 @@ OptionParser.new do |opts|
13
13
  options[:version] = v
14
14
  end
15
15
 
16
- opts.on '-tTask', '--task=Task', 'seiya task' do |t|
16
+ opts.on '-tTask', '--task=Task', 'run a seiya task' do |t|
17
17
  options[:task] = t
18
18
  end
19
19
 
@@ -21,6 +21,10 @@ OptionParser.new do |opts|
21
21
  options[:args] = [] unless options[:args]
22
22
  options[:args] << a
23
23
  end
24
+
25
+ opts.on '-cTask', '--create=Task', 'create a seiya task' do |t|
26
+ options[:create] = t
27
+ end
24
28
  end.parse!
25
29
 
26
30
  def extend_load_path(path)
@@ -50,13 +54,18 @@ if options.key? :task
50
54
  task_name = options[:task]
51
55
  begin
52
56
  task = Seiya.get_task task_name
53
- task.run
54
57
  rescue NameError
55
58
  puts "No task named: #{task_name}"
56
59
  exit!
57
60
  end
61
+ task.run
58
62
  end
59
63
 
60
64
  if options.key? :version
61
65
  puts Seiya::VERSION
62
66
  end
67
+
68
+ if options.key? :create
69
+ task_name = options[:create]
70
+ Seiya.gen_task_file task_name
71
+ end
data/lib/seiya/item.rb CHANGED
@@ -1,8 +1,14 @@
1
+ require 'json'
2
+
1
3
  module Seiya
2
4
  class Item
3
- def initialize(h = {})
5
+ def initialize(data = {})
4
6
  @data = {}
5
- @data.merge!(h)
7
+ @data.merge!(data)
8
+ end
9
+
10
+ def load(json_str)
11
+ @data.merge!(JSON.parse json_str)
6
12
  end
7
13
 
8
14
  def [](key)
@@ -16,5 +22,13 @@ module Seiya
16
22
  def inspect
17
23
  @data.inspect
18
24
  end
25
+
26
+ def to_h
27
+ @data
28
+ end
29
+
30
+ def to_json
31
+ @data.to_json
32
+ end
19
33
  end
20
34
  end
data/lib/seiya/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Seiya
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
data/lib/seiya.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'fileutils'
1
2
  require 'seiya/version'
2
3
  require 'seiya/request'
3
4
  require 'seiya/task'
@@ -19,10 +20,11 @@ module Seiya
19
20
  require 'seiya/util'
20
21
  conf = IniFile.load conf_file
21
22
  settings_file = conf.to_h.fetch('global', {}).fetch('settings', 'settings')
22
- require settings_file
23
+ settings_require_str, settings_const_str = settings_file.split '|'
24
+ require settings_require_str
23
25
 
24
26
  begin
25
- pipelines = ::Settings::PIPELINES
27
+ pipelines = Util.get_const "#{settings_const_str.empty? ? 'Settings' : settings_const_str}::PIPELINES"
26
28
  rescue NameError
27
29
  pipelines = {}
28
30
  end
@@ -49,4 +51,64 @@ module Seiya
49
51
  clazz = Util::get_const task_name
50
52
  clazz.new
51
53
  end
54
+
55
+ def gen_task_file(task_name)
56
+ base_path = "#{task_name}/#{task_name}"
57
+ FileUtils.mkpath "#{base_path}"
58
+ FileUtils.mkpath "#{base_path}/tasks"
59
+ FileUtils.mkpath "#{base_path}/items"
60
+ FileUtils.mkpath "#{base_path}/pipelines"
61
+ File.write("#{task_name}/seiya.ini",
62
+ %([global]
63
+ settings = #{task_name}/settings|Settings
64
+ ))
65
+ File.write("#{base_path}/settings.rb",
66
+ %(module Settings
67
+ PIPELINES = {
68
+ '#{task_name}/pipelines|Pipelines::Test' => 10,
69
+ }
70
+ end))
71
+ File.write("#{base_path}/items.rb", %(require 'items/test'))
72
+ File.write("#{base_path}/pipelines.rb", %(require 'pipelines/test'))
73
+ File.write("#{base_path}/tasks.rb", %(require 'tasks/test'))
74
+ File.write("#{base_path}/items/test.rb",
75
+ %(require 'seiya'
76
+
77
+ module Items
78
+ class Test < Seiya::Item
79
+ def to_s
80
+ inspect
81
+ end
82
+ end
83
+ end))
84
+ File.write("#{base_path}/pipelines/test.rb",
85
+ %(require 'seiya'
86
+
87
+ module Pipelines
88
+ class Test < Seiya::Pipeline
89
+ def process_item(item)
90
+ puts 'I am in Test pipeline!'
91
+ item.to_s
92
+ puts item
93
+ item
94
+ end
95
+ end
96
+ end))
97
+ File.write("#{base_path}/tasks/test.rb",
98
+ %(require 'seiya'
99
+ require_relative '../items'
100
+
101
+ module Tasks
102
+ class Test < Seiya::Task
103
+ def initialize
104
+ @start_urls = ['http://www.baidu.com/']
105
+ end
106
+
107
+ def parse(response, enum)
108
+ item = Items::Test.new url: response.url
109
+ enum.yield item
110
+ end
111
+ end
112
+ end))
113
+ end
52
114
  end
@@ -3,7 +3,7 @@ require 'seiya'
3
3
  module Items
4
4
  class Test < Seiya::Item
5
5
  def to_s
6
- 'fuck'
6
+ 'I am a Test item'
7
7
  end
8
8
  end
9
9
  end
@@ -1,2 +1,2 @@
1
1
  [global]
2
- settings = aa/settings
2
+ settings = aa/settings|Settings
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seiya
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
  - yetone