2eea9bd784f5ba5a1decbc3b6659aee491e00e05
[releng/builder.git] / scripts / jjblib.py
1 import argparse
2 import os
3
4 import yaml
5
6
7 def parse_jjb_args():
8     parser = argparse.ArgumentParser()
9     parser.add_argument("project", help="project")
10     parser.add_argument("-c", "--conf", help="Config file")
11     parser.add_argument("-d", "--dependencies",
12                         help=("Project dependencies\n\n"
13                               "A comma-seperated (no spaces) list of projects "
14                               "your project depends on. "
15                               "This is used to create an integration job that "
16                               "will trigger when a dependent project-merge "
17                               "job is built successfully.\n\n"
18                               "Example: aaa,controller,yangtools"))
19     parser.add_argument("-t", "--templates", help="Job templates to use")
20     parser.add_argument("-b", "--branches", help="Git Branches to build")
21     parser.add_argument("-p", "--pom", help="Path to pom.xml to use in Maven "
22                                             "build (Default: pom.xml")
23     parser.add_argument("-g", "--mvn-goals", help="Maven Goals")
24     parser.add_argument("-o", "--mvn-opts", help="Maven Options")
25     parser.add_argument("-a", "--archive-artifacts",
26                         help="Comma-seperated list of patterns of artifacts "
27                              "to archive on build completion. "
28                              "See: http://ant.apache.org/manual/Types/fileset.html")  # noqa
29     return parser.parse_args()
30
31
32 def create_template_config(project_dir, args):
33     cfg_data = dict()
34
35     if args.templates:
36         cfg_data["JOB_TEMPLATES"] = args.templates
37
38     if args.branches:
39         branch_list = list()
40         for branch in args.branches.split(","):
41             branch_list.append({branch: {"jdks": "openjdk7"}})
42         cfg_data["BRANCHES"] = branch_list
43
44     if args.pom:
45         cfg_data["POM"] = args.pom
46
47     if args.mvn_goals:
48         cfg_data["MAVEN_GOALS"] = args.mvn_goals
49
50     if args.mvn_opts:
51         cfg_data["MAVEN_OPTS"] = args.mvn_opts
52
53     if args.dependencies:
54         cfg_data["DEPENDENCIES"] = args.dependencies
55
56     if args.archive_artifacts:
57         cfg_data["ARCHIVE"] = args.archive_artifacts
58
59     if cfg_data:
60         # Create project directory if it doesn't exist
61         if not os.path.exists(project_dir):
62             os.makedirs(project_dir)
63
64         print("Creating %s.cfg file" % args.project)
65         cfg_file = os.path.join(project_dir, "%s.cfg" % args.project)
66
67         with open(cfg_file, "w") as outstream:
68             outstream.write(yaml.dump(cfg_data, default_flow_style=False))
69
70
71 class Project:
72     def __init__(self, project):
73         self.meta_project = None
74         self.project = project
75
76         if project.find('/') >= 0:
77             s = project.rsplit('/', 1)
78             self.meta_project = s[0]
79             self.project = s[1]
80
81     def __str__(self):
82         return self.project