summaryrefslogtreecommitdiff
path: root/xnt/__init__.py
blob: 6979a7d325ed7b6d8c3dbb3ff40b3b08a6c2c1ee (plain)
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