merged cont.
[opensuse:yast-rest-service.git] / webyast-tasks / lib / tasks / webservice_tasks.rb
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
22 class WebserviceTasks
23
24     # a flag - load the tasks just once, multiple loading
25     # leads to multiple invocation of the same task
26     @@tasks_loaded = false
27
28     # load webservice *.rake files, exclude/include list can be specified
29     def WebserviceTasks.loadTasks(params = {:include => ["*.rake"], :exclude => []})
30         return if @@tasks_loaded
31
32         exclude_list = []
33         if params[:exclude].nil?
34             params[:exclude] = []
35         end
36
37         # expand exclude files
38         params[:exclude].each { |efile| exclude_list += Dir["#{File.dirname(__FILE__)}/#{efile}"]}
39
40         include_list = []
41         if params[:include].nil?
42             params[:include] = ["*.rake"]
43         end
44
45         # expand include files
46         params[:include].each { |ifile| include_list += Dir["#{File.dirname(__FILE__)}/#{ifile}"]}
47
48         # load an include file only if it not in the exclude list
49         include_list.each { |ext|
50             if !exclude_list.include?(ext)
51                 load ext
52             end
53         }
54
55         @@tasks_loaded = true
56     end
57
58 end
59
60 # vim: ft=ruby