packnga 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -17,13 +17,4 @@
17
17
 
18
18
  source "http://rubygems.org/"
19
19
 
20
- gem "rake"
21
- gem "yard"
22
- gem "rubyforge"
23
-
24
- group :development, :test do
25
- gem "test-unit"
26
- gem "test-unit-notify"
27
- gem "jeweler"
28
- gem "RedCloth"
29
- end
20
+ gemspec
data/README.textile CHANGED
@@ -8,11 +8,11 @@ h2. Description
8
8
 
9
9
  An utility library to package i18n-ed library.
10
10
 
11
- Packnga is an library to translate to many languages by YARD.
11
+ Packnga is a library to translate to many languages by YARD.
12
12
 
13
13
  h2. Authors
14
14
 
15
- * yoshihara haruka <yoshihara@clear-code.com>
15
+ * Haruka Yoshihara <yoshihara@clear-code.com>
16
16
  * Kouhei Sutou <kou@clear-code.com>
17
17
 
18
18
  h2. License
@@ -43,3 +43,6 @@ h2. Mailing list
43
43
  * comming soon...
44
44
 
45
45
  h2. Thanks
46
+
47
+ * SHIMADA Koji: send a patch.
48
+ * tetradice: report bugs.
data/Rakefile CHANGED
@@ -21,8 +21,7 @@ require 'English'
21
21
  require 'pathname'
22
22
  require 'rubygems'
23
23
  require 'rubygems/package_task'
24
- require "rake/clean"
25
- require 'jeweler'
24
+ require 'bundler/gem_helper'
26
25
 
27
26
  base_dir = File.join(File.dirname(__FILE__))
28
27
 
@@ -32,59 +31,25 @@ ENV["RUBYLIB"] = "#{packnga_lib_dir}:#{ENV['RUBYLIB']}"
32
31
 
33
32
  require "packnga"
34
33
 
35
- def guess_version
36
- Packnga::VERSION.dup
37
- end
38
-
39
- def cleanup_white_space(entry)
40
- entry.gsub(/(\A\n+|\n+\z)/, '') + "\n"
41
- end
42
-
43
- ENV["VERSION"] ||= guess_version
44
- version = ENV["VERSION"].dup
45
- spec = nil
46
- Jeweler::Tasks.new do |_spec|
47
- spec = _spec
48
- spec.name = "packnga"
49
- spec.version = version
50
- spec.rubyforge_project = "groonga"
51
- spec.homepage = "http://groonga.rubyforge.org/"
52
- spec.authors = ["Haruka Yoshihara", "Kouhei Sutou"]
53
- spec.email = ["yoshihara@clear-code.com", "kou@clear-code.com"]
54
- entries = File.read("README.textile").split(/^h2\.\s(.*)$/)
55
- description = cleanup_white_space(entries[entries.index("Description") + 1])
56
- spec.summary, spec.description, = description.split(/\n\n+/, 3)
57
- spec.license = "LGPLv2"
58
- spec.files = FileList["lib/**/*.rb",
59
- "Rakefile",
60
- "README.textile",
61
- "Gemfile",
62
- "doc/text/**"]
63
- spec.test_files = FileList["test/**/*.rb"]
64
- end
65
-
34
+ helper = Bundler::GemHelper.new(base_dir)
35
+ helper.install
36
+ spec = helper.gemspec
66
37
  Rake::Task["release"].prerequisites.clear
67
- Jeweler::RubygemsDotOrgTasks.new do
68
- end
69
38
 
70
39
  Gem::PackageTask.new(spec) do |pkg|
71
40
  pkg.need_tar_gz = true
72
41
  end
73
42
 
74
- Packnga::DocumentTask.new(spec) do |task|
75
- end
43
+ Packnga::DocumentTask.new(spec)
76
44
 
77
45
  Packnga::ReleaseTask.new(spec) do |task|
78
46
  task.index_html_dir = "../rroonga/doc/html"
79
47
  task.changes = File.read("doc/text/news.textile").split(/^h2\.\s(.*)$/)[2]
80
48
  end
81
49
 
82
- namespace :requirement do
83
- task :ruby18 do
84
- if RUBY_VERSION.to_f >= 1.9
85
- raise "This task must be run with ruby1.8."
86
- end
87
- end
50
+ desc "Run tests."
51
+ task :test do
52
+ ruby("-rubygems", "test/run-test.rb")
88
53
  end
89
54
 
90
- task "build" => "requirement:ruby18"
55
+ task :default => :test
@@ -1,5 +1,32 @@
1
1
  h1. NEWS
2
2
 
3
+ h2. 0.9.5: 2012-08-30
4
+
5
+ h3. Improvements
6
+
7
+ * [reference-task] Created and update a pot/po file by YARD::CLI::I18n instead of xml2po command.
8
+ * [reference-task] Translated HTML documents with a po file, source files(lib/**/*.rb, ext/**/*.c) and extra files(doc/text/*.*) and README file in spec.
9
+ * [reference-task] Used GetText::Tools::MsgInit.run instead of msginit in GNU gettext.
10
+ * Assigned default files for HTML documents by DocumentTask to YARDTask and ReferenceTask.
11
+ * [tutorial] Added example to use gemspec with Gem::Specification.new.
12
+ * Defined accessors for readme in YARDTask and ReferenceTask.
13
+ * Updated documents.
14
+
15
+ h3. Changes
16
+
17
+ * [reference-task] Created the po directory under specified directory instead of "doc".
18
+
19
+ h3. Fixes
20
+
21
+ * [document-task] Fixed not to require block on new.
22
+ * Fixed not to run blocks when objects of YARDTask and ReferenceTask are initialized.
23
+ * [reference-task] Used Rake::Task to invoke rake tasks instead of another process.
24
+
25
+ h3. Thanks
26
+
27
+ * tetradice
28
+ * SHIMADA Koji
29
+
3
30
  h2. 0.9.4: 2011-09-27
4
31
 
5
32
  h3. Improvements
@@ -12,7 +39,7 @@ h3. Changes
12
39
 
13
40
  h3. Fixes
14
41
 
15
- * Fixed bug of posting no news to RubyForge in task "release:po:ja:update".
42
+ * Fixed bug of posting no news to RubyForge in task "release:rubyforge:news:post".
16
43
 
17
44
  h2. 0.9.3: 2011-09-22
18
45
 
@@ -1,22 +1,26 @@
1
1
  h1. リリース手順
2
2
 
3
- h2. news.textileに前回リリースからの変更点のまとめ
3
+ h2. news.textileに変更点のまとめ
4
4
 
5
5
  前回のリリース時から現在までの変更点をnews.textileにまとめるため、下記コマンドを実行してgitのコミットログを表示する。
6
6
 
7
7
  <pre>
8
+ !!!command_line
8
9
  $ git log -p --reverse (前回のリリースバージョン)..
9
10
  </pre>
10
11
 
11
12
  ログを"Author:"で検索しながら、ユーザにとって知る必要があるもの(ユーザに見える情報)のコミットログのみを抜き出す。
12
- その動詞を過去形にし、頭文字を大文字にする。
13
- それらログをそれぞれを次のようにまとめる。
13
+ 次に、抜き出したコミットログを1つずつ見て、その先頭にカテゴリ名がある場合は、":"を削除してカテゴリ名を"["と"]"で囲む。
14
+ カテゴリ名を除いたログの先頭にある単語を過去形にし、頭文字を大文字にする。
15
+ その後、ログを次のように分類する。
14
16
  機能などに新しく追加されたものに関してはImprovement,
15
17
  動作の変更などはChanges,
16
18
  バグの修正など前バージョンまでにあった問題を修正したものはFixesに記述する。
17
19
  また、コミットログの行末に[人名]がある場合はその人名をThanks以下に書く。
20
+ さらにREADMEにあるThanks以下にも名前を追加する。
21
+
18
22
  この作業をリリース予定日よりも前に行った場合は、目に見えるところにコミットIDをメモしておく。
19
- news.textileだと次のrake reference:po:updateで翻訳対象になってしまいノイズになってしまうので注意すること。
23
+ ただし、news.textileだと次のrake reference:po:updateで翻訳対象になってしまいノイズになってしまうので注意すること。
20
24
 
21
25
  h3. news.textileの1リリース分のテンプレート
22
26
 
@@ -43,27 +47,30 @@ h2. 日本語訳の作成
43
47
  下記コマンドを実行してja.poを更新する。
44
48
 
45
49
  <pre>
50
+ !!!command_line
46
51
  $ rake reference:po:update
47
52
  </pre>
48
53
 
49
- その後、ja.poを開いて、各msgid(コミットログ)に対応するmsgstrにコミットログの和訳を作成する。
50
- fuzzyを検索して見つかったらC-iで消す。
54
+ その後、ja.poを開いて、各msgid(翻訳対象となる文章)に対応するmsgstrに対応する和訳を作成する。
55
+ fuzzyを検索して見つかったら訳を確認し必要なら修正を行う。その後fuzzyを消す。
51
56
 
52
57
  h2. リファレンスの確認
53
58
 
54
59
  下記コマンドを実行して、リファレンスの翻訳を行う。
55
60
 
56
61
  <pre>
62
+ !!!command_line
57
63
  $ rake reference:translate
58
64
  </pre>
59
65
 
60
- doc/reference/ja/file.news.htmlなどのja.poを編集した箇所を確認する。
66
+ doc/reference/ja/file.news.htmlなどのja.poを編集した箇所が正しく翻訳されているか確認する。
61
67
 
62
68
  h2. バージョンとリリース日の更新
63
69
 
64
- 下記コマンドを入力して、プロジェクトページ(html/index.html、html/index.html.ja)のrroongaの項にある最新バージョンとリリース日をそれぞれ今回のリリースに合わせたものに更新する。
70
+ 下記コマンドを入力して、プロジェクトページ(html/index.html、html/index.html.ja)の最新バージョンとリリース日をそれぞれ今回のリリースに合わせたものに更新する。
65
71
 
66
72
  <pre>
73
+ !!!command_line
67
74
  $ rake release:info:update OLD_VERSION=(前回リリース時のバージョン) OLD_RELEASE_DATE=(前回リリース日) RELEASE_DATE=(今回のリリース日)
68
75
  </pre>
69
76
 
@@ -72,8 +79,9 @@ h2. gemパッケージの作成
72
79
  下記コマンドを打ってアップロード用のgemパッケージをビルドする。
73
80
 
74
81
  <pre>
82
+ !!!command_line
75
83
  $ make clean
76
- $ ruby1.8 -S rake build
84
+ $ rake build
77
85
  </pre>
78
86
 
79
87
  h2. gemパッケージの動作確認
@@ -81,6 +89,7 @@ h2. gemパッケージの動作確認
81
89
  そのgemパッケージの動作を確認するため、下記コマンドを打ってローカル環境にインストールする。
82
90
 
83
91
  <pre>
92
+ !!!command_line
84
93
  $ gem1.9.1 install pkg/(パッケージ名)-(今回リリースバージョン番号).gem --user-install
85
94
  </pre>
86
95
 
@@ -88,54 +97,60 @@ $ gem1.9.1 install pkg/(パッケージ名)-(今回リリースバージ
88
97
  このディレクトリに移動して、テストを実行し動作を確認する。
89
98
 
90
99
  <pre>
100
+ !!!command_line
91
101
  $ NO_MAKE=yes ruby1.9.1 test/run-test.rb
92
102
  </pre>
93
103
 
94
- h2. news.textileの再まとめ
95
104
 
96
- news.textileの行頭にコミットIDが残っている場合、
97
- 下記コマンドを実行してログを表示する。
105
+ h2. news.textileの最終的なまとめとリファレンス作成
106
+
107
+ コミットIDをメモしていた場合、下記コマンドを実行してログを表示する。
98
108
 
99
109
  <pre>
100
- git log --reverse -p (前回のリリース時のバージョン)..(残っていたコミットID)
110
+ !!!command_line
111
+ git log --reverse -p (前回のリリース時のバージョン)..(メモしていたコミットID)
101
112
  </pre>
102
113
 
103
- 上記ログを"Author:"で検索しながら、ユーザにとって知る必要があるもの(ユーザに見える情報)のコミットログのみを抜き出す。
104
- その動詞を過去形にし、頭文字を大文字にする。
105
- それらログをそれぞれを次のようにまとめる。
114
+ ログを"Author:"で検索しながら、ユーザにとって知る必要があるもの(ユーザに見える情報)のコミットログのみを抜き出す。
115
+ 次に、抜き出したコミットログを1つずつ見て、その先頭にカテゴリ名がある場合は、":"を削除してカテゴリ名を"["と"]"で囲む。
116
+ カテゴリ名を除いたログの先頭にある単語を過去形にし、頭文字を大文字にする。
117
+ その後、ログを次のように分類する。
106
118
  機能などに新しく追加されたものに関してはImprovement,
107
119
  動作の変更などはChanges,
108
120
  バグの修正など前バージョンまでにあった問題を修正したものはFixesに記述する。
109
121
  また、コミットログの行末に[人名]がある場合はその人名をThanks以下に書く。
122
+ さらにREADMEにあるThanks以下にも名前を追加する。
110
123
 
111
- その後、下記コマンドを実行してja.poを更新する。
124
+ 下記コマンドを実行してja.poを更新する。
112
125
 
113
126
  <pre>
127
+ !!!command_line
114
128
  $ rake reference:po:update
115
129
  </pre>
116
130
 
117
- その後、ja.poを開いて、各msgid(追加したコミットログ)に対応するmsgstrにコミットログの和訳を作成する。
118
- fuzzyを検索して見つかったらC-iで消す。
131
+ その後、ja.poを開いて、各msgid(翻訳対象となる文章)に対応するmsgstrに対応する和訳を作成する。
132
+ fuzzyを検索して見つかったら訳を確認し必要なら修正を行う。その後fuzzyを消す。
119
133
 
120
- h2. これまでの変更をpush
134
+ さらに下記コマンドを実行して、リファレンスの翻訳を行う。
121
135
 
122
- ここまでに行った変更をcommitしてgit pushする。
136
+ <pre>
137
+ !!!command_line
138
+ $ rake reference:translate
139
+ </pre>
123
140
 
124
- h2. リリースバージョンのタグを作成
141
+ doc/reference/ja/file.news.htmlなどのja.poを編集した箇所が正しく翻訳されているか確認する。
125
142
 
126
- 下記コマンドを入力して、今回リリースするバージョンのタグを打ってgit pushする。
143
+ h2. これまでの変更をpush
127
144
 
128
- <pre>
129
- $ rake release:tag
130
- $ git push --tag
131
- </pre>
145
+ ここまでに行った変更をcommitしてgit pushする。
132
146
 
133
- h2. rubygems.orgにパッケージをアップロード
147
+ h2. リリースバージョンのタグの作成とrubygems.orgへのパッケージのアップロード
134
148
 
135
- 下記コマンドを実行してパッケージをアップロードする。
149
+ 下記コマンドを実行してリリースバージョンのタグを作成し、パッケージをrubygems.orgへアップロードする。
136
150
 
137
151
  <pre>
138
- $ ruby1.8 -S rake gemcutter:release
152
+ !!!command_line
153
+ $ rake release
139
154
  </pre>
140
155
 
141
156
  h2. rubyforgeにパッケージをアップロード
@@ -143,6 +158,7 @@ h2. rubyforgeにパッケージをアップロード
143
158
  下記コマンドを実行してアップロードする。
144
159
 
145
160
  <pre>
161
+ !!!command_line
146
162
  $ ruby1.8 -S rake release:rubyforge:upload
147
163
  $ ruby1.8 -S rake release:reference:publish
148
164
  </pre>
@@ -150,7 +166,8 @@ $ ruby1.8 -S rake release:reference:publish
150
166
  rroonga以外の場合、index.html関連はrake release:html:publishでアップロードされないので、rroongaに移動してから下記コマンドを実行する。
151
167
 
152
168
  <pre>
153
- $ ruby1.8 -S rake release:html:publish
169
+ !!!command_line
170
+ $ ruby1.9.1 -S rake release:html:publish
154
171
  </pre>
155
172
 
156
173
  h2. メーリングリストにリリースの周知
@@ -160,6 +177,7 @@ h2. メーリングリストにリリースの周知
160
177
 
161
178
  h3.日本語でのメールの具体例
162
179
 
180
+ <pre>
163
181
  吉原です。
164
182
 
165
183
  (最新バージョンをリリースしたことを書く)
@@ -215,14 +233,15 @@ irbを使ったrroongaのチュートリアルはこちらにあります。
215
233
 
216
234
  感謝
217
235
  mallowlabsさん
236
+ </pre>
218
237
 
219
238
  h3. 英語でのメールの具体例
220
239
 
221
240
  <pre>
222
241
  Everyone,
223
242
 
224
- (rroongaの再榛バージョンをリリースしたことを書く)
225
- We relesed rroonga 1.2.3.
243
+ (rroongaの最新バージョンをリリースしたことを書く)
244
+ We released rroonga 1.2.3.
226
245
 
227
246
  (インデックスページのURLを書く)
228
247
  http://groonga.rubyforge.org/#about-rroonga
@@ -291,6 +310,7 @@ rroonga以外の場合、もとのディレクトリに戻る。
291
310
  下記コマンドを入力してrubyforgeの最新ニュースを更新する。
292
311
 
293
312
  <pre>
313
+ !!!command_line
294
314
  $ rake releace:rubyforge:news:post
295
315
  </pre>
296
316
 
@@ -1,6 +1,6 @@
1
1
  h1. Tutorial
2
2
 
3
- We introduce how to use Packnga with Packnga's Rakefile in this page.
3
+ We introduce how to use Packnga with Packnga's Rakefile and gemspec in this page.
4
4
 
5
5
  h2. Install
6
6
 
@@ -13,11 +13,92 @@ You can install Packnga from Rubygems.
13
13
 
14
14
  h2. Prepare to create tasks
15
15
 
16
- Before using Packnga, you should create @spec@ variable with Jeweler::Task.new.
17
- Packnga create tasks with @spec@.
18
- Please see below example.
16
+ Before using Packnga, you should create @spec@ variable with
17
+ Gem::Specification.new or Jeweler::Tasks.new.
18
+ Packnga create tasks with @spec@ in Rakefile.
19
+
20
+ h3. Create spec with Gem::Specification.new
21
+
22
+ We introduce to create @spec@ with Gem::Specification.new in a gemspec file.
23
+ Please see below gemspec example with Gem::Specification.new.
19
24
 
20
25
  <pre>
26
+ !!!ruby
27
+ version = Packnga::VERSION.dup
28
+
29
+ readme_path = File.join(base_dir, "README.textile")
30
+ entries = File.read(readme_path).split(/^h2\.\s(.*)$/)
31
+ entry = lambda do |entry_title|
32
+ entries[entries.index(entry_title) + 1]
33
+ end
34
+
35
+ authors = []
36
+ emails = []
37
+ entry.call("Authors").each_line do |line|
38
+ if /\*\s*(.+)\s<([^<>]*)>$/ =~ line
39
+ authors << $1
40
+ emails << $2
41
+ end
42
+ end
43
+
44
+ clean_white_space = lambda do |entry|
45
+ entry.gsub(/(\A\n+|\n+\z)/, '') + "\n"
46
+ end
47
+ description = clean_white_space.call(entry.call("Description"))
48
+ summary, description = description.split(/\n\n+/, 2)
49
+
50
+ Gem::Specification.new do |s|
51
+ s.name = "packnga"
52
+ s.version = version
53
+ s.authors = authors
54
+ s.email = emails
55
+ s.summary = summary
56
+ s.description = description
57
+
58
+ s.extra_rdoc_files = ["README.textile"]
59
+ s.files = ["README.textile", "Rakefile", "Gemfile"]
60
+ Dir.chdir(base_dir) do
61
+ s.files += Dir.glob("lib/**/*.rb")
62
+ s.files += Dir.glob("doc/text/*.*")
63
+ end
64
+
65
+ s.homepage = "http://groonga.rubyforge.org/"
66
+ s.licenses = ["LGPLv2"]
67
+ s.require_paths = ["lib"]
68
+ s.rubyforge_project = "groonga"
69
+
70
+ s.add_runtime_dependency("rake")
71
+ s.add_runtime_dependency("yard")
72
+ s.add_runtime_dependency("rubyforge")
73
+ s.add_runtime_dependency("gettext")
74
+ s.add_development_dependency("test-unit")
75
+ s.add_development_dependency("test-unit-notify")
76
+ s.add_development_dependency("bundler")
77
+ s.add_development_dependency("RedCloth")
78
+ end
79
+ </pre>
80
+
81
+ If you set the attribute @rubyforge_project@ of @spec@ value,
82
+ "Packnga::ReleaseTask" class creates tasks for rubyforge.
83
+
84
+ Next, we should get @spec@ value in Rakefile from gemspec,
85
+ so we write below source code in Rakefile.
86
+
87
+ <pre>
88
+ !!!ruby
89
+ helper = Bundler::GemHelper.new(base_dir)
90
+ helper.install
91
+ spec = helper.gemspec
92
+ </pre>
93
+
94
+ h3. Create spec with Jeweler::Tasks.new
95
+
96
+ If you want to create @spec@ with Jeweler::Tasks.new in your Rakefile,
97
+ please see below example.
98
+ This source code is written in old Packnga's Rakefile.
99
+
100
+ <pre>
101
+ !!!ruby
21
102
  spec = nil
22
103
  Jeweler::Tasks.new do |_spec|
23
104
  spec = _spec
@@ -40,29 +121,24 @@ Jeweler::Tasks.new do |_spec|
40
121
  end
41
122
  </pre>
42
123
 
43
- If you set the attribute @rubyforge_project@ of @spec@,
44
- @Release Task@ create tasks for rubyforge.
45
- See below in detail.
46
-
47
124
  h2. Create tasks
48
125
 
49
126
  Packnga's classes has charge of each tasks.
50
- They are given block with .new method in order to set parameters of tasks.
51
127
  This table describes Packnga's classes.
52
128
 
53
129
  - Packnga::DocumentTask :=
54
130
  This class create tasks for generating references.
55
- It define tasks to generate YARD documentation, po files, and
56
- to translate documents by po files.
131
+ It define tasks to generate YARD documentation and po files.
132
+ It also defines tasks to translate documents with po files.
57
133
  =:
58
134
 
59
135
  - Packnga::ReleaseTask :=
60
136
  This class create tasks for uploading references and package and preparing to upload them.
61
- It defines task to tag the current version in git and task to user-install gem for test.
137
+ It defines a task to tag the current version in git and a task to user-install gem for test.
62
138
  It also create tasks for uploading rubyforge if you set @rubyforge_project@ in @spec@ .
63
139
  =:
64
140
 
65
- See below for creating tasks.
141
+ Please see below for creating tasks.
66
142
 
67
143
  <pre>
68
144
  Packnga::DocumentTask.new(spec)
@@ -71,10 +147,11 @@ Packnga::ReleaseTask.new(spec)
71
147
 
72
148
  h3. Set the document path.
73
149
 
74
- You can set parameters with block when creating object of Packnga::DocumentTask and Releaesask.
75
- For example, We introduce to how to set document base directory.
150
+ You can set parameters with block when creating object of Packnga::DocumentTask and Releasetask.
151
+ For example, We introduce to how to set base directory for document.
76
152
  Document is created in this directory.
77
153
  You can write Rakefile to set this directory path, see below.
154
+
78
155
  NOTE: Please set same path to each clasess.
79
156
 
80
157
  <pre>