automatic 12.3.0 → 12.3.1

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.
Files changed (52) hide show
  1. data/Gemfile +1 -0
  2. data/README.md +54 -36
  3. data/Rakefile +14 -0
  4. data/VERSION +1 -1
  5. data/automatic.gemspec +17 -5
  6. data/bin/automatic +37 -3
  7. data/bin/automatic-config +77 -0
  8. data/config/default.yml +9 -12
  9. data/doc/ChangeLog +32 -8
  10. data/doc/PLUGINS +205 -0
  11. data/doc/PLUGINS.ja +2 -3
  12. data/doc/README +488 -0
  13. data/doc/README.ja +195 -131
  14. data/lib/automatic/feed_parser.rb +1 -9
  15. data/lib/automatic/log.rb +1 -9
  16. data/lib/automatic/opml.rb +239 -0
  17. data/lib/automatic/pipeline.rb +16 -10
  18. data/lib/automatic/recipe.rb +3 -4
  19. data/lib/automatic.rb +32 -38
  20. data/lib/config/validator.rb +83 -0
  21. data/plugins/custom_feed/svn_log.rb +1 -1
  22. data/plugins/filter/ignore.rb +9 -1
  23. data/plugins/notify/ikachan.rb +7 -6
  24. data/plugins/publish/hatena_bookmark.rb +6 -9
  25. data/script/build +63 -0
  26. data/spec/lib/automatic/pipeline_spec.rb +55 -0
  27. data/spec/lib/automatic_spec.rb +77 -0
  28. data/spec/lib/pipeline_spec.rb +67 -0
  29. data/spec/plugins/filter/ignore_spec.rb +16 -0
  30. data/spec/plugins/filter/image_spec.rb +4 -4
  31. data/spec/plugins/filter/tumblr_resize_spec.rb +4 -4
  32. data/spec/plugins/notify/ikachan_spec.rb +30 -0
  33. data/spec/plugins/publish/console_spec.rb +1 -2
  34. data/spec/plugins/publish/hatena_bookmark_spec.rb +36 -1
  35. data/spec/plugins/store/full_text_spec.rb +0 -2
  36. data/spec/plugins/store/permalink_spec.rb +0 -1
  37. data/spec/plugins/store/target_link_spec.rb +0 -1
  38. data/spec/plugins/subscription/feed_spec.rb +0 -1
  39. data/spec/spec_helper.rb +6 -4
  40. data/spec/user_dir/plugins/store/mock.rb +12 -0
  41. data/test/fixtures/sampleOPML.xml +11 -0
  42. data/test/integration/test_activerecord.yml +2 -2
  43. data/test/integration/test_fulltext.yml +3 -3
  44. data/test/integration/test_hatenabookmark.yml +6 -2
  45. data/test/integration/test_ignore.yml +4 -1
  46. data/test/integration/test_ignore2.yml +1 -4
  47. data/test/integration/test_image2local.yml +3 -5
  48. data/test/integration/test_svnlog.yml +2 -1
  49. data/test/integration/test_tumblr2local.yml +3 -3
  50. metadata +43 -22
  51. data/utils/auto_discovery.rb +0 -18
  52. data/utils/opml_parser.rb +0 -247
data/Gemfile CHANGED
@@ -8,6 +8,7 @@ gem 'hashie'
8
8
  gem 'activerecord', '~>3'
9
9
  gem 'gcalapi'
10
10
  gem 'xml-simple'
11
+ gem 'feedbag'
11
12
 
12
13
  group :test do
13
14
  gem 'rspec'
data/README.md CHANGED
@@ -3,14 +3,21 @@ Automatic Ruby
3
3
 
4
4
  **Ruby General Automation Framework**
5
5
 
6
- See doc/README.ja file.
7
- (document written in Japanese.)
8
6
 
7
+ Description
8
+ -----------
9
+
10
+ This is a general-purpose automatic processing
11
+ ruby framework which can extend the functionality
12
+ by plug-ins.
13
+
14
+ See doc/README file.
9
15
 
