-
Notifications
You must be signed in to change notification settings - Fork 17
/
utils.py
36 lines (27 loc) · 1.03 KB
/
utils.py
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
from argparse import ArgumentParser, RawTextHelpFormatter
import os
# The main parser to attach to with the decorator.
cli = ArgumentParser()
subparsers = cli.add_subparsers(dest="subcommand")
def json_config():
return os.path.join("config", "config.json")
def cmake_config():
return os.path.join("config", "config.cmake")
# FIXME: add config.type (Debug/Release)
def binary_path():
return os.path.join("build", "Debug")
def subcommand(args=[], parent=subparsers):
"""Decorator for sub commands."""
def decorator(func):
parser = parent.add_parser(
func.__name__, description=func.__doc__, formatter_class=RawTextHelpFormatter)
for arg in args:
parser.add_argument(*arg[0], **arg[1])
parser.set_defaults(func=func)
return decorator
def argument(*name_or_flags, **kwargs):
"""Helper for subcommand decorator"""
return ([*name_or_flags], kwargs)
def mprint(*args, **kwargs):
"""Print with mach indicators"""
print(" [mach] "+" ".join(map(str, args)), **kwargs)