summaryrefslogtreecommitdiff
path: root/xnt/xenant.py
diff options
context:
space:
mode:
authorkennyballou <kballou@onyx.boisestate.edu>2012-10-24 15:03:33 -0600
committerkballou <kballou@onyx.boisestate.edu>2012-10-24 15:03:33 -0600
commit823b5b1bf0db8d9a269280b0c5a8ad1e0efae8fc (patch)
tree3108a01a04b3442639087ab26d1c39694590e201 /xnt/xenant.py
parent1dd8b3899e6f535ec546b221b06a31db270daa42 (diff)
downloadxnt-823b5b1bf0db8d9a269280b0c5a8ad1e0efae8fc.tar.gz
xnt-823b5b1bf0db8d9a269280b0c5a8ad1e0efae8fc.tar.xz
Add ``help`` special 'target'
Invoking Xnt with ``help`` will now display version and list targets in the build file; erring if no build file is found
Diffstat (limited to 'xnt/xenant.py')
-rw-r--r--xnt/xenant.py33
1 files changed, 29 insertions, 4 deletions
diff --git a/xnt/xenant.py b/xnt/xenant.py
index 73ccd63..2a0de1c 100644
--- a/xnt/xenant.py
+++ b/xnt/xenant.py
@@ -13,14 +13,17 @@ def main():
args = sys.argv[1:]
for arg in args:
if arg == "version":
- import xnt
- print(xnt.__version__)
- sys.exit()
+ printVersion()
+ elif arg == "help":
+ printVersion()
+ print("\n\n")
+ printTargets()
elif arg:
target = arg
+ invokeBuild(target)
elif not arg:
target = "default"
- invokeBuild(target)
+ invokeBuild(target)
from xnt.tasks import rm
rm("build.pyc")
@@ -37,5 +40,27 @@ def invokeBuild(targetName):
except:
logger.error(sys.exc_info()[1].message)
+def printVersion():
+ import xnt
+ print(xnt.__version__)
+
+def printTargets():
+ if not os.path.exists("build.py"):
+ logger.error("There was no build file")
+ sys.exit(1)
+ try:
+ build = __import__("build", fromlist=[])
+ for f in dir(build):
+ try:
+ fa = getattr(build, f)
+ if fa.decorator == "target":
+ print(f + ":\n")
+ except AttributeError:
+ pass
+ except AttributeError:
+ pass
+ except:
+ logger.error(sys.exc_info()[1].message)
+
if __name__ == "__main__":
main()