s3: libsmbclient: Add missing talloc stackframe.
[samba.git] / third_party / waf / wafadmin / 3rdparty / valadoc.py
1 #! /usr/bin/env python
2 # encoding: UTF-8
3 # Nicolas Joseph 2009
4
5 from fnmatch import fnmatchcase
6 import os, os.path, re, stat
7 import Task, Utils, Node, Constants
8 from TaskGen import feature, extension, after
9 from Logs import debug, warn, error
10
11 VALADOC_STR = '${VALADOC}'
12
13 class valadoc_task(Task.Task):
14
15   vars = ['VALADOC', 'VALADOCFLAGS']
16   color = 'BLUE'
17   after = 'cxx_link cc_link'
18   quiet = True
19
20   output_dir = ''
21   doclet = ''
22   package_name = ''
23   package_version = ''
24   files = []
25   protected = True
26   private = False
27   inherit = False
28   deps = False
29   enable_non_null_experimental = False
30   force = False
31
32   def runnable_status(self):
33     return True
34
35   def run(self):
36     if self.env['VALADOC']:
37       if not self.env['VALADOCFLAGS']:
38         self.env['VALADOCFLAGS'] = ''
39       cmd = [Utils.subst_vars(VALADOC_STR, self.env)]
40       cmd.append ('-o %s' % self.output_dir)
41       if getattr(self, 'doclet', None):
42         cmd.append ('--doclet %s' % self.doclet)
43       cmd.append ('--package-name %s' % self.package_name)
44       if getattr(self, 'version', None):
45         cmd.append ('--package-version %s' % self.package_version)
46       if getattr(self, 'packages', None):
47         for package in self.packages:
48           cmd.append ('--pkg %s' % package)
49       if getattr(self, 'vapi_dirs', None):
50         for vapi_dir in self.vapi_dirs:
51           cmd.append ('--vapidir %s' % vapi_dir)
52       if not getattr(self, 'protected', None):
53         cmd.append ('--no-protected')
54       if getattr(self, 'private', None):
55         cmd.append ('--private')
56       if getattr(self, 'inherit', None):
57         cmd.append ('--inherit')
58       if getattr(self, 'deps', None):
59         cmd.append ('--deps')
60       if getattr(self, 'enable_non_null_experimental', None):
61         cmd.append ('--enable-non-null-experimental')
62       if getattr(self, 'force', None):
63         cmd.append ('--force')
64       cmd.append (' '.join ([x.relpath_gen (self.generator.bld.bldnode) for x in self.files]))
65       return self.generator.bld.exec_command(' '.join(cmd))
66     else:
67       error ('You must install valadoc <http://live.gnome.org/Valadoc> for generate the API documentation')
68       return -1
69
70 @feature('valadoc')
71 def process_valadoc(self):
72   task = getattr(self, 'task', None)
73   if not task:
74     task = self.create_task('valadoc')
75     self.task = task
76     if getattr(self, 'output_dir', None):
77       task.output_dir = self.output_dir
78     else:
79       Utils.WafError('no output directory')
80     if getattr(self, 'doclet', None):
81       task.doclet = self.doclet
82     else:
83       Utils.WafError('no doclet directory')
84     if getattr(self, 'package_name', None):
85       task.package_name = self.package_name
86     else:
87       Utils.WafError('no package name')
88     if getattr(self, 'package_version', None):
89       task.package_version = self.package_version
90     if getattr(self, 'packages', None):
91       task.packages = Utils.to_list(self.packages)
92     if getattr(self, 'vapi_dirs', None):
93       task.vapi_dirs = Utils.to_list(self.vapi_dirs)
94     if getattr(self, 'files', None):
95       task.files = self.files
96     else:
97       Utils.WafError('no input file')
98     if getattr(self, 'protected', None):
99       task.protected = self.protected
100     if getattr(self, 'private', None):
101       task.private = self.private
102     if getattr(self, 'inherit', None):
103       task.inherit = self.inherit
104     if getattr(self, 'deps', None):
105       task.deps = self.deps
106     if getattr(self, 'enable_non_null_experimental', None):
107       task.enable_non_null_experimental = self.enable_non_null_experimental
108     if getattr(self, 'force', None):
109       task.force = self.force
110
111 def detect(conf):
112   conf.find_program('valadoc', var='VALADOC', mandatory=False)