1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
#!/usr/bin/env python
"""Main xnt module
Contains definition for version (referenced from version module), license,
target decorator, and imports task methods from tasks module
"""
# Xnt -- A Wrapper Build Tool
# Copyright (C) 2013 Kenny Ballou
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import logging
import xnt.version
from xnt.tasks import list_targets
from xnt.tasks import expandpath
from xnt.tasks import cp
from xnt.tasks import mv
from xnt.tasks import mkdir
from xnt.tasks import rm
from xnt.tasks import create_zip
from xnt.tasks import echo
from xnt.tasks import log
from xnt.tasks import xntcall
from xnt.tasks import call
from xnt.tasks import setup
from xnt.tasks import which
from xnt.tasks import in_path
from xnt.tasks import gcc
from xnt.tasks import gpp
from xnt.tasks import javac
from xnt.tasks import nvcc
from xnt.tasks import ant
from xnt.tasks import make
from xnt.tasks import nant
from xnt.tasks import gitclone
from xnt.tasks import gitpull
from xnt.tasks import hgclone
from xnt.tasks import hgfetch
from xnt.tasks import cvsco
from xnt.tasks import cvsupdate
from xnt.tasks import pdflatex
from xnt.tasks import latexclean
__version__ = "Xnt " + xnt.version.__version__
__license__ = """
Xnt -- A Wrapper Build Tool
Copyright (C) 2012 Kenny Ballou
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
def target(*args, **kwargs):
"""Decorator function for marking a method in
build file as a "target" method, or a method meant
to be invoked from Xnt
"""
def w_target(target_fn):
"""target wrapping function"""
has_run = [False,]
def wrap():
"""Inner wrapper function for decorator"""
if not has_run[0] or kwargs.get('always_run', False):
has_run[0] = True
print(target_fn.__name__ + ":")
return target_fn()
return None
wrap.decorator = "target"
wrap.__doc__ = target_fn.__doc__
return wrap
if len(args) == 1 and callable(args[0]):
return w_target(args[0])
return w_target
|