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
11 VALADOC_STR
= '${VALADOC}'
13 class valadoc_task(Task
.Task
):
15 vars = ['VALADOC', 'VALADOCFLAGS']
17 after
= 'cxx_link cc_link'
29 enable_non_null_experimental
= False
32 def runnable_status(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):
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
))
67 error ('You must install valadoc <http://live.gnome.org/Valadoc> for generate the API documentation')
71 def process_valadoc(self
):
72 task
= getattr(self
, 'task', None)
74 task
= self
.create_task('valadoc')
76 if getattr(self
, 'output_dir', None):
77 task
.output_dir
= self
.output_dir
79 Utils
.WafError('no output directory')
80 if getattr(self
, 'doclet', None):
81 task
.doclet
= self
.doclet
83 Utils
.WafError('no doclet directory')
84 if getattr(self
, 'package_name', None):
85 task
.package_name
= self
.package_name
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
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
112 conf
.find_program('valadoc', var
='VALADOC', mandatory
=False)