Skip to content
Browse files

doc: use wrongdoc for documentation

wrongdoc factors out a bunch of common code from this
project into its own and removes JavaScript from RDoc
to boot.
  • Loading branch information...
1 parent 210e5cc commit f62ef19a4aa3d3e4ce1aa37a499907ff776a8964 Eric Wong committed Dec 24, 2010
Showing with 44 additions and 200 deletions.
  1. +1 −0 .document
  2. +1 −0 .gitignore
  3. +8 −0 .wrongdoc.yml
  4. +24 −65 GNUmakefile
  5. +0 −112 Rakefile
  6. +10 −23 unicorn.gemspec
View
1 .document
@@ -11,6 +11,7 @@ KNOWN_ISSUES
TODO
NEWS
ChangeLog
+LATEST
lib
ext/unicorn_http/unicorn_http.c
unicorn_1
View
1 .gitignore
@@ -21,3 +21,4 @@ pkg/
/GIT-VERSION-FILE
/man
/tmp
+/LATEST
View
8 .wrongdoc.yml
@@ -0,0 +1,8 @@
+---
+cgit_url: http://git.bogomips.org/cgit/unicorn.git
+git_url: git://git.bogomips.org/unicorn.git
+rdoc_url: http://unicorn.bogomips.org/
+changelog_start: v1.1.5
+merge_html:
+ unicorn_1: Documentation/unicorn.1.html
+ unicorn_rails_1: Documentation/unicorn_rails.1.html
View
89 GNUmakefile
@@ -1,8 +1,6 @@
# use GNU Make to run tests in parallel, and without depending on RubyGems
all:: test
-GIT_URL = git://git.bogomips.org/unicorn.git
-CGIT_URL = http://git.bogomips.org/cgit/unicorn.git
RLFLAGS = -G2
MRI = ruby
@@ -157,78 +155,39 @@ clean:
$(RM) $(setup_rb_files) $(t_log)
$(RM) -r $(test_prefix) man
-man:
- $(MAKE) -C Documentation install-man
+man html:
+ $(MAKE) -C Documentation install-$@
-pkg_extra := GIT-VERSION-FILE NEWS ChangeLog $(ext)/unicorn_http.c
-manifest: $(pkg_extra) man
- $(RM) .manifest
- $(MAKE) .manifest
+pkg_extra := GIT-VERSION-FILE Changelog LATEST NEWS \
+ $(ext)/unicorn_http.c $(man1_paths)
-.manifest:
- (git ls-files && \
- for i in $@ $(pkg_extra) $(man1_paths); \
- do echo $$i; done) | LC_ALL=C sort > $@+
+ChangeLog: GIT-VERSION-FILE .wrongdoc.yml
+ wrongdoc prepare
+
+.manifest: ChangeLog $(ext)/unicorn_http.c
+ (git ls-files && for i in $@ $(pkg_extra); do echo $$i; done) | \
+ LC_ALL=C sort > $@+
cmp $@+ $@ || mv $@+ $@
$(RM) $@+
-NEWS: GIT-VERSION-FILE .manifest
- $(RAKE) -s news_rdoc > $@+
- mv $@+ $@
-
-SINCE = 1.1.5
-ChangeLog: LOG_VERSION = \
- $(shell git rev-parse -q "$(GIT_VERSION)" >/dev/null 2>&1 && \
- echo $(GIT_VERSION) || git describe)
-ChangeLog: log_range = v$(SINCE)..$(LOG_VERSION)
-ChangeLog: GIT-VERSION-FILE
- @echo "ChangeLog from $(GIT_URL) ($(log_range))" > $@+
- @echo >> $@+
- git log $(log_range) | sed -e 's/^/ /' >> $@+
- mv $@+ $@
-
-news_atom := http://unicorn.bogomips.org/NEWS.atom.xml
-cgit_atom := $(CGIT_URL)/atom/?h=master
-atom = <link rel="alternate" title="Atom feed" href="$(1)" \
- type="application/atom+xml"/>
-
-# using rdoc 2.5.x+
-doc: .document $(ext)/unicorn_http.c NEWS ChangeLog
+doc: .document $(ext)/unicorn_http.c man html .wrongdoc.yml
for i in $(man1_rdoc); do echo > $$i; done
find bin lib -type f -name '*.rbc' -exec rm -f '{}' ';'
- rdoc --webcvs=$(CGIT_URL)/tree/%s \
- -t "$(shell sed -ne '1s/^= //p' README)"
+ $(RM) -r doc
+ wrongdoc all
install -m644 COPYING doc/COPYING
- install -m644 $(shell grep '^[A-Z]' .document) doc/
- $(MAKE) -C Documentation install-html install-man
+ install -m644 $(shell grep '^[A-Z]' .document) doc/
install -m644 $(man1_paths) doc/
- cd doc && for i in $(base_bins); do \
- $(RM) 1.html $${i}.1.html; \
- sed -e '/"documentation">/r man1/'$$i'.1.html' \
- < $${i}_1.html > tmp && mv tmp $${i}_1.html; \
- ln $${i}_1.html $${i}.1.html; \
- done
- $(RUBY) -i -p -e \
- '$$_.gsub!("</title>",%q{\&$(call atom,$(cgit_atom))})' \
- doc/ChangeLog.html
- $(RUBY) -i -p -e \
- '$$_.gsub!("</title>",%q{\&$(call atom,$(news_atom))})' \
- doc/NEWS.html doc/README.html
- $(RAKE) -s news_atom OUT=doc/NEWS.atom.xml
- cd doc && ln README.html tmp && mv tmp index.html
+ tar cf - $$(git ls-files examples/) | (cd doc && tar xf -)
$(RM) $(man1_rdoc)
# publishes docs to http://unicorn.bogomips.org
publish_doc:
-git set-file-times
- $(RM) -r doc ChangeLog NEWS
- $(MAKE) doc LOG_VERSION=$(shell git tag -l | tail -1)
- @awk 'BEGIN{RS="=== ";ORS=""}NR==2{sub(/\n$$/,"");print RS""$$0 }' \
- < NEWS > doc/LATEST
- find doc/images doc/js -type f | \
- TZ=UTC xargs touch -d '1970-01-01 00:00:00' doc/rdoc.css
+ $(MAKE) doc
+ find doc/images -type f | \
+ TZ=UTC xargs touch -d '1970-01-01 00:00:02' doc/rdoc.css
$(MAKE) doc_gz
- tar cf - $$(git ls-files examples/) | (cd doc && tar xf -)
chmod 644 $$(find doc -type f)
$(RSYNC) -av doc/ unicorn.bogomips.org:/srv/unicorn/
git ls-files | xargs touch
@@ -275,10 +234,10 @@ release_changes := release_changes-$(VERSION)
release-notes: $(release_notes)
release-changes: $(release_changes)
$(release_changes):
- $(RAKE) -s release_changes > $@+
+ wrongdoc release_changes > $@+
$(VISUAL) $@+ && test -s $@+ && mv $@+ $@
$(release_notes):
- GIT_URL=$(GIT_URL) $(RAKE) -s release_notes > $@+
+ wrongdoc release_notes > $@+
$(VISUAL) $@+ && test -s $@+ && mv $@+ $@
# ensures we're actually on the tagged $(VERSION), only used for release
@@ -298,18 +257,18 @@ gem: $(pkggem)
install-gem: $(pkggem)
gem install $(CURDIR)/$<
-$(pkggem): manifest fix-perms
+$(pkggem): .manifest fix-perms
gem build $(rfpackage).gemspec
mkdir -p pkg
mv $(@F) $@
$(pkgtgz): distdir = $(basename $@)
$(pkgtgz): HEAD = v$(VERSION)
-$(pkgtgz): manifest fix-perms
+$(pkgtgz): .manifest fix-perms
@test -n "$(distdir)"
$(RM) -r $(distdir)
mkdir -p $(distdir)
- tar cf - `cat .manifest` | (cd $(distdir) && tar xf -)
+ tar cf - $$(cat .manifest) | (cd $(distdir) && tar xf -)
cd pkg && tar cf - $(basename $(@F)) | gzip -9 > $(@F)+
mv $@+ $@
@@ -331,5 +290,5 @@ gem install-gem: GIT-VERSION-FILE
$(MAKE) $@ VERSION=$(GIT_VERSION)
endif
-.PHONY: .FORCE-GIT-VERSION-FILE doc $(T) $(slow_tests) manifest man
+.PHONY: .FORCE-GIT-VERSION-FILE doc $(T) $(slow_tests) man
.PHONY: test-install
View
112 Rakefile
@@ -1,121 +1,9 @@
# -*- encoding: binary -*-
autoload :Gem, 'rubygems'
-# most tasks are in the GNUmakefile which offers better parallelism
-
-def old_summaries
- @old_summaries ||= File.readlines(".CHANGELOG.old").inject({}) do |hash, line|
- version, summary = line.split(/ - /, 2)
- hash[version] = summary
- hash
- end
-end
-
-def tags
- timefmt = '%Y-%m-%dT%H:%M:%SZ'
- @tags ||= `git tag -l`.split(/\n/).map do |tag|
- next if tag == "v0.0.0"
- if %r{\Av[\d\.]+} =~ tag
- header, subject, body = `git cat-file tag #{tag}`.split(/\n\n/, 3)
- header = header.split(/\n/)
- tagger = header.grep(/\Atagger /).first
- body ||= "initial"
- time = Time.at(tagger.split(/ /)[-2].to_i).utc
- {
- :time => time.strftime(timefmt),
- :ruby_time => time,
- :tagger_name => %r{^tagger ([^<]+)}.match(tagger)[1].strip,
- :tagger_email => %r{<([^>]+)>}.match(tagger)[1].strip,
- :id => `git rev-parse refs/tags/#{tag}`.chomp!,
- :tag => tag,
- :subject => subject,
- :body => (old = old_summaries[tag]) ? "#{old}\n#{body}" : body,
- }
- end
- end.compact.sort { |a,b| b[:time] <=> a[:time] }
-end
-
cgit_url = "http://git.bogomips.org/cgit/unicorn.git"
git_url = ENV['GIT_URL'] || 'git://git.bogomips.org/unicorn.git'
-desc 'prints news as an Atom feed'
-task :news_atom do
- require 'nokogiri'
- new_tags = tags[0,10]
- out = ENV["OUT"] ? File.open(ENV["OUT"], "w") : $stdout
- out.puts(Nokogiri::XML::Builder.new do
- feed :xmlns => "http://www.w3.org/2005/Atom" do
- id! "http://unicorn.bogomips.org/NEWS.atom.xml"
- title "Unicorn news"
- subtitle "Rack HTTP server for Unix and fast clients"
- link! :rel => 'alternate', :type => 'text/html',
- :href => 'http://unicorn.bogomips.org/NEWS.html'
- updated new_tags.first[:time]
- new_tags.each do |tag|
- entry do
- title tag[:subject]
- updated tag[:time]
- published tag[:time]
- author {
- name tag[:tagger_name]
- email tag[:tagger_email]
- }
- url = "#{cgit_url}/tag/?id=#{tag[:tag]}"
- link! :rel => "alternate", :type => "text/html", :href =>url
- id! url
- message_only = tag[:body].split(/\n.+\(\d+\):\n {6}/s).first.strip
- content({:type =>:text}, message_only)
- content(:type =>:xhtml) { pre tag[:body] }
- end
- end
- end
- end.to_xml)
- if out.respond_to?(:path) && new_tags[0]
- path = out.path
- out.close
- time = new_tags[0][:ruby_time]
- File.utime(time, time, path)
- end
-end
-
-desc 'prints RDoc-formatted news'
-task :news_rdoc do
- tags.each do |tag|
- time = tag[:time].tr!('T', ' ').gsub!(/:\d\dZ/, ' UTC')
- puts "=== #{tag[:subject]} / #{time}"
- puts ""
-
- body = tag[:body]
- puts tag[:body].gsub(/^/sm, " ").gsub(/[ \t]+$/sm, "")
- puts ""
- end
-end
-
-desc "print release changelog for Rubyforge"
-task :release_changes do
- version = ENV['VERSION'] or abort "VERSION= needed"
- version = "v#{version}"
- vtags = tags.map { |tag| tag[:tag] =~ /\Av/ and tag[:tag] }.sort
- prev = vtags[vtags.index(version) - 1]
- system('git', 'diff', '--stat', prev, version) or abort $?
- puts ""
- system('git', 'log', "#{prev}..#{version}") or abort $?
-end
-
-desc "print release notes for Rubyforge"
-task :release_notes do
- spec = Gem::Specification.load('unicorn.gemspec')
- puts spec.description.strip
- puts ""
- puts "* #{spec.homepage}"
- puts "* #{spec.email}"
- puts "* #{git_url}"
-
- _, _, body = `git cat-file tag v#{spec.version}`.split(/\n\n/, 3)
- print "\nChanges:\n\n"
- puts body
-end
-
desc "post to RAA"
task :raa_update do
require 'net/http'
View
33 unicorn.gemspec
@@ -1,7 +1,9 @@
# -*- encoding: binary -*-
-
ENV["VERSION"] or abort "VERSION= must be specified"
manifest = File.readlines('.manifest').map! { |x| x.chomp! }
+require 'wrongdoc'
+extend Wrongdoc::Gemspec
+name, summary, title = readme_metadata
# don't bother with tests that fork, not worth our time to get working
# with `gem check -t` ... (of course we care for them when testing with
@@ -12,35 +14,19 @@ end.compact
Gem::Specification.new do |s|
s.name = %q{unicorn}
- s.version = ENV["VERSION"]
-
- s.authors = ["Unicorn hackers"]
+ s.version = ENV["VERSION"].dup
+ s.authors = ["#{name} hackers"]
s.date = Time.now.utc.strftime('%Y-%m-%d')
- s.description = File.read("README").split(/\n\n/)[1].delete('\\')
+ s.description = readme_description
s.email = %q{mongrel-unicorn@rubyforge.org}
s.executables = %w(unicorn unicorn_rails)
s.extensions = %w(ext/unicorn_http/extconf.rb)
-
- s.extra_rdoc_files = File.readlines('.document').map! do |x|
- x.chomp!
- if File.directory?(x)
- manifest.grep(%r{\A#{x}/})
- elsif File.file?(x)
- x
- else
- nil
- end
- end.flatten.compact
-
+ s.extra_rdoc_files = extra_rdoc_files(manifest)
s.files = manifest
- s.homepage = %q{http://unicorn.bogomips.org/}
-
- summary = %q{Rack HTTP server for fast clients and Unix}
- s.rdoc_options = [ "-t", "Unicorn: #{summary}" ]
+ s.homepage = Wrongdoc.config[:rdoc_url]
+ s.rdoc_options = rdoc_options
s.require_paths = %w(lib ext)
s.rubyforge_project = %q{mongrel}
- s.summary = summary
-
s.test_files = test_files
# for people that are absolutely stuck on Rails 2.3.2 and can't
@@ -51,6 +37,7 @@ Gem::Specification.new do |s|
s.add_dependency(%q<kgio>, '~> 2.0.0')
s.add_development_dependency('isolate', '~> 3.0.0')
+ s.add_development_dependency('wrongdoc', '~> 1.0.1')
# s.licenses = %w(GPLv2 Ruby) # licenses= method is not in older RubyGems
end

0 comments on commit f62ef19

Please sign in to comment.
Something went wrong with that request. Please try again.