10
- Usage
11
- -----
12
16
 
13
- Get started.
17
+ Get Started
18
+ -----------
19
+
20
+ Installation.
14
21
 
15
22
  ``` html
16
23
  gem install automatic
@@ -22,7 +29,36 @@ Specify any recipe with -c option.
22
29
  automatic -c <recipe>
23
30
  ```
24
31
 
25
- For more info, refer to the document (doc/README.ja).
32
+ Example.
33
+
34
+ ``` html
35
+ $ automatic -c config/feed2console.yml
36
+ ```
37
+
38
+
39
+ What is Recipe?
40
+ ---------------
41
+
42
+ Automatic Ruby parses configuration file that was written
43
+ in the form of YAML which including variety of information
44
+ of associated plug-ins.
45
+
46
+ This YAML file is called "Recipe".
47
+
48
+ When you start automatic ruby without argument -c option,
49
+ the config/default.yml is called. You can use -c option for
50
+ specify a file name.
51
+
52
+ The Recipe has an implicit naming convention.
53
+
54
+ ``` html
55
+ plugins:
56
+ - module: MODULE_NAME
57
+ config:
58
+ VARIABLES
59
+ ```
60
+
61
+ For more info, refer to the document (doc/README).
26
62
 
27
63
 
28
64
  Environment
@@ -44,31 +80,13 @@ We need your help.
44
80
 
45
81
  + https://github.com/id774/automaticruby/issues
46
82
 
47
- **CI**
48
-
49
- + http://id774.net/jenkins/
83
+ **RubyFroge**
50
84
 
85
+ + http://rubyforge.org/projects/automatic/
51
86
 
52
- How to Join
53
- -----------
54
-
55
- 1. Fork the repository.
56
- 2. Write new plugin or existing code improvement.
57
- 3. Send pull request!
58
-
59
- After that, we will give you the right to commit for a quick fix finely.
60
-
61
-
62
- Coding Rule
63
- -----------
87
+ **CI**
64
88
 
65
- + 2 tabs, soft tabs.
66
- + Remove the space at the end of a line.
67
- + Namespace and conventions, see the existing code.
68
- + {} is recommended than do end (To avoid end end end,,).
69
- + RDoc Header is written by creator of the file.
70
- + Write RSPec tests.
71
- + Aim at 100% coverage.
89
+ + http://id774.net/jenkins/
72
90
 
73
91
 
74
92
  ChangeLog
@@ -87,6 +105,12 @@ Releases will be numbered with the follow format:
87
105
  This naming convention is to mimic the Ubuntu.
88
106
 
89
107
 
108
+ Developers
109
+ ----------
110
+
111
+ See doc/AUTHORS.
112
+
113
+
90
114
  Author
91
115
  ------
92
116
 
@@ -96,14 +120,8 @@ Author
96
120
  + http://github.com/id774
97
121
 
98
122
 
99
- Developers
100
- ----------
101
-
102
- See doc/AUTHORS.
103
-
104
-
105
- Copyright and license
106
- ---------------------
123
+ License
124
+ -------
107
125
 
108
126
  Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
109
127
 
data/Rakefile CHANGED
@@ -9,6 +9,20 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
9
9
  spec.pattern = FileList['spec/**/*_spec.rb']
10
10
  end
11
11
 
12
+ namespace :spec do
13
+ desc "Run RSpec for plugins"
14
+ RSpec::Core::RakeTask.new(:plugins) do |spec|
15
+ spec.rspec_opts = ["-c"]
16
+ spec.pattern = FileList['spec/plugins/**/*_spec.rb']
17
+ end
18
+
19
+ desc "Run RSpec for main procedure"
20
+ RSpec::Core::RakeTask.new(:lib) do |spec|
21
+ spec.rspec_opts = ["-c"]
22
+ spec.pattern = FileList['spec/lib/**/*_spec.rb']
23
+ end
24
+ end
25
+
12
26
  require 'jeweler'
13
27
  Jeweler::Tasks.new do |gem|
14
28
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
data/VERSION CHANGED
@@ -1 +1 @@
1
- 12.3.0
1
+ 12.3.1
data/automatic.gemspec CHANGED
@@ -5,14 +5,14 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "automatic"
8
- s.version = "12.3.0"
8
+ s.version = "12.3.1"
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 = "2012-03-07"
12
+ s.date = "2012-03-16"
13
13
  s.description = "Ruby General Automation Framework"
14
14
  s.email = "idnanashi@gmail.com"
15
- s.executables = ["automatic"]
15
+ s.executables = ["automatic", "automatic-config"]
16
16
  s.extra_rdoc_files = [
17
17
  "README.md"
18
18
  ]
@@ -23,20 +23,25 @@ Gem::Specification.new do |s|
23
23
  "VERSION",
24
24
  "automatic.gemspec",
25
25
  "bin/automatic",
26
+ "bin/automatic-config",
26
27
  "config/default.yml",
27
28
  "config/feed2console.yml",
28
29
  "db/.gitkeep",
29
30
  "doc/AUTHORS",
30
31
  "doc/COPYING",
31
32
  "doc/ChangeLog",
33
+ "doc/PLUGINS",
32
34
  "doc/PLUGINS.ja",
35
+ "doc/README",
33
36
  "doc/README.ja",
34
37
  "lib/automatic.rb",
35
38
  "lib/automatic/environment.rb",
36
39
  "lib/automatic/feed_parser.rb",
37
40
  "lib/automatic/log.rb",
41
+ "lib/automatic/opml.rb",
38
42
  "lib/automatic/pipeline.rb",
39
43
  "lib/automatic/recipe.rb",
44
+ "lib/config/validator.rb",
40
45
  "plugins/custom_feed/svn_log.rb",
41
46
  "plugins/filter/ignore.rb",
42
47
  "plugins/filter/image.rb",
@@ -51,6 +56,10 @@ Gem::Specification.new do |s|
51
56
  "plugins/store/target_link.rb",
52
57
  "plugins/subscription/feed.rb",
53
58
  "script/bootstrap",
59
+ "script/build",
60
+ "spec/lib/automatic/pipeline_spec.rb",
61
+ "spec/lib/automatic_spec.rb",
62
+ "spec/lib/pipeline_spec.rb",
54
63
  "spec/plugins/custom_feed/svn_log_spec.rb",
55
64
  "spec/plugins/filter/ignore_spec.rb",
56
65
  "spec/plugins/filter/image_spec.rb",
@@ -64,6 +73,8 @@ Gem::Specification.new do |s|
64
73
  "spec/plugins/store/target_link_spec.rb",
65
74
  "spec/plugins/subscription/feed_spec.rb",
66
75
  "spec/spec_helper.rb",
76
+ "spec/user_dir/plugins/store/mock.rb",
77
+ "test/fixtures/sampleOPML.xml",
67
78
  "test/integration/test_activerecord.yml",
68
79
  "test/integration/test_fulltext.yml",
69
80
  "test/integration/test_hatenabookmark.yml",
@@ -72,8 +83,6 @@ Gem::Specification.new do |s|
72
83
  "test/integration/test_image2local.yml",
73
84
  "test/integration/test_svnlog.yml",
74
85
  "test/integration/test_tumblr2local.yml",
75
- "utils/auto_discovery.rb",
76
- "utils/opml_parser.rb",
77
86
  "vendor/.gitkeep"
78
87
  ]
79
88
  s.homepage = "http://github.com/id774/automaticruby"
@@ -92,6 +101,7 @@ Gem::Specification.new do |s|
92
101
  s.add_runtime_dependency(%q<activerecord>, ["~> 3"])
93
102
  s.add_runtime_dependency(%q<gcalapi>, [">= 0"])
94
103
  s.add_runtime_dependency(%q<xml-simple>, [">= 0"])
104
+ s.add_runtime_dependency(%q<feedbag>, [">= 0"])
95
105
  s.add_development_dependency(%q<cucumber>, [">= 0"])
96
106
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
97
107
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
@@ -102,6 +112,7 @@ Gem::Specification.new do |s|
102
112
  s.add_dependency(%q<activerecord>, ["~> 3"])
103
113
  s.add_dependency(%q<gcalapi>, [">= 0"])
104
114
  s.add_dependency(%q<xml-simple>, [">= 0"])
115
+ s.add_dependency(%q<feedbag>, [">= 0"])
105
116
  s.add_dependency(%q<cucumber>, [">= 0"])
106
117
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
107
118
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
@@ -113,6 +124,7 @@ Gem::Specification.new do |s|
113
124
  s.add_dependency(%q<activerecord>, ["~> 3"])
114
125
  s.add_dependency(%q<gcalapi>, [">= 0"])
115
126
  s.add_dependency(%q<xml-simple>, [">= 0"])
127
+ s.add_dependency(%q<feedbag>, [">= 0"])
116
128
  s.add_dependency(%q<cucumber>, [">= 0"])
117
129
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
118
130
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
data/bin/automatic CHANGED
@@ -3,13 +3,47 @@
3
3
  # Name:: Automatic::Ruby
4
4
  # Author:: 774 <http://id774.net>
5
5
  # Created:: Feb 18, 2012
6
- # Updated:: Feb 24, 2012
6
+ # Updated:: Mar 16, 2012
7
7
  # Copyright:: 774 Copyright (c) 2012
8
8
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
9
9
 
10
10
  root_dir = File.expand_path("..", File.dirname(__FILE__))
11
11
  $:.unshift root_dir
12
12
  $:.unshift root_dir + '/lib'
13
- require 'lib/automatic'
13
+ require 'automatic'
14
+ require 'optparse'
14
15
 
15
- Automatic.run(root_dir)
16
+ recipe_path = ""
17
+ parser = OptionParser.new { |parser|
18
+ parser.banner = "Usage: automatic [options] arg"
19
+ parser.version = Automatic.const_get(:VERSION)
20
+ parser.separator "options:"
21
+ parser.on('-c', '--config FILE', String,
22
+ "recipe YAML file"){|c| recipe_path = c}
23
+ parser.on('-h', '--help', "show this message") {
24
+ puts parser
25
+ exit
26
+ }
27
+ }
28
+
29
+ begin
30
+ parser.parse!
31
+ puts "Loading #{recipe_path}" unless recipe_path.empty?
32
+ rescue OptionParser::ParseError => err
33
+ $stderr.puts err.message
34
+ $stderr.puts parser.help
35
+ exit 1
36
+ end
37
+
38
+ if recipe_path.to_s.empty?
39
+ if ENV["AUTOMATIC_RUBY_ENV"] == "test"
40
+ recpie_path = File.join(root_dir, 'config/default.yml')
41
+ else
42
+ puts parser
43
+ exit 0
44
+ end
45
+ end
46
+
47
+ recipe = Automatic::Recipe.new(recipe_path)
48
+ Automatic.run(:recipe => recipe,
49
+ :root_dir => root_dir)
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+ # Name:: Automatic::Ruby
4
+ # Author:: kzgs
5
+ # Created:: Mar 11, 2012
6
+ # Updated:: Mar 11, 2012
7
+ # Copyright:: kzgs Copyright (c) 2012
8
+ # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
9
+
10
+ root_dir = File.expand_path("..", File.dirname(__FILE__))
11
+ $:.unshift root_dir + '/lib'
12
+
13
+ require 'rubygems'
14
+ require 'optparse'
15
+
16
+ parser = OptionParser.new { |opt|
17
+ }
18
+
19
+ def abort_with_usage(subcommand, message)
20
+ top_filename = File.basename($0)
21
+ abort("Usage: #{top_filename} #{subcommand} #{message}")
22
+ end
23
+
24
+ subparsers = {
25
+ 'scaffold' => lambda { |argv|
26
+ Dir::entries(root_dir + '/plugins').sort.each { |path|
27
+ require 'fileutils'
28
+ dir = (File.expand_path('~/.automatic/plugins/' + path))
29
+ unless File.exist?(dir)
30
+ FileUtils.mkdir_p(dir)
31
+ puts "Create Directory #{dir}"
32
+ end
33
+ }
34
+ },
35
+ 'autodiscovery' => lambda { |argv|
36
+ require 'pp'
37
+ require 'feedbag'
38
+ url = argv.shift || abort_with_usage("autodiscovery", "<url>")
39
+ pp Feedbag.find(url)
40
+ },
41
+ 'opmlparser' => lambda { |argv|
42
+ require 'automatic/opml'
43
+ path = argv.shift
44
+ if path.nil?
45
+ abort_with_usage("opmlparser", "<opml path>")
46
+ end
47
+ parser = Automatic::OPML::Parser.new(File.read(path))
48
+ parser.each_outline {|opml, o|
49
+ puts "#{o.xmlUrl}"
50
+ }
51
+ },
52
+ 'feedparser' => lambda { |argv|
53
+ require 'pp'
54
+ require 'automatic/feed_parser'
55
+ url = argv.shift || abort_with_usage("feedparser", "<url>")
56
+ rss_results = Automatic::FeedParser.get_rss(url)
57
+ pp rss_results
58
+ },
59
+ 'log' => lambda { |argv|
60
+ require 'automatic/log'
61
+ level = argv.shift || abort_with_usage("log", "<level> <message>")
62
+ message = ARGV.shift
63
+ Automatic::Log.puts(level, message)
64
+ }
65
+ }
66
+
67
+ parser.order!(ARGV)
68
+
69
+ if ARGV.empty?
70
+ puts "Available commands: #{subparsers.keys.join(", ")}"
71
+ exit 1
72
+ end
73
+
74
+ Hash.new { |h, k|
75
+ puts "No such subcommand: #{k}"
76
+ exit 1
77
+ }.update(subparsers)[ARGV.shift].call(ARGV)
data/config/default.yml CHANGED
@@ -9,21 +9,18 @@ plugins:
9
9
  - module: SubscriptionFeed
10
10
  config:
11
11
  feeds:
12
- - http://example.com/rss2
13
-
14
- - module: FilterIgnore
15
- config:
16
- exclude:
17
- - hoge
18
- - fuga
12
+ - http://reretlet.tumblr.com/rss
19
13
 
20
14
  - module: StorePermalink
21
15
  config:
22
- db: permalink.db
16
+ db: tumblr.db
17
+
18
+ - module: FilterImage
19
+
20
+ - module: FilterTumblrResize
23
21
 
24
- - module: PublishHatenaBookmark
22
+ - module: StoreTargetLink
25
23
  config:
26
- username: your_hatena_id
27
- password: your_password
28
- interval: 5
24
+ path: /tmp
25
+ interval: 2
29
26
 
data/doc/ChangeLog CHANGED
@@ -1,8 +1,32 @@
1
+ === 12.3.1 / 2012-03-16
2
+
3
+ * English Documents.
4
+
5
+ * doc/README
6
+ * doc/PLUGINS
7
+
8
+ * The user who installed the gem package be able to create own plugins.
9
+
10
+ * ~/.automatic/plugins
11
+
12
+ * Utils merged to automatic-config command and added following subcommand.
13
+
14
+ * scaffold
15
+ * autodiscovery
16
+ * opmlparser
17
+ * feedparser
18
+ * log
19
+
20
+ * Added Integration Test Script for CI.
21
+
22
+ * script/build
23
+
24
+
1
25
  === 12.03 / 2012-03-07
2
26
 
3
- * Distribute as a gem library
27
+ * Distribute as a gem library.
4
28
 
5
- * Plugins added
29
+ * Plugins added.
6
30
 
7
31
  * CustomFeed::SVNLog
8
32
  * Notify::Ikachan
@@ -10,27 +34,27 @@
10
34
  * Filter::Image
11
35
  * Store::TargetLink
12
36
 
13
- * CI / Build scripts
37
+ * CI / Build scripts.
14
38
 
15
39
  * script/bootstrap
16
40
 
17
- * Signficant Refactoring
41
+ * Signficant Refactoring.
18
42
 
19
43
 
20
44
  === 12.02.1 / 2012-02-25
21
45
 
22
- * Point release
46
+ * Point release.
23
47
 
24
48
  * Big Refactoring for core.
25
- * Reorganization of the namespace.
49
+ * Reorganization of the namespace.
26
50
  * A few plugins added.
27
51
 
28
52
 
29
53
  === 12.02 / 2012-02-18
30
54
 
31
- * First release
55
+ * First release.
32
56
 
33
57
  * Scratch of this script.
34
- * Plugin existing only for hatenabookmark.
58
+ * Plugin existing only for hatenabookmark.
35
59
 
36
60
 
data/doc/PLUGINS ADDED
@@ -0,0 +1,205 @@
1
+ ===========================
2
+ Description of the plug-ins
3
+ ===========================
4
+
5
+ SubscriptionFeed
6
+ ----------------
7
+ [Path]
8
+ /plugins/subscription/feed.rb
9
+
10
+ [Abstract]
11
+ Subscribe to feed.
12
+
13
+ [Syntax]
14
+ - module: SubscriptionFeed
15
+ config:
16
+ feeds:
17
+ - FEED
18
+ - FEED ...
19
+
20
+
21
+ FilterIgnore
22
+ ------------
23
+ [Path]
24
+ /plugins/filter/ignore.rb
25
+
26
+ [Abstract]
27
+ To exclude the NG word.
28
+
29
+ [Syntax]
30
+ - module: FilterIgnore
31
+ config:
32
+ exclude:
33
+ - KEYWORD
34
+ - KEYWORD ...
35
+
36
+
37
+ FilterImage
38
+ ------------
39
+ [Path]
40
+ /plugins/filter/image.rb
41
+
42
+ [Abstract]
43
+ Rewrite the permalink to link of the image in the contents.
44
+ If there is no link of image, the permalink will be nil.
45
+
46
+ [Syntax]
47
+ - module: FilterImage
48
+
49
+
50
+ FilterTumblrResize
51
+ --------------------
52
+ [Path]
53
+ /plugins/filter/tumblr_resize.rb
54
+
55
+ [Abstract]
56
+ To rewrite the permalink to the maximum size of
57
+ the Tumblr (High Res).
58
+
59
+ [Assumption]
60
+ It has already been rewritten to perm link image link
61
+
62
+ [Syntax]
63
+ - module: FilterTumblrResize
64
+
65
+
66
+ StorePermalink
67
+ --------------
68
+ [Path]
69
+ /plugins/store/permalink.rb
70
+
71
+ [Abstract]
72
+ To save a permanent link.
73
+ The duplicate permalink will be discarded.
74
+
75
+ [Syntax]
76
+ - module: StoreBookmark
77
+ config:
78
+ db: DB_NAME
79
+
80
+
81
+ StoreFullText
82
+ -------------
83
+ [Path]
84
+ /plugins/store/full_text.rb
85
+
86
+ [Abstract]
87
+ To save a full text of contents.
88
+
89
+ Saved text can be viewed in the viewer below
90
+ https://github.com/id774/blog_viewer
91
+
92
+ [Syntax]
93
+ - Module: StoreFullText
94
+ config:
95
+ db: DB_NAME
96
+
97
+
98
+ StoreTargetLink
99
+ ---------------
100
+ [Path]
101
+ /plugins/store/target_link.rb
102
+
103
+ [Abstract]
104
+ To store target locally.
105
+ This emulate "Right click to save".
106
+
107
+ [Syntax]
108
+ - Module: StoreTargetLink
109
+ config:
110
+ path: SAVE_TO_PATH
111
+ interval: INTERVAL_FOR_DOWNLOAD (in seconds.)
112
+
113
+
114
+ PublishConsole
115
+ --------------
116
+ [Path]
117
+ /plugins/publish/console.rb
118
+
119
+ [Abstract]
120
+ Output pipeline to the console.
121
+
122
+ [Syntax]
123
+ - module: PublishConsole
124
+
125
+
126
+ PublishHatenaBookmark
127
+ ---------------------
128
+ [Path]
129
+ /plugins/publish/hatenabookmark.rb
130
+
131
+ [Abstract]
132
+ To Hatena Bookmark (Social Bookmark).
133
+
134
+ [Description]
135
+ To generate the XML for submission to
136
+ Hatena Bookmark API.
137
+
138
+ [Syntax]
139
+ - Modu - module: PublishHatenaBookmark
140
+ config:
141
+ username: HATENA_ID
142
+ passowrd: PASSWORD
143
+ interval: INTERVAL_FOR_BOOKMARK (in seconds.)
144
+
145
+
146
+ PublishGoogleCalendar
147
+ ---------------------
148
+ [Path]
149
+ /plugins/publish/google_calendar.rb
150
+
151
+ [Abstract]
152
+ To register an appointment to Google Calendar.
153
+
154
+ [Description]
155
+ Register item.title to Google Calendar.
156
+
157
+ [Notation recipe]
158
+ - module: PublishGoogleCalendar
159
+ config:
160
+ username: GOOGLE_ACCOUNT
161
+ password: PASSWORD
162
+ interval: INTERVAL
163
+
164
+
165
+ NotifyIkachan
166
+ -------------
167
+ [Path]
168
+ /plugins/notify/ikachan.rb
169
+
170
+ [Abstract]
171
+ To send a message to ikachan.
172
+
173
+ [Description]
174
+ POST to ikachan via HTTP.
175
+ ikachan is: http://blog.yappo.jp/yappo/archives/000760.html
176
+
177
+ [Syntax]
178
+ - module: NotifyIkachan
179
+ config:
180
+ url: http://sample.com
181
+ port: 4979 # port number, the default is 4979.
182
+ channels: foo,bar,#baz # '#' is priced automatically, multiple by ','
183
+ command: notice # privmsg,notice etc..
184
+ interval: 5 # post interval. (s)
185
+
186
+
187
+ CustomFeedSVNLog
188
+ ----------------
189
+ [Path]
190
+ /plugins/custom/feed_svn_log.rb
191
+
192
+ [Abstract]
193
+ Get new revision info from SVN.
194
+
195
+ [Description]
196
+ To get the number that is specified by fetch_items.
197
+
198
+ [Notation recipe]
199
+ - Module: CustomFeedSVNLog
200
+ - module: CustomFeedSVNLog
201
+ config:
202
+ target: http://redmine.rubyforge.org/svn
203
+ fetch_items: 2 # If not specified, 30
204
+
205
+
data/doc/PLUGINS.ja CHANGED
@@ -135,7 +135,7 @@ PublishHatenaBookmark
135
135
  送信する
136
136
 
137
137
  [レシピ記法]
138
- - module: AutoBookmark
138
+ - module: PublishHatenaBookmark
139
139
  config:
140
140
  username: はてな ID
141
141
  passowrd: パスワード
@@ -151,8 +151,7 @@ PublishGoogleCalendar
151
151
  Google Calendar に予定を登録する
152
152
 
153
153
  [説明]
154
- item.title を当日の Google カレンダーに
155
- 登録する
154
+ item.title Google カレンダーに登録する
156
155
 
157
156
  [レシピ記法]
158
157
  - module: PublishGoogleCalendar