server/bspcli/gen.py (48 lines of code) (raw):

import os import parser import sys from random import choice import random def randname(): return ''.join( (choice(CHARSET) for _ in range(NAMELEN)) ) def create_java_package(workspace_dir, packagename, deps, number_of_sources): packagedir = f'{workspace_dir}/{packagename}' os.mkdir(packagedir) with open(f'{packagedir}/BUILD', 'w') as f: f.write(f"""java_library( name = "{packagename}", visibility = ["//visibility:public"], srcs = glob(["*.java"]), deps = {deps} )\n""") for i in range(number_of_sources): classname = f"Lib_{packagename}_{i}" with open(f'{packagedir}/{classname}.java', 'w') as f: f.write(f"""public class {classname} {"{}"}\n""") pass def build_dependency_graph(targets): dependency_graph = {} while len(targets) > 0: number_of_children = random.randrange(0, 5) parent = targets[0] targets = targets[1:] children = [] for i in range(number_of_children): children = children + ([choice(targets)] if targets else []) dependency_graph[parent] = set(children) return dependency_graph CHARSET = 'abcdefghijklmnopqrstuvwxyz' NAMELEN: int = 8 random.seed(0) args = parser.parser().parse_args() project_dir = args.projectdir number_of_targets = args.targets targets = [randname() for x in range(number_of_targets)] if not os.path.exists(f'./{project_dir}'): os.mkdir(project_dir) else: print('This directory already exists.') dependency_graph = build_dependency_graph(targets) for target, deps in dependency_graph.items(): create_java_package(f'{project_dir}/', target, [f'//{d}:{d}' for d in deps], args.targetssize) with open(f'{project_dir}/WORKSPACE', 'w') as fp: pass print(f'Generated {number_of_targets} targets')