コード例 #1
0
    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=(',', ':'))
コード例 #2
0
    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)
コード例 #3
0
 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']
         }
コード例 #4
0
    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
コード例 #5
0
    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=(',', ':'))