def cmd_project(args): parser = ArgumentParser(add_help=False) parser.add_argument('-l', '--log', dest='log', action='store_true', default=False, help='See the detail log message while creating a dev area') parser.add_argument('-s', '--symlinks', dest='symlinks', action='store_true', default=False, help='Creates symlinks for various product build directories.') parser.add_argument('-u', '--update', dest='update', action='store_true', default=False, help='Command-line argument -u|--update is no more supported.') parser.add_argument('-d', '--dir', dest='install_base_dir', type=str, default=None, help='Project installation base directory.') parser.add_argument('-b', '--boot', dest='bootstrap', type=str, default=None, help='Creates a release area using the bootstrap file') parser.add_argument('-n', '--name', dest='install_name', type=str, default=None, help='Specify the name of the SCRAM-base development area directory.') opts, args = parser.parse_known_args(args) SCRAM.INTERACTIVE = True if opts.log else False if opts.bootstrap: return project_bootnewproject(opts, args) if len(args) == 0: SCRAM.scramfatal("Error parsing arguments. See \"scram -help\" for usage info.") project = args[0] version = args[1] if len(args) > 1 else None releasePath = None if version is None: if isdir(project) and project.startswith('/'): area = ConfigArea(SCRAM.FORCED_ARCH) releasePath = area.searchlocation(project) if not releasePath: SCRAM.scramerror("Not a valid scram-based release area: %s" % project) project = basename(releasePath) version = project project = project.split('_', 1)[0] return project_bootfromrelease(project.upper(), version, releasePath, opts)
def cmd_db(args): parser = ArgumentParser(add_help=False) parser.add_argument('-s', '--show', dest='show', action='store_true', default=False, help='Show all the external databases linked in to your SCRAM db') parser.add_argument('-l', '--link', dest='link', type=str, default=None, help='Link/Add an external scram db <path> in to local scram db.') parser.add_argument('-u', '--unlink', dest='unlink', type=str, default=None, help='Unlink/Remove an already linked external db <path> from the local scram db.') opts, args = parser.parse_known_args(args) db = ProjectDB() if opts.link: environ['SCRAM_LOOKUPDB'] = environ['SCRAM_LOOKUPDB_WRITE'] if isdir(opts.link): if not db.link(opts.link): SCRAM.scramerror("Can not link to SCRAM-DB. No such directory: %s" % opts.link) else: SCRAM.printmsg("Current SCRAM database: %s" % environ['SCRAM_LOOKUPDB']) SCRAM.printmsg("Linked \"%s\" to current SCRAM database." % opts.link) elif opts.unlink: environ['SCRAM_LOOKUPDB'] = environ['SCRAM_LOOKUPDB_WRITE'] if db.unlink(opts.unlink): SCRAM.printmsg("Current SCRAM database: %s" % environ['SCRAM_LOOKUPDB']) SCRAM.printmsg("Unlinked \"%s\" from current SCRAM database." % opts.unlink) else: SCRAM.printmsg("Current SCRAM database: %s" % environ['SCRAM_LOOKUPDB']) links = db.listlinks() flag = False for db_type in ["local", "linked"]: if db_type not in links or not links[db_type]: continue flag = True msg = "The following SCRAM databases are linked " if 'local' == db_type: msg += "directly:" else: msg += "in-directly:" SCRAM.printmsg(msg) for extdb in links[db_type]: SCRAM.printmsg("\t%s" % extdb) SCRAM.printmsg("") if not flag: SCRAM.printmsg("There are no SCRAM databases linked.") return True
def tool_tag(args, area): if len(args) < 1: SCRAM.scramfatal("No tool name given: see \"scram tool -help\" for usage info.") toolmanager = ToolManager(area) toolname = args[0].lower() tool = toolmanager.gettool(toolname) if not tool: SCRAM.scramerror(">>>> Tool %s is not setup for this project area. <<<<" % toolname) tag = None if len(args) == 1 else args[1] msg = ToolFile.get_feature(tool, tag) if msg: SCRAM.printmsg(msg) return True
def tool_list(args, area): toolmanager = ToolManager(area) tools = toolmanager.toolsdata() if not tools: SCRAM.scramerror(">>>> No tools set up for current arch or area! <<<<") msg = "Tool list for location %s" % area.location() msglen = len(msg) msg += "\n%s\n" % ("+" * len(msg)) SCRAM.printmsg("\n%s" % msg) for tool in sorted(tools): SCRAM.printmsg(" {:40s} {:20s}".format(tool, tools[tool]['TOOLVERSION'])) SCRAM.printmsg("") return True
def tool_info(args, area): if not args: SCRAM.scramfatal("No tool name given: see \"scram tool -help\" for usage info.") toolmanager = ToolManager(area) toolname = args[0].lower() tool = toolmanager.gettool(toolname) if not tool: SCRAM.scramerror(">>>> Tool %s is not setup for this project area. <<<<" % toolname) msg = "Tool info as configured in location %s" % area.location() msglen = len(msg) msg += "\n%s\n" % ("+" * len(msg)) msg += "Name : %s\n" % toolname msg += "Version : %s\n" % tool['TOOLVERSION'] msg += "%s\n" % ("+" * 20) SCRAM.printmsg(msg) tooldata = ToolFile.summarize_tool(tool) for tag in sorted(tooldata): SCRAM.printmsg('%s=%s' % (tag, tooldata[tag])) SCRAM.printmsg("") return True
def remote_versioncheck(area): sversion = area.scram_version() if not sversion: SCRAM.scramerror("Unable to determine SCRAM version used to config. remote area.") spawnversion(sversion)