automatic 12.3.0 → 12.3.1

Sign up to get free protection for your applications and to get access to all the features.
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