|
@ -0,0 +1,82 @@ |
|
|
|
|
|
#!/usr/bin/env ruby |
|
|
|
|
|
# |
|
|
|
|
|
# fetch_doc.rb |
|
|
|
|
|
# |
|
|
|
|
|
# Fetch the documentation from the wiki and translate it |
|
|
|
|
|
# to be human readable. |
|
|
|
|
|
# |
|
|
|
|
|
|
|
|
|
|
|
require 'open-uri' |
|
|
|
|
|
|
|
|
|
|
|
BASE_URI = 'http://www.pamusb.org/wiki/doc/' |
|
|
|
|
|
DOC_PATH = '../doc/' |
|
|
|
|
|
DOCS = [ 'installation', 'upgrading', 'configuration', 'faq' ] |
|
|
|
|
|
MANS = [ 'pusb_hotplug', 'pusb_conf', 'pusb_check' ] |
|
|
|
|
|
|
|
|
|
|
|
REPLACE_LIST = [ |
|
|
|
|
|
# Remove wiki links [[link|name]] |
|
|
|
|
|
{ :pattern => /\[\[.+\|(.+)\]\]/, :with => '\1' }, |
|
|
|
|
|
|
|
|
|
|
|
# Remove misc xhtml/wiki characters |
|
|
|
|
|
{ :pattern => /\/\//, :with => '' }, |
|
|
|
|
|
{ :pattern => /\\\\ /, :with => '' }, |
|
|
|
|
|
{ :pattern => /\*\*/, :with => '' }, |
|
|
|
|
|
{ :pattern => /</, :with => '<' }, |
|
|
|
|
|
{ :pattern => />/, :with => '>' }, |
|
|
|
|
|
{ :pattern => /"/, :with => '"' }, |
|
|
|
|
|
{ :pattern => /<code .+>.*\n/, :with => '' }, |
|
|
|
|
|
{ :pattern => /<\/code>.*\n/, :with => '' }, |
|
|
|
|
|
{ :pattern => /<file>(.+)<\/file>/m, :with => '\1' }, |
|
|
|
|
|
|
|
|
|
|
|
# Remove trailing whitespaces |
|
|
|
|
|
{ :pattern => /^ /, :with => '' }, |
|
|
|
|
|
|
|
|
|
|
|
# Fit 80 colums |
|
|
|
|
|
{ :pattern => /(.{1,80})( +|$\n?)|(.{1,80})/, :with => "\\1\\3\n" }, |
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
def fetch_raw_doc(name) |
|
|
|
|
|
uri = BASE_URI + name + '?do=edit' |
|
|
|
|
|
|
|
|
|
|
|
body = open(uri) { |f| f.read } |
|
|
|
|
|
body.gsub!(/.*<textarea .+>\n(.*)<\/textarea>.*/m, '\1') |
|
|
|
|
|
body.gsub(/\r\n/, "\n") |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
def fetch_doc(name) |
|
|
|
|
|
body = fetch_raw_doc(name) |
|
|
|
|
|
REPLACE_LIST.each { |r| body.gsub!(r[:pattern], r[:with]) } |
|
|
|
|
|
|
|
|
|
|
|
body |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
Dir.chdir(File.dirname($0)) |
|
|
|
|
|
|
|
|
|
|
|
DOCS.each do |doc| |
|
|
|
|
|
print "Fetching doc:#{doc}... " |
|
|
|
|
|
STDOUT.flush |
|
|
|
|
|
|
|
|
|
|
|
text = fetch_doc(doc) |
|
|
|
|
|
File.open(File.join(DOC_PATH, doc.upcase), 'w') { |f| f.write(text) } |
|
|
|
|
|
|
|
|
|
|
|
puts "Done." |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
MANS.each do |man| |
|
|
|
|
|
print "Fetching man:#{man}... " |
|
|
|
|
|
STDOUT.flush |
|
|
|
|
|
|
|
|
|
|
|
doc = fetch_doc("man/#{man}") |
|
|
|
|
|
cmd = "txt2man -v \"PAMUSB\" -s1 -t#{man}" |
|
|
|
|
|
cmd += ' | sed "s/\\\\\\\\\\\\\\\\/\\\\\\/g"' |
|
|
|
|
|
File.popen("#{cmd} > #{File.join(DOC_PATH, man)}.1", 'w') do |f| |
|
|
|
|
|
f.write(doc) |
|
|
|
|
|
end |
|
|
|
|
|
begin |
|
|
|
|
|
File.unlink("#{File.join(DOC_PATH, man)}.1.gz") |
|
|
|
|
|
rescue Exception |
|
|
|
|
|
end |
|
|
|
|
|
system("gzip #{File.join(DOC_PATH, man)}.1") |
|
|
|
|
|
|
|
|
|
|
|
puts "Done." |
|
|
|
|
|
end |