8
def makedirs_or_exit(*dirs):
10
if not os.path.isdir(directory):
12
os.makedirs(directory)
14
print e.strerror, '({})'.format(e.filename)
15
print "Initialization failed"
19
def get_workspace(args):
21
workspace = args.workspace
23
workspace = mojo.workspace_path()
24
print "No workspace specified, using {}".format(workspace)
29
"Set up workspace and fetch a copy of the configuration"
30
workspace = get_workspace(args)
31
print "Initializing workspace"
32
makedirs_or_exit(workspace)
34
cmd = ["bzr", "branch"]
35
cmd.append(args.spec_url[0])
36
cmd.append(mojo.config_dir(workspace))
38
subprocess.check_call(cmd)
39
except subprocess.CalledProcessError as e:
40
sys.exit(e.returncode)
43
mojo.build_dir(workspace),
44
mojo.charm_repo_dir(workspace),
45
mojo.log_dir(workspace),
47
makedirs_or_exit(*directories)
51
"Collect build resources using config-manager"
52
print "Building resource tree"
53
workspace = get_workspace(args)
55
config = mojo.get_config_file(workspace, "branches", args.envtag)
56
except mojo.ConfigNotFoundException as e:
59
os.chdir(mojo.build_dir(workspace))
60
cmd = ['cm.py', '-v', 'update', config]
61
subprocess.check_call(cmd)
64
def add_envtag_arg(subparser):
65
subparser.add_argument("--envtag", "-e", help="Environment tag", default=None)
69
ap = argparse.ArgumentParser()
70
ap.add_argument("--workspace", "-w", help="Workspace path", default=None)
72
sp = ap.add_subparsers(title="subcommands")
74
initcmd = sp.add_parser("init", help="Initialize a mojo workspace")
75
initcmd.add_argument("spec_url", nargs=1, help="Configuration spec url (bzr)")
76
initcmd.set_defaults(func=init)
78
collectcmd = sp.add_parser("collect", help="Collect resources for build")
79
add_envtag_arg(collectcmd)
80
collectcmd.set_defaults(func=collect)
82
args = ap.parse_args()