merged cont.
[opensuse:yast-rest-service.git] / webservice-tasks / lib / tasks / restdoc.rake
1 #--
2 # Webyast Webservice framework
3 #
4 # Copyright (C) 2009, 2010 Novell, Inc. 
5 #   This library is free software; you can redistribute it and/or modify
6 # it only under the terms of version 2.1 of the GNU Lesser General Public
7 # License as published by the Free Software Foundation. 
8 #
9 #   This library is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 
12 # details. 
13 #
14 #   You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software 
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 #++
18
19 require 'rake'
20
21 # This task generates REST API documentation from restdoc/api.txt file
22 # if it has been found. The generated HTML documentation is stored
23 # to public/*/restdoc directory. (Plugins set the target by creating
24 # restdoc directory somewhere in public/ subdirectory.)
25
26 desc "Generate REST API documentation using 'restility'"
27 task :restdoc do
28
29     if File.exist? '/usr/bin/rest_doc'
30         # input file in root plugin directory
31         api_file = 'restdoc/api.txt'
32         # output directory
33         doc_target = Dir.glob('public/**/restdoc').first
34
35         if File.exists?(api_file) && !doc_target.nil? && File.directory?(doc_target)
36             puts "Generating REST API documentation in #{doc_target}..."
37
38             `rest_doc #{api_file} -I #{api_file.split('/').first} --html -o #{doc_target}`
39         else
40             puts "Skipping restdoc: restdoc/api.txt or public/**/restdoc/ not found."
41         end
42     else
43         puts 'Error: restility gem is not installed!'
44         exit 1
45     end
46 end
47