automatic 12.10.0 → 13.1.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.
- data/VERSION +1 -1
- data/automatic.gemspec +2 -2
- data/bin/automatic-config +3 -3
- data/doc/AUTHORS +1 -0
- data/doc/ChangeLog +11 -0
- data/doc/PLUGINS +3 -0
- data/doc/PLUGINS.ja +3 -0
- data/lib/automatic.rb +2 -2
- data/lib/automatic/feed_parser.rb +55 -2
- data/plugins/notify/ikachan.rb +1 -1
- data/plugins/publish/google_calendar.rb +2 -2
- data/plugins/publish/hatena_bookmark.rb +2 -2
- data/plugins/store/database.rb +10 -9
- data/plugins/store/full_text.rb +1 -1
- data/plugins/store/target_link.rb +7 -7
- data/plugins/subscription/feed.rb +1 -2
- data/plugins/subscription/link.rb +3 -20
- data/plugins/subscription/tumblr.rb +3 -22
- data/plugins/subscription/twitter.rb +2 -1
- data/spec/lib/automatic_spec.rb +2 -2
- data/spec/plugins/custom_feed/svn_log_spec.rb +2 -2
- data/spec/plugins/store/permalink_spec.rb +118 -5
- data/spec/plugins/subscription/link_spec.rb +3 -2
- data/spec/plugins/subscription/tumblr_spec.rb +4 -3
- data/spec/plugins/subscription/twitter_spec.rb +3 -2
- data/test/integration/test_svnlog.yml +1 -1
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
13.1.0
|
data/automatic.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "automatic"
|
8
|
-
s.version = "
|
8
|
+
s.version = "13.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["id774"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-01-08"
|
13
13
|
s.description = "Ruby General Automation Framework"
|
14
14
|
s.email = "idnanashi@gmail.com"
|
15
15
|
s.executables = ["automatic", "automatic-config"]
|
data/bin/automatic-config
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
# Author:: kzgs
|
5
5
|
# 774 <http://id774.net>
|
6
6
|
# Created:: Mar 11, 2012
|
7
|
-
# Updated::
|
7
|
+
# Updated:: Dec 20, 2012
|
8
8
|
# Copyright:: kzgs Copyright (c) 2012
|
9
9
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
10
10
|
|
@@ -62,7 +62,7 @@ subparsers = {
|
|
62
62
|
'feedparser' => lambda { |argv|
|
63
63
|
require 'automatic/feed_parser'
|
64
64
|
url = argv.shift || abort_with_usage("feedparser", "<url>")
|
65
|
-
rss_results = Automatic::FeedParser.
|
65
|
+
rss_results = Automatic::FeedParser.get(url)
|
66
66
|
pp rss_results
|
67
67
|
},
|
68
68
|
'inspect' => lambda { |argv|
|
@@ -70,7 +70,7 @@ subparsers = {
|
|
70
70
|
url = argv.shift || abort_with_usage("inspect", "<url>")
|
71
71
|
feeds = Feedbag.find(url)
|
72
72
|
pp feeds
|
73
|
-
rss_results = Automatic::FeedParser.
|
73
|
+
rss_results = Automatic::FeedParser.get(feeds.pop)
|
74
74
|
pp rss_results
|
75
75
|
},
|
76
76
|
'opmlparser' => lambda { |argv|
|
data/doc/AUTHORS
CHANGED
data/doc/ChangeLog
CHANGED
data/doc/PLUGINS
CHANGED
@@ -32,6 +32,7 @@ SubscriptionLink
|
|
32
32
|
urls:
|
33
33
|
- URL
|
34
34
|
- URL ...
|
35
|
+
interval: INTERVAL_FOR_SCRAPING (in seconds.)
|
35
36
|
|
36
37
|
|
37
38
|
SubscriptionTwitter
|
@@ -48,6 +49,7 @@ SubscriptionTwitter
|
|
48
49
|
urls:
|
49
50
|
- URL
|
50
51
|
- URL ...
|
52
|
+
interval: INTERVAL_FOR_SCRAPING (in seconds.)
|
51
53
|
|
52
54
|
|
53
55
|
SubscriptionTumblr
|
@@ -66,6 +68,7 @@ SubscriptionTumblr
|
|
66
68
|
- URL
|
67
69
|
- URL ...
|
68
70
|
pages: PAGES
|
71
|
+
interval: INTERVAL_FOR_SCRAPING (in seconds.)
|
69
72
|
|
70
73
|
|
71
74
|
FilterReverse
|
data/doc/PLUGINS.ja
CHANGED
@@ -32,6 +32,7 @@ SubscriptionLink
|
|
32
32
|
urls:
|
33
33
|
- URL
|
34
34
|
- URL ...
|
35
|
+
interval: スクレイピングの間隔 (秒数, 省略可)
|
35
36
|
|
36
37
|
|
37
38
|
SubscriptionTwitter
|
@@ -48,6 +49,7 @@ SubscriptionTwitter
|
|
48
49
|
urls:
|
49
50
|
- URL
|
50
51
|
- URL ...
|
52
|
+
interval: スクレイピングの間隔 (秒数, 省略可)
|
51
53
|
|
52
54
|
|
53
55
|
SubscriptionTumblr
|
@@ -66,6 +68,7 @@ SubscriptionTumblr
|
|
66
68
|
- URL
|
67
69
|
- URL ...
|
68
70
|
pages: PAGES
|
71
|
+
interval: スクレイピングの間隔 (秒数, 省略可)
|
69
72
|
|
70
73
|
|
71
74
|
FilterReverse
|
data/lib/automatic.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# Name:: Automatic::Ruby
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
4
|
# Created:: Feb 18, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: Jan 8, 2013
|
6
6
|
# Copyright:: 774 Copyright (c) 2012
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
@@ -13,7 +13,7 @@ module Automatic
|
|
13
13
|
require 'automatic/log'
|
14
14
|
require 'automatic/feed_parser'
|
15
15
|
|
16
|
-
VERSION = "
|
16
|
+
VERSION = "13.1.0"
|
17
17
|
USER_DIR = "/.automatic"
|
18
18
|
|
19
19
|
class << self
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Name:: Automatic::FeedParser
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
4
|
# Created:: Feb 19, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: Jan 8, 2013
|
6
6
|
# Copyright:: 774 Copyright (c) 2012
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
@@ -10,10 +10,12 @@ module Automatic
|
|
10
10
|
module FeedParser
|
11
11
|
require 'rss'
|
12
12
|
require 'uri'
|
13
|
+
require 'nokogiri'
|
13
14
|
|
14
|
-
def self.
|
15
|
+
def self.get(url)
|
15
16
|
begin
|
16
17
|
unless url.nil?
|
18
|
+
Automatic::Log.puts("info", "Parsing: #{url}")
|
17
19
|
feed = URI.parse(url).normalize
|
18
20
|
open(feed) {|http|
|
19
21
|
response = http.read
|
@@ -24,5 +26,56 @@ module Automatic
|
|
24
26
|
raise e
|
25
27
|
end
|
26
28
|
end
|
29
|
+
|
30
|
+
def self.create(feeds = [])
|
31
|
+
RSS::Maker.make("2.0") {|maker|
|
32
|
+
xss = maker.xml_stylesheets.new_xml_stylesheet
|
33
|
+
maker.channel.title = "Automatic Ruby"
|
34
|
+
maker.channel.description = "Automatic Ruby"
|
35
|
+
maker.channel.link = "https://github.com/id774/automaticruby"
|
36
|
+
maker.items.do_sort = true
|
37
|
+
|
38
|
+
unless feeds.nil?
|
39
|
+
feeds.each {|feed|
|
40
|
+
unless feed.link.nil?
|
41
|
+
Automatic::Log.puts("info", "Creating: #{feed.link}")
|
42
|
+
item = maker.items.new_item
|
43
|
+
item.title = feed.title
|
44
|
+
item.link = feed.link
|
45
|
+
begin
|
46
|
+
item.description = feed.description
|
47
|
+
item.author = feed.author
|
48
|
+
item.comments = feed.comments
|
49
|
+
item.date = feed.pubDate || Time.now
|
50
|
+
rescue NoMethodError
|
51
|
+
Automatic::Log.puts("warn", "Undefined field detected in feed.")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
}
|
55
|
+
end
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.parse(html)
|
60
|
+
RSS::Maker.make("2.0") {|maker|
|
61
|
+
xss = maker.xml_stylesheets.new_xml_stylesheet
|
62
|
+
maker.channel.title = "Automatic Ruby"
|
63
|
+
maker.channel.description = "Automatic Ruby"
|
64
|
+
maker.channel.link = "https://github.com/id774/automaticruby"
|
65
|
+
maker.items.do_sort = true
|
66
|
+
|
67
|
+
doc = Nokogiri::HTML(html)
|
68
|
+
(doc/:a).each {|link|
|
69
|
+
unless link[:href].nil?
|
70
|
+
item = maker.items.new_item
|
71
|
+
item.title = "Automatic Ruby"
|
72
|
+
item.link = link[:href]
|
73
|
+
item.date = Time.now
|
74
|
+
item.description = ""
|
75
|
+
end
|
76
|
+
}
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
27
80
|
end
|
28
81
|
end
|
data/plugins/notify/ikachan.rb
CHANGED
@@ -75,7 +75,7 @@ module Automatic::Plugin
|
|
75
75
|
feeds.items.each {|feed|
|
76
76
|
Automatic::Log.puts("info", %Q(Ikachan: [#{feed.link}] sending with params #{ikachan.params.to_s}...))
|
77
77
|
ikachan.post(feed.link, feed.title)
|
78
|
-
sleep @config['interval'].to_i
|
78
|
+
sleep @config['interval'].to_i unless @config['interval'].nil?
|
79
79
|
}
|
80
80
|
end
|
81
81
|
}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Name:: Automatic::Plugin::Publish::Googlecalendar
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
4
|
# Created:: Feb 24, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: Jan 8, 2013
|
6
6
|
# Copyright:: 774 Copyright (c) 2012
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
@@ -74,7 +74,7 @@ module Automatic::Plugin
|
|
74
74
|
unless feeds.nil?
|
75
75
|
feeds.items.each {|feed|
|
76
76
|
@gc.add('今日 ' + feed.title)
|
77
|
-
sleep @config['interval'].to_i
|
77
|
+
sleep @config['interval'].to_i unless @config['interval'].nil?
|
78
78
|
}
|
79
79
|
end
|
80
80
|
}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Name:: Automatic::Plugin::Publish::HatenaBookmark
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
4
|
# Created:: Feb 22, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: Jan 8, 2013
|
6
6
|
# Copyright:: 774 Copyright (c) 2012
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
@@ -89,7 +89,7 @@ module Automatic::Plugin
|
|
89
89
|
feeds.items.each {|feed|
|
90
90
|
Automatic::Log.puts("info", "Bookmarking: #{feed.link}")
|
91
91
|
hb.post(feed.link, nil)
|
92
|
-
sleep @config['interval'].to_i
|
92
|
+
sleep @config['interval'].to_i unless @config['interval'].nil?
|
93
93
|
}
|
94
94
|
end
|
95
95
|
}
|
data/plugins/store/database.rb
CHANGED
@@ -2,8 +2,9 @@
|
|
2
2
|
# Name:: Automatic::Plugin::Store::Database
|
3
3
|
# Author:: kzgs
|
4
4
|
# 774 <http://id774.net>
|
5
|
+
# soramugi <http://soramugi.net>
|
5
6
|
# Created:: Feb 27, 2012
|
6
|
-
# Updated::
|
7
|
+
# Updated:: Dec 20, 2012
|
7
8
|
# Copyright:: kzgs Copyright (c) 2012
|
8
9
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
9
10
|
|
@@ -15,18 +16,18 @@ module Automatic::Plugin
|
|
15
16
|
prepare_database
|
16
17
|
existing_records = model_class.find(:all)
|
17
18
|
@return_feeds = []
|
18
|
-
@pipeline.each {
|
19
|
+
@pipeline.each {|feeds|
|
19
20
|
unless feeds.nil?
|
20
|
-
|
21
|
-
feeds.items.each {
|
21
|
+
new_feeds = []
|
22
|
+
feeds.items.each {|feed|
|
22
23
|
unless feed.link.nil?
|
23
|
-
unless existing_records.detect {
|
24
|
+
unless existing_records.detect {|b| b.try(unique_key) == feed.link }
|
24
25
|
yield(feed)
|
25
|
-
|
26
|
+
new_feeds << feed
|
26
27
|
end
|
27
28
|
end
|
28
29
|
}
|
29
|
-
@return_feeds <<
|
30
|
+
@return_feeds << Automatic::FeedParser.create(new_feeds) if new_feeds.length > 0
|
30
31
|
end
|
31
32
|
}
|
32
33
|
@return_feeds
|
@@ -35,8 +36,8 @@ module Automatic::Plugin
|
|
35
36
|
private
|
36
37
|
|
37
38
|
def create_table
|
38
|
-
ActiveRecord::Migration.create_table(model_class.table_name) {
|
39
|
-
column_definition.each_pair {
|
39
|
+
ActiveRecord::Migration.create_table(model_class.table_name) {|t|
|
40
|
+
column_definition.each_pair {|column_name, column_type|
|
40
41
|
t.column column_name, column_type
|
41
42
|
}
|
42
43
|
}
|
data/plugins/store/full_text.rb
CHANGED
@@ -40,6 +40,7 @@ module Automatic::Plugin
|
|
40
40
|
|
41
41
|
def run
|
42
42
|
for_each_new_feed { |feed|
|
43
|
+
Automatic::Log.puts("info", "Saving: #{feed.link}")
|
43
44
|
begin
|
44
45
|
Blog.create(
|
45
46
|
:title => feed.title,
|
@@ -47,7 +48,6 @@ module Automatic::Plugin
|
|
47
48
|
:description => feed.description,
|
48
49
|
:content => feed.content_encoded,
|
49
50
|
:created_at => Time.now.strftime("%Y/%m/%d %X"))
|
50
|
-
Automatic::Log.puts("info", "Saving: #{feed.link}")
|
51
51
|
rescue
|
52
52
|
Automatic::Log.puts("warn", "Skip feed due to fault in save.")
|
53
53
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# Name:: Automatic::Plugin::Store::TargetLink
|
4
4
|
# Author:: 774 <http://id774.net>
|
5
5
|
# Created:: Feb 28, 2012
|
6
|
-
# Updated::
|
6
|
+
# Updated:: Jan 8, 2013
|
7
7
|
# Copyright:: 774 Copyright (c) 2012
|
8
8
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
9
9
|
|
@@ -30,14 +30,14 @@ module Automatic::Plugin
|
|
30
30
|
@pipeline.each {|feeds|
|
31
31
|
unless feeds.nil?
|
32
32
|
feeds.items.each {|feed|
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
unless feed.link.nil?
|
34
|
+
Automatic::Log.puts("info", "Downloading: #{feed.link}")
|
35
|
+
begin
|
36
36
|
wget(feed.link)
|
37
|
-
sleep @config['interval'].to_i
|
37
|
+
sleep @config['interval'].to_i unless @config['interval'].nil?
|
38
|
+
rescue
|
39
|
+
Automatic::Log.puts("error", "Error found during file download.")
|
38
40
|
end
|
39
|
-
rescue
|
40
|
-
Automatic::Log.puts("error", "Error found during file download.")
|
41
41
|
end
|
42
42
|
}
|
43
43
|
end
|
@@ -16,8 +16,7 @@ module Automatic::Plugin
|
|
16
16
|
def run
|
17
17
|
@config['feeds'].each {|feed|
|
18
18
|
begin
|
19
|
-
Automatic::
|
20
|
-
rss = Automatic::FeedParser.get_rss(feed)
|
19
|
+
rss = Automatic::FeedParser.get(feed)
|
21
20
|
@pipeline << rss
|
22
21
|
rescue
|
23
22
|
Automatic::Log.puts("error", "Fault in parsing: #{feed}")
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Name:: Automatic::Plugin::Subscription::Link
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
4
|
# Created:: Sep 18, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: Jan 8, 2013
|
6
6
|
# Copyright:: 774 Copyright (c) 2012
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
@@ -21,25 +21,8 @@ module Automatic::Plugin
|
|
21
21
|
Automatic::Log.puts("info", "Parsing: #{url}")
|
22
22
|
html = open(url).read
|
23
23
|
unless html.nil?
|
24
|
-
rss =
|
25
|
-
|
26
|
-
xss.href = "http://www.rssboard.org/rss-specification"
|
27
|
-
maker.channel.about = "http://feeds.rssboard.org/rssboard"
|
28
|
-
maker.channel.title = "Automatic Ruby"
|
29
|
-
maker.channel.description = "Automatic Ruby"
|
30
|
-
maker.channel.link = "http://www.rssboard.org/rss-specification"
|
31
|
-
maker.items.do_sort = true
|
32
|
-
doc = Nokogiri::HTML(html)
|
33
|
-
(doc/:a).each {|link|
|
34
|
-
unless link[:href].nil?
|
35
|
-
item = maker.items.new_item
|
36
|
-
item.title = "Automatic Ruby"
|
37
|
-
item.link = link[:href]
|
38
|
-
item.date = Time.now
|
39
|
-
item.description = "Automatic::Plugin::Subscription::Link"
|
40
|
-
end
|
41
|
-
}
|
42
|
-
}
|
24
|
+
rss = Automatic::FeedParser.parse(html)
|
25
|
+
sleep @config['interval'].to_i unless @config['interval'].nil?
|
43
26
|
@return_feeds << rss
|
44
27
|
end
|
45
28
|
end
|
@@ -2,15 +2,13 @@
|
|
2
2
|
# Name:: Automatic::Plugin::Subscription::Tumblr
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
4
|
# Created:: Oct 16, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: Jan 8, 2013
|
6
6
|
# Copyright:: 774 Copyright (c) 2012
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
9
9
|
module Automatic::Plugin
|
10
10
|
class SubscriptionTumblr
|
11
11
|
require 'open-uri'
|
12
|
-
require 'nokogiri'
|
13
|
-
require 'rss'
|
14
12
|
|
15
13
|
def initialize(config, pipeline=[])
|
16
14
|
@config = config
|
@@ -21,25 +19,8 @@ module Automatic::Plugin
|
|
21
19
|
Automatic::Log.puts("info", "Parsing: #{url}")
|
22
20
|
html = open(url).read
|
23
21
|
unless html.nil?
|
24
|
-
rss =
|
25
|
-
|
26
|
-
xss.href = "http://www.rssboard.org/rss-specification"
|
27
|
-
maker.channel.about = "http://feeds.rssboard.org/rssboard"
|
28
|
-
maker.channel.title = "Automatic Ruby"
|
29
|
-
maker.channel.description = "Automatic Ruby"
|
30
|
-
maker.channel.link = "http://www.rssboard.org/rss-specification"
|
31
|
-
maker.items.do_sort = true
|
32
|
-
doc = Nokogiri::HTML(html)
|
33
|
-
(doc/:a).each {|link|
|
34
|
-
unless link[:href].nil?
|
35
|
-
item = maker.items.new_item
|
36
|
-
item.title = "Automatic Ruby"
|
37
|
-
item.link = link[:href]
|
38
|
-
item.date = Time.now
|
39
|
-
item.description = "Automatic::Plugin::Subscription::Link"
|
40
|
-
end
|
41
|
-
}
|
42
|
-
}
|
22
|
+
rss = Automatic::FeedParser.parse(html)
|
23
|
+
sleep @config['interval'].to_i unless @config['interval'].nil?
|
43
24
|
@return_feeds << rss
|
44
25
|
end
|
45
26
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Name:: Automatic::Plugin::Subscription::Twitter
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
4
|
# Created:: Sep 9, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: Jan 8, 2013
|
6
6
|
# Copyright:: 774 Copyright (c) 2012
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
@@ -42,6 +42,7 @@ module Automatic::Plugin
|
|
42
42
|
item.description = content.search('[@class="js-tweet-text"]').text.to_s
|
43
43
|
}
|
44
44
|
}
|
45
|
+
sleep @config['interval'].to_i unless @config['interval'].nil?
|
45
46
|
@return_feeds << rss
|
46
47
|
end
|
47
48
|
end
|
data/spec/lib/automatic_spec.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# Author:: kzgs
|
4
4
|
# 774 <http://id774.net>
|
5
5
|
# Created:: Mar 9, 2012
|
6
|
-
# Updated::
|
6
|
+
# Updated:: Jan 8, 2013
|
7
7
|
# Copyright:: kzgs Copyright (c) 2012
|
8
8
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
9
9
|
|
@@ -26,7 +26,7 @@ describe Automatic do
|
|
26
26
|
|
27
27
|
describe "#version" do
|
28
28
|
specify {
|
29
|
-
Automatic.const_get(:VERSION).should == "
|
29
|
+
Automatic.const_get(:VERSION).should == "13.1.0"
|
30
30
|
}
|
31
31
|
end
|
32
32
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Name:: Automatic::Plugin::CustomFeed::SVNFLog
|
3
3
|
# Author:: kzgs
|
4
4
|
# Created:: Feb 29, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: Nov 3, 2012
|
6
6
|
# Copyright:: kzgs Copyright (c) 2012
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
@@ -15,7 +15,7 @@ describe Automatic::Plugin::CustomFeedSVNLog do
|
|
15
15
|
subject {
|
16
16
|
Automatic::Plugin::CustomFeedSVNLog.new(
|
17
17
|
{
|
18
|
-
'target' => 'http://
|
18
|
+
'target' => 'http://svn.apache.org/repos/asf/',
|
19
19
|
'fetch_items' => 2
|
20
20
|
})
|
21
21
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
# Name:: Automatic::Plugin::Store::Permalink
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
|
-
# Updated::
|
4
|
+
# Updated:: Dec 17, 2012
|
5
5
|
# Copyright:: 774 Copyright (c) 2012
|
6
6
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
7
7
|
|
@@ -11,14 +11,11 @@ require 'store/permalink'
|
|
11
11
|
require 'pathname'
|
12
12
|
|
13
13
|
describe Automatic::Plugin::StorePermalink do
|
14
|
-
|
14
|
+
it "should store 1 record for the new link" do
|
15
15
|
@db_filename = "test_permalink.db"
|
16
16
|
db_path = Pathname(AutomaticSpec.db_dir).cleanpath+"#{@db_filename}"
|
17
17
|
db_path.delete if db_path.exist?
|
18
18
|
Automatic::Plugin::StorePermalink.new({"db" => @db_filename}).run
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should store 1 record for the new link" do
|
22
19
|
instance = Automatic::Plugin::StorePermalink.new({"db" => @db_filename},
|
23
20
|
AutomaticSpec.generate_pipeline {
|
24
21
|
feed { item "http://github.com" }
|
@@ -30,6 +27,10 @@ describe Automatic::Plugin::StorePermalink do
|
|
30
27
|
end
|
31
28
|
|
32
29
|
it "should not store record for the existent link" do
|
30
|
+
@db_filename = "test_permalink.db"
|
31
|
+
db_path = Pathname(AutomaticSpec.db_dir).cleanpath+"#{@db_filename}"
|
32
|
+
db_path.delete if db_path.exist?
|
33
|
+
Automatic::Plugin::StorePermalink.new({"db" => @db_filename}).run
|
33
34
|
instance = Automatic::Plugin::StorePermalink.new({"db" => @db_filename},
|
34
35
|
AutomaticSpec.generate_pipeline {
|
35
36
|
feed { item "http://github.com" }
|
@@ -43,6 +44,10 @@ describe Automatic::Plugin::StorePermalink do
|
|
43
44
|
end
|
44
45
|
|
45
46
|
it "should be considered the case of the feed link nil" do
|
47
|
+
@db_filename = "test_permalink.db"
|
48
|
+
db_path = Pathname(AutomaticSpec.db_dir).cleanpath+"#{@db_filename}"
|
49
|
+
db_path.delete if db_path.exist?
|
50
|
+
Automatic::Plugin::StorePermalink.new({"db" => @db_filename}).run
|
46
51
|
instance = Automatic::Plugin::StorePermalink.new({"db" => @db_filename},
|
47
52
|
AutomaticSpec.generate_pipeline {
|
48
53
|
feed {
|
@@ -68,6 +73,39 @@ describe Automatic::Plugin::StorePermalink do
|
|
68
73
|
end
|
69
74
|
|
70
75
|
it "should be considered the case of duplicated links" do
|
76
|
+
@db_filename = "test_permalink.db"
|
77
|
+
db_path = Pathname(AutomaticSpec.db_dir).cleanpath+"#{@db_filename}"
|
78
|
+
db_path.delete if db_path.exist?
|
79
|
+
Automatic::Plugin::StorePermalink.new({"db" => @db_filename}).run
|
80
|
+
instance = Automatic::Plugin::StorePermalink.new({"db" => @db_filename},
|
81
|
+
AutomaticSpec.generate_pipeline {
|
82
|
+
feed {
|
83
|
+
item "http://id774.net/images/link_1.jpg"
|
84
|
+
item "http://id774.net/images/link_1.jpg"
|
85
|
+
item "http://id774.net/images/link_3.JPG"
|
86
|
+
item "http://id774.net/images/link_4.png"
|
87
|
+
item "http://id774.net/images/link_5.jpeg"
|
88
|
+
item "http://id774.net/images/link_6.PNG"
|
89
|
+
item nil
|
90
|
+
item "http://id774.net/images/link_8.gif"
|
91
|
+
item "http://id774.net/images/link_9.GIF"
|
92
|
+
item "http://id774.net/images/link_10.tiff"
|
93
|
+
item "http://id774.net/images/link_11.TIFF"
|
94
|
+
}
|
95
|
+
}
|
96
|
+
)
|
97
|
+
|
98
|
+
instance.run.should have(1).feed
|
99
|
+
lambda {
|
100
|
+
instance.run.should have(0).feed
|
101
|
+
}.should change(Automatic::Plugin::Permalink, :count).by(0)
|
102
|
+
end
|
103
|
+
|
104
|
+
it "No feed should be generated when there is same feed." do
|
105
|
+
@db_filename = "test_permalink.db"
|
106
|
+
db_path = Pathname(AutomaticSpec.db_dir).cleanpath+"#{@db_filename}"
|
107
|
+
db_path.delete if db_path.exist?
|
108
|
+
Automatic::Plugin::StorePermalink.new({"db" => @db_filename}).run
|
71
109
|
instance = Automatic::Plugin::StorePermalink.new({"db" => @db_filename},
|
72
110
|
AutomaticSpec.generate_pipeline {
|
73
111
|
feed {
|
@@ -86,6 +124,81 @@ describe Automatic::Plugin::StorePermalink do
|
|
86
124
|
}
|
87
125
|
)
|
88
126
|
|
127
|
+
instance.run.should have(1).feed
|
128
|
+
lambda {
|
129
|
+
instance.run.should have(0).feed
|
130
|
+
}.should change(Automatic::Plugin::Permalink, :count).by(0)
|
131
|
+
Automatic::Plugin::StorePermalink.new({"db" => @db_filename}).run
|
132
|
+
instance = Automatic::Plugin::StorePermalink.new({"db" => @db_filename},
|
133
|
+
AutomaticSpec.generate_pipeline {
|
134
|
+
feed {
|
135
|
+
item "http://id774.net/images/link_1.jpg"
|
136
|
+
item "http://id774.net/images/link_1.jpg"
|
137
|
+
item "http://id774.net/images/link_3.JPG"
|
138
|
+
item "http://id774.net/images/link_4.png"
|
139
|
+
item "http://id774.net/images/link_5.jpeg"
|
140
|
+
item "http://id774.net/images/link_6.PNG"
|
141
|
+
item nil
|
142
|
+
item "http://id774.net/images/link_8.gif"
|
143
|
+
item "http://id774.net/images/link_9.GIF"
|
144
|
+
item "http://id774.net/images/link_10.tiff"
|
145
|
+
item "http://id774.net/images/link_11.TIFF"
|
146
|
+
}
|
147
|
+
}
|
148
|
+
)
|
149
|
+
|
150
|
+
instance.run.should have(0).feed
|
151
|
+
lambda {
|
152
|
+
instance.run.should have(0).feed
|
153
|
+
}.should change(Automatic::Plugin::Permalink, :count).by(0)
|
154
|
+
end
|
155
|
+
|
156
|
+
it "Only new feed should be generated when there is new feed." do
|
157
|
+
@db_filename = "test_permalink.db"
|
158
|
+
db_path = Pathname(AutomaticSpec.db_dir).cleanpath+"#{@db_filename}"
|
159
|
+
db_path.delete if db_path.exist?
|
160
|
+
Automatic::Plugin::StorePermalink.new({"db" => @db_filename}).run
|
161
|
+
instance = Automatic::Plugin::StorePermalink.new({"db" => @db_filename},
|
162
|
+
AutomaticSpec.generate_pipeline {
|
163
|
+
feed {
|
164
|
+
item "http://id774.net/images/link_1.jpg"
|
165
|
+
item "http://id774.net/images/link_1.jpg"
|
166
|
+
item "http://id774.net/images/link_3.JPG"
|
167
|
+
item "http://id774.net/images/link_4.png"
|
168
|
+
item "http://id774.net/images/link_5.jpeg"
|
169
|
+
item "http://id774.net/images/link_6.PNG"
|
170
|
+
item nil
|
171
|
+
item "http://id774.net/images/link_8.gif"
|
172
|
+
item "http://id774.net/images/link_9.GIF"
|
173
|
+
item "http://id774.net/images/link_10.tiff"
|
174
|
+
item "http://id774.net/images/link_11.TIFF"
|
175
|
+
}
|
176
|
+
}
|
177
|
+
)
|
178
|
+
|
179
|
+
instance.run.should have(1).feed
|
180
|
+
lambda {
|
181
|
+
instance.run.should have(0).feed
|
182
|
+
}.should change(Automatic::Plugin::Permalink, :count).by(0)
|
183
|
+
Automatic::Plugin::StorePermalink.new({"db" => @db_filename}).run
|
184
|
+
instance = Automatic::Plugin::StorePermalink.new({"db" => @db_filename},
|
185
|
+
AutomaticSpec.generate_pipeline {
|
186
|
+
feed {
|
187
|
+
item "http://id774.net/images/link_1.jpg"
|
188
|
+
item "http://id774.net/images/link_1.jpg"
|
189
|
+
item "http://id774.net/images/link_3.JPG"
|
190
|
+
item "http://id774.net/images/link_4_2.png"
|
191
|
+
item "http://id774.net/images/link_5_2.jpeg"
|
192
|
+
item "http://id774.net/images/link_6.PNG"
|
193
|
+
item nil
|
194
|
+
item "http://id774.net/images/link_8.gif"
|
195
|
+
item "http://id774.net/images/link_9.GIF"
|
196
|
+
item "http://id774.net/images/link_10.tiff"
|
197
|
+
item "http://id774.net/images/link_11.TIFF"
|
198
|
+
}
|
199
|
+
}
|
200
|
+
)
|
201
|
+
|
89
202
|
instance.run.should have(1).feed
|
90
203
|
lambda {
|
91
204
|
instance.run.should have(0).feed
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Name:: Automatic::Plugin::Subscription::Link
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
4
|
# Created:: Sep 18, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: Jan 8, 2013
|
6
6
|
# Copyright:: 774 Copyright (c) 2012
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
@@ -34,7 +34,8 @@ describe Automatic::Plugin::SubscriptionLink do
|
|
34
34
|
subject {
|
35
35
|
Automatic::Plugin::SubscriptionLink.new(
|
36
36
|
{ 'urls' => [
|
37
|
-
"http://id774.net"]
|
37
|
+
"http://id774.net"],
|
38
|
+
'interval' => 5
|
38
39
|
}
|
39
40
|
)
|
40
41
|
}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Name:: Automatic::Plugin::Subscription::Tumblr
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
4
|
# Created:: Oct 16, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: Jan 8, 2013
|
6
6
|
# Copyright:: 774 Copyright (c) 2012
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
@@ -47,11 +47,12 @@ describe Automatic::Plugin::SubscriptionTumblr do
|
|
47
47
|
Automatic::Plugin::SubscriptionTumblr.new(
|
48
48
|
{ 'urls' => [
|
49
49
|
"http://reblog.id774.net"],
|
50
|
-
'pages' =>
|
50
|
+
'pages' => 3,
|
51
|
+
'interval' => 5
|
51
52
|
}
|
52
53
|
)
|
53
54
|
}
|
54
55
|
|
55
|
-
its(:run) { should have(
|
56
|
+
its(:run) { should have(3).item }
|
56
57
|
end
|
57
58
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Name:: Automatic::Plugin::Subscription::Twitter
|
3
3
|
# Author:: 774 <http://id774.net>
|
4
4
|
# Created:: Sep 10, 2012
|
5
|
-
# Updated::
|
5
|
+
# Updated:: Jan 8, 2013
|
6
6
|
# Copyright:: 774 Copyright (c) 2012
|
7
7
|
# License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
|
8
8
|
|
@@ -34,7 +34,8 @@ describe Automatic::Plugin::SubscriptionTwitter do
|
|
34
34
|
subject {
|
35
35
|
Automatic::Plugin::SubscriptionTwitter.new(
|
36
36
|
{ 'urls' => [
|
37
|
-
"http://id774.net/test/twitter/favorites.html"]
|
37
|
+
"http://id774.net/test/twitter/favorites.html"],
|
38
|
+
'interval' => 5
|
38
39
|
}
|
39
40
|
)
|
40
41
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: automatic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 13.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sqlite3
|