third_party:waf: update to upstream 2.0.4 release
[vlendec/samba-autobuild/.git] / third_party / waf / waflib / extras / valadoc.py
1 #! /usr/bin/env python
2 # encoding: utf-8
3 # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file
4
5 #! /usr/bin/env python
6 # encoding: UTF-8
7 # Nicolas Joseph 2009
8
9 """
10 ported from waf 1.5:
11 TODO: tabs vs spaces
12 """
13
14 from waflib import Task, Utils, Errors, Logs
15 from waflib.TaskGen import feature
16
17 VALADOC_STR = '${VALADOC}'
18
19 class valadoc(Task.Task):
20         vars  = ['VALADOC', 'VALADOCFLAGS']
21         color = 'BLUE'
22         after = ['cprogram', 'cstlib', 'cshlib', 'cxxprogram', 'cxxstlib', 'cxxshlib']
23         quiet = True # no outputs .. this is weird
24
25         def __init__(self, *k, **kw):
26                 Task.Task.__init__(self, *k, **kw)
27                 self.output_dir = ''
28                 self.doclet = ''
29                 self.package_name = ''
30                 self.package_version = ''
31                 self.files = []
32                 self.vapi_dirs = []
33                 self.protected = True
34                 self.private = False
35                 self.inherit = False
36                 self.deps = False
37                 self.vala_defines = []
38                 self.vala_target_glib = None
39                 self.enable_non_null_experimental = False
40                 self.force = False
41
42         def run(self):
43                 if not self.env['VALADOCFLAGS']:
44                         self.env['VALADOCFLAGS'] = ''
45                 cmd = [Utils.subst_vars(VALADOC_STR, self.env)]
46                 cmd.append ('-o %s' % self.output_dir)
47                 if getattr(self, 'doclet', None):
48                         cmd.append ('--doclet %s' % self.doclet)
49                 cmd.append ('--package-name %s' % self.package_name)
50                 if getattr(self, 'package_version', None):
51                         cmd.append ('--package-version %s' % self.package_version)
52                 if getattr(self, 'packages', None):
53                         for package in self.packages:
54                                 cmd.append ('--pkg %s' % package)
55                 if getattr(self, 'vapi_dirs', None):
56                         for vapi_dir in self.vapi_dirs:
57                                 cmd.append ('--vapidir %s' % vapi_dir)
58                 if not getattr(self, 'protected', None):
59                         cmd.append ('--no-protected')
60                 if getattr(self, 'private', None):
61                         cmd.append ('--private')
62                 if getattr(self, 'inherit', None):
63                         cmd.append ('--inherit')
64                 if getattr(self, 'deps', None):
65                         cmd.append ('--deps')
66                 if getattr(self, 'vala_defines', None):
67                         for define in self.vala_defines:
68                                 cmd.append ('--define %s' % define)
69                 if getattr(self, 'vala_target_glib', None):
70                         cmd.append ('--target-glib=%s' % self.vala_target_glib)
71                 if getattr(self, 'enable_non_null_experimental', None):
72                         cmd.append ('--enable-non-null-experimental')
73                 if getattr(self, 'force', None):
74                         cmd.append ('--force')
75                 cmd.append (' '.join ([x.abspath() for x in self.files]))
76                 return self.generator.bld.exec_command(' '.join(cmd))
77
78 @feature('valadoc')
79 def process_valadoc(self):
80         """
81         Generate API documentation from Vala source code with valadoc
82
83         doc = bld(
84                 features = 'valadoc',
85                 output_dir = '../doc/html',
86                 package_name = 'vala-gtk-example',
87                 package_version = '1.0.0',
88                 packages = 'gtk+-2.0',
89                 vapi_dirs = '../vapi',
90                 force = True
91         )
92
93         path = bld.path.find_dir ('../src')
94         doc.files = path.ant_glob (incl='**/*.vala')
95         """
96
97         task = self.create_task('valadoc')
98         if getattr(self, 'output_dir', None):
99                 task.output_dir = self.path.find_or_declare(self.output_dir).abspath()
100         else:
101                 Errors.WafError('no output directory')
102         if getattr(self, 'doclet', None):
103                 task.doclet = self.doclet
104         else:
105                 Errors.WafError('no doclet directory')
106         if getattr(self, 'package_name', None):
107                 task.package_name = self.package_name
108         else:
109                 Errors.WafError('no package name')
110         if getattr(self, 'package_version', None):
111                 task.package_version = self.package_version
112         if getattr(self, 'packages', None):
113                 task.packages = Utils.to_list(self.packages)
114         if getattr(self, 'vapi_dirs', None):
115                 vapi_dirs = Utils.to_list(self.vapi_dirs)
116                 for vapi_dir in vapi_dirs:
117                         try:
118                                 task.vapi_dirs.append(self.path.find_dir(vapi_dir).abspath())
119                         except AttributeError:
120                                 Logs.warn('Unable to locate Vala API directory: %r', vapi_dir)
121         if getattr(self, 'files', None):
122                 task.files = self.files
123         else:
124                 Errors.WafError('no input file')
125         if getattr(self, 'protected', None):
126                 task.protected = self.protected
127         if getattr(self, 'private', None):
128                 task.private = self.private
129         if getattr(self, 'inherit', None):
130                 task.inherit = self.inherit
131         if getattr(self, 'deps', None):
132                 task.deps = self.deps
133         if getattr(self, 'vala_defines', None):
134                 task.vala_defines = Utils.to_list(self.vala_defines)
135         if getattr(self, 'vala_target_glib', None):
136                 task.vala_target_glib = self.vala_target_glib
137         if getattr(self, 'enable_non_null_experimental', None):
138                 task.enable_non_null_experimental = self.enable_non_null_experimental
139         if getattr(self, 'force', None):
140                 task.force = self.force
141
142 def configure(conf):
143         conf.find_program('valadoc', errmsg='You must install valadoc <http://live.gnome.org/Valadoc> for generate the API documentation')
144