def validate_box_name(name, validate_web=False, version=0): unversioned_pattern = "^[a-zA-Z0-9]+/[A-z0-9][A-z0-9-.]+[A-z0-9]$" match = re.match(unversioned_pattern, name) if validate_web is False: return match is not None else: if match: c = Client() response, result = c.get_box(name, version) if response == 404: return False else: if result: return True else: raise TransportError("Unexpected response from server") else: return False
def info_service(name, version=0): term = get_term() valid = False valid = validate_box_name(name) if valid is False: puts( "{t.red}Error: {t.normal} {name} is not a valid service name" .format( t=term, name=name ) ) return client = Client() puts("Retrieving service: {t.bold_white}{name}\n".format( # owner=owner, name=name, t=term) ) response, results = client.get_box(name, version=version) if response == 404: puts(term.yellow("Warning: ") + "service not found.") elif results.get("type") != "service": puts(term.yellow("Warning: ") + "found box was not a service.") elif results: response, release_info = client.get_box_releases(name) if results: putInfo("Fullname", results.get("fullname")) putInfo("Owner", results.get("owner")) putInfo("Name", results.get("name")) puts("") putInfo( "All versions", '\n'.join(release_info.get("versionNumbers")), multiple_lines=True ) putInfo("showing version", results.get("version")) puts("") license = results.get("license") if license is None: license = "none specified" putInfo("License", license) keywords = ", ".join(results.get("keywords")) if keywords is None: keywords = "" putInfo("Keywords", keywords) putInfo( "\nDescription", results.get("description"), multiple_lines=True ) packages = "" for package in results.get("packages"): if len(packages): packages += ", " packages += "{name}: {version}".format( name=package.get("name"), version=package.get("version") ) else: packages = "None specified" putInfo("\nPackages", packages, multiple_lines=True) putInfo("\nRead me", results.get("readMe"), multiple_lines=True) else: puts("{t.red}Error: {t.normal}An error occurred while retrieving \ service information")