Tutorial
We introduce how to use Packnga with Packnga’s Rakefile and gemspec in this page.
Install
You can install Packnga from Rubygems.
% sudo gem install packnga
Prepare to create tasks
Before using Packnga, you should create spec
variable with
Gem::Specification.new or Jeweler::Tasks.new.
Packnga create tasks with spec
in Rakefile.
Create spec with Gem::Specification.new
We introduce to create spec
with Gem::Specification.new in a gemspec file.
Please see below gemspec example with Gem::Specification.new.
version = Packnga::VERSION.dup
readme_path = File.join(base_dir, "README.textile")
entries = File.read(readme_path).split(/^h2\.\s(.*)$/)
entry = lambda do |entry_title|
entries[entries.index(entry_title) + 1]
end
= []
emails = []
entry.call("Authors").each_line do |line|
if /\*\s*(.+)\s<([^<>]*)>$/ =~ line
<< $1
emails << $2
end
end
clean_white_space = lambda do |entry|
entry.gsub(/(\A\n+|\n+\z)/, '') + "\n"
end
description = clean_white_space.call(entry.call("Description"))
summary, description = description.split(/\n\n+/, 2)
Gem::Specification.new do |s|
s.name = "packnga"
s.version = version
s. =
s.email = emails
s.summary = summary
s.description = description
s.extra_rdoc_files = ["README.textile"]
s.files = ["README.textile", "Rakefile", "Gemfile"]
Dir.chdir(base_dir) do
s.files += Dir.glob("lib/**/*.rb")
s.files += Dir.glob("doc/text/*.*")
end
s.homepage = "http://ranguba.org/"
s.licenses = ["LGPLv2"]
s.require_paths = ["lib"]
s.add_runtime_dependency("rake")
s.add_runtime_dependency("yard")
s.add_runtime_dependency("gettext")
s.add_development_dependency("test-unit")
s.add_development_dependency("test-unit-notify")
s.add_development_dependency("bundler")
s.add_development_dependency("RedCloth")
end
Next, we should get spec
value in Rakefile from gemspec,
so we write below source code in Rakefile.
helper = Bundler::GemHelper.new(base_dir)
helper.install
spec = helper.gemspec
Create spec with Jeweler::Tasks.new
If you want to create spec
with Jeweler::Tasks.new in your Rakefile,
please see below example.
This source code is written in old Packnga’s Rakefile.
spec = nil
Jeweler::Tasks.new do |_spec|
spec = _spec
spec.name = "packnga"
spec.version = version
spec.homepage = "http://ranguba.org/"
spec. = ["Haruka Yoshihara", "Kouhei Sutou"]
spec.email = ["yoshihara@clear-code.com", "kou@clear-code.com"]
entries = File.read("README.textile").split(/^h2\.\s(.*)$/)
description = cleanup_white_space(entries[entries.index("Description") + 1])
spec.summary, spec.description, = description.split(/\n\n+/, 3)
spec.license = "LGPLv2"
spec.files = FileList["lib/**/*.rb",
"Rakefile",
"README.textile",
"Gemfile",
"doc/text/**"]
spec.test_files = FileList["test/**/*.rb"]
end
Create tasks
Packnga’s classes has charge of each tasks. This table describes Packnga’s classes.
- Packnga::DocumentTask
- This class create tasks for generating references. It define tasks to generate YARD documentation and po files. It also defines tasks to translate documents with po files.
- Packnga::ReleaseTask
- This class create tasks for uploading references and package and preparing to upload them. It defines a task to tag the current version in git and a task to user-install gem for test.
Please see below for creating tasks.
Packnga::DocumentTask.new(spec)
Packnga::ReleaseTask.new(spec)
Set the document path.
You can set parameters with block when creating object of Packnga::DocumentTask and Releasetask. For example, We introduce to how to set base directory for document. Document is created in this directory. You can write Rakefile to set this directory path, see below.
NOTE: Please set same path to each clasess.
Packnga::DocumentTask.new(spec) do |task|
task.base_dir = "doc/"
end
Packnga::ReleaseTask.new(spec) do |task|
task.base_dir = "doc/"
end
You can set other parameters. Please see Packnga’s reference manual in detail.