def NativeFeaturedCarousel(self, tweak_release): """ Generate a sileo-featured.json file for featured packages. Object carousel_entry_list: A "tweak release" object. """ repo_settings = PackageLister.GetRepoSettings(self) subfolder = PackageLister.FullPathCname(self, repo_settings) banners = [] for package in tweak_release: try: if package['featured'].lower() == "true": ar_el = { "package": package['bundle_id'], "title": package['name'], "url": "https://" + repo_settings['cname'] + subfolder + "/assets/" + package['bundle_id'] + "/banner.png", "hideShadow": "false" } banners.append(ar_el) except Exception: pass if len(banners) == 0: try: featured_int = random.randint(0, (len(tweak_release) - 1)) except Exception: PackageLister.ErrorReporter( self, "Configuration Error!", "You have no packages added to this repo. " "Make sure a folder is created at \"" + self.version + "/Packages\" that contains folders with " "package data inside of them and run Silica again.") featured_package = tweak_release[featured_int] ar_el = { "package": featured_package['bundle_id'], "title": featured_package['name'], "url": "https://" + repo_settings['cname'] + subfolder + "/assets/" + featured_package['bundle_id'] + "/banner.png", "hideShadow": "false" } banners.append(ar_el) featured_json = { "class": "FeaturedBannersView", "itemSize": "{263, 148}", "itemCornerRadius": 8, "banners": banners } return json.dumps(featured_json, separators=(',', ':'))
def NativeFeaturedCarousel(self, tweak_release): """ Generate a sileo-featured.json file for featured packages. Object carousel_entry_list: A "tweak release" object. """ repo_settings = PackageLister.GetRepoSettings(self) subfolder = PackageLister.FullPathCname(self, repo_settings) banners = [] for package in tweak_release: try: if package['featured'].lower() == "true": ar_el = { "package": package['bundle_id'], "title": package['name'], "url": "https://" + repo_settings['cname'] + subfolder + "/assets/" + package['bundle_id'] + "/banner.png", "hideShadow": "false" } banners.append(ar_el) except Exception: pass if len(banners) == 0: featured_int = random.randint(0, (len(tweak_release) - 1)) featured_package = tweak_release[featured_int] ar_el = { "package": featured_package['bundle_id'], "title": featured_package['name'], "url": "https://" + repo_settings['cname'] + subfolder + "/assets/" + featured_package['bundle_id'] + "/banner.png", "hideShadow": "false" } banners.append(ar_el) featured_json = { "class": "FeaturedBannersView", "itemSize": "{263, 148}", "itemCornerRadius": 8, "banners": banners } return json.dumps(featured_json)
def RenderDataBasic(self): """ Gets the value of basic repo data to pass to Pystache. """ repo_settings = PackageLister.GetRepoSettings(self) with open(self.root + "Styles/settings.json", "r") as content_file: data = json.load(content_file) date = datetime.datetime.now().strftime("%Y-%m-%d") subfolder = PackageLister.FullPathCname(self, repo_settings) return { "silica_version": self.version, "silica_compile_date": date, "repo_name": data['name'], "repo_url": data['cname'] + subfolder, "repo_desc": data['description'], "repo_tint": data['tint'] }
def CompileControl(self, tweak_data, repo_settings): """ Compiles a CONTROL file from a tweak_data object Object tweak_data: A single index of a "tweak release" object. Object repo_settings: An object of repo settings. """ subfolder = PackageLister.FullPathCname(self, repo_settings) control_file = "Architecture: iphoneos-arm\n" # Mandatory properties include name, bundle id, and version. control_file += "Package: " + tweak_data['bundle_id'] + "\n" control_file += "Name: " + tweak_data['name'] + "\n" control_file += "Version: " + tweak_data['version'] + "\n" # Known properties control_file += "Depiction: https://" + repo_settings['cname'] + subfolder + "/depiction/web/" + tweak_data[ 'bundle_id'] \ + ".html\n" control_file += "SileoDepiction: https://" + repo_settings['cname'] + subfolder + "/depiction/native/" \ + tweak_data['bundle_id'] + ".json\n" control_file += "ModernDepiction: https://" + repo_settings['cname'] + subfolder + "/depiction/native/" \ + tweak_data['bundle_id'] + ".json\n" control_file += "Icon: https://" + repo_settings['cname'] + subfolder + "/assets/" + tweak_data[ 'bundle_id'] + "/icon.png\n" # Optional properties try: if tweak_data['tagline']: # APT note: Multi-line descriptions are in the spec, but must be indicated with a leading space. control_file += "Description: " + tweak_data['tagline'].replace("\n\n", "\n .\n ").replace("\n", "\n ") + "\n" except Exception: control_file += "Description: An awesome package!\n" try: if tweak_data['homepage']: control_file += "Homepage: " + tweak_data['homepage'] + "\n" except Exception: pass try: if tweak_data['section']: control_file += "Section: " + tweak_data['section'] + "\n" except Exception: control_file += "Section: Unknown\n" try: if tweak_data['pre_dependencies']: control_file += "Pre-Depends: " + tweak_data['pre_dependencies'] + "\n" except Exception: pass try: if tweak_data['dependencies']: control_file += "Depends: firmware (>=" + tweak_data['works_min'] + "), " + tweak_data[ 'dependencies'] + "\n" except Exception: control_file += "Depends: firmware (>=" + tweak_data['works_min'] + ")\n" try: if tweak_data['conflicts']: control_file += "Conflicts: " + tweak_data['conflicts'] + "\n" except Exception: pass try: if tweak_data['replaces']: control_file += "Replaces: " + tweak_data['replaces'] + "\n" except Exception: pass try: if tweak_data['provides']: control_file += "Provides: " + tweak_data['provides'] + "\n" except Exception: pass try: if tweak_data['build_depends']: control_file += "Build-Depends: " + tweak_data['build_depends'] + "\n" except Exception: pass try: if tweak_data['recommends']: control_file += "Recommends: " + tweak_data['recommends'] + "\n" except Exception: pass try: if tweak_data['suggests']: control_file += "Suggests: " + tweak_data['suggests'] + "\n" except Exception: pass try: if tweak_data['enhances']: control_file += "Enhances: " + tweak_data['enhances'] + "\n" except Exception: pass try: if tweak_data['breaks']: control_file += "Breaks: " + tweak_data['breaks'] + "\n" except Exception: pass try: if tweak_data['tags']: control_file += "Tags: compatible_min::ios" + tweak_data['works_min'] + ", compatible_max::ios" + tweak_data['works_max'] + ", " + tweak_data['tags'] + "\n" except Exception: control_file += "Tags: compatible_min::ios" + tweak_data['works_min'] + ", compatible_max::ios" + tweak_data['works_max'] + "\n" try: if tweak_data['developer']: try: if tweak_data['developer']['email']: control_file += "Author: " + tweak_data['developer']['name'] + " <" + tweak_data['developer'][ 'email'] + ">\n" except Exception: control_file += "Author: " + tweak_data['developer']['name'] + "\n" except Exception: control_file += "Author: Unknown\n" try: if tweak_data['maintainer']['email']: control_file += "Maintainer: " + tweak_data['maintainer']['name'] + " <" \ + tweak_data['maintainer']['email'] + ">\n" except Exception: try: control_file += "Maintainer: " + tweak_data['maintainer']['name'] + "\n" except Exception: try: if tweak_data['developer']['email']: control_file += "Maintainer: " + tweak_data['developer']['name'] + " <" \ + tweak_data['developer']['email'] + ">\n" except Exception: try: control_file += "Maintainer: " + tweak_data['developer']['name'] + "\n" except Exception: control_file += "Maintainer: Unknown\n" try: if tweak_data['sponsor']: try: if tweak_data['sponsor']['email']: control_file += "Sponsor: " + tweak_data['sponsor']['name'] + " <" + tweak_data['sponsor'][ 'email'] + ">\n" except Exception: control_file += "Sponsor: " + tweak_data['sponsor']['name'] + "\n" except Exception: pass # other_control try: if tweak_data['other_control']: for line in tweak_data['other_control']: control_file += line + "\n" except Exception: pass return control_file
def RenderPackageNative(self, tweak_data): """ Renders a package's depiction using Sileo's "native depiction" format. Object tweak_data: A single index of a "tweak release" object. """ repo_settings = PackageLister.GetRepoSettings(self) try: tint = tweak_data['tint'] except Exception: try: tint = repo_settings['tint'] except Exception: tint = "#2cb1be" try: with open( self.root + "docs/assets/" + tweak_data['bundle_id'] + "/description.md", "r") as md_file: md_txt = md_file.read() except Exception: md_txt = tweak_data['tagline'] date = datetime.datetime.now().strftime("%Y-%m-%d") screenshot_obj = [] image_list = self.PackageLister.GetScreenshots(tweak_data) subfolder = PackageLister.FullPathCname(self, repo_settings) if len(image_list) > 0: for image in image_list: screenshot_entry = { "url": "https://" + repo_settings['cname'] + subfolder + "/assets/" + tweak_data['bundle_id'] + "/screenshot/" + image, "accessibilityText": "Screenshot" } screenshot_obj.append(screenshot_entry) # The following code is evil, but is actually easier to maintain. My humblest apologies. screenshot_view_title = "DepictionHeaderView" screenshot_view_carousel = "DepictionScreenshotsView" else: # The following code is evil, but is actually easier to maintain. My humblest apologies. screenshot_view_title = "HiddenDepictionHeaderView" screenshot_view_carousel = "HiddenDepictionScreenshotsView" changelog = DepictionGenerator.RenderNativeChangelog(self, tweak_data) screenshot_size = PackageLister.GetScreenshotSize(self, tweak_data) depiction = { "minVersion": "0.1", "headerImage": "https://" + repo_settings['cname'] + subfolder + "/assets/" + tweak_data['bundle_id'] + "/banner.png", "tintColor": tint, "tabs": [{ "tabname": "Details", "views": [{ "class": screenshot_view_carousel, "screenshots": screenshot_obj, "itemCornerRadius": 8, "itemSize": screenshot_size }, { "markdown": md_txt, "useSpacing": "true", "class": "DepictionMarkdownView" }, { "class": "DepictionSpacerView" }, { "class": "DepictionHeaderView", "title": "Information", }, { "class": "DepictionTableTextView", "title": "Developer", "text": tweak_data['developer']['name'] }, { "class": "DepictionTableTextView", "title": "Version", "text": tweak_data['version'] }, { "class": "DepictionTableTextView", "title": "Compatibility", "text": "iOS " + tweak_data['works_min'] + " to " + tweak_data['works_max'] }, { "class": "DepictionTableTextView", "title": "Section", "text": tweak_data['section'] }, { "class": "DepictionSpacerView" }, { "class": "DepictionTableButtonView", "title": "Contact Support", "action": "depiction-https://" + repo_settings['cname'] + subfolder + "/depiction/native/help/" + tweak_data['bundle_id'] + ".json", "openExternal": "true", "tintColor": tint }, { "class": "DepictionLabelView", "text": DepictionGenerator.RenderFooter(self), "textColor": "#999999", "fontSize": "10.0", "alignment": 1 }], "class": "DepictionStackView" }, { "tabname": "Changelog", "views": changelog, "class": "DepictionStackView" }], "class": "DepictionTabView" } blank = {"class": "DepictionSpacerView"} try: if tweak_data['source'] != "": source_btn = { "class": "DepictionTableButtonView", "title": "View Source Code", "action": tweak_data['source'], "openExternal": "true", "tintColor": tint } depiction['tabs'][0]['views'].insert(8, source_btn) depiction['tabs'][0]['views'].insert(8, blank) pass except Exception: pass return json.dumps(depiction, separators=(',', ':'))