#!/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 .
import xnt.version
__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 .
"""
VERBOSE = False
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 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
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