Giter Site home page Giter Site logo

shugabuga / silica Goto Github PK

View Code? Open in Web Editor NEW
158.0 15.0 39.0 1.16 MB

A static site generator for MobileAPT repos.

Home Page: https://silica.shuga.co/

License: Other

Shell 3.17% CSS 3.80% JavaScript 2.64% Python 84.36% Mustache 6.04%
cydia sileo repo apt

silica's Introduction

Silica

Silica is a static repo generator for jailbroken iOS devices developed by Shuga and supported by Ignition.

The goal behind Silica is simple: make it as easy as possible to make a personal repo that plays nicely with both Cydia and Sileo. Silica generates "static" repos, allowing for repos to be hosted on GitHub Pages for free.

Getting Started

Silica, by default, is relatively straight-forward to configure. This tutorial is going to assume that you have the following already installed on your machine:

  • Python 3 (to run Silica)
  • pip3 (for installing Python dependencies)
  • Homebrew (macOS users only)

Silica is only officially supported on macOS and Debian-based OSes at the moment. We can not guarantee Windows support at this time. I'm sure you could get this working on other Linux distributions with a bit of tweaking, too. btw i don't use arch

Silica for Windows Subsystem for Linux (WSL)

If you are not using Windows, skip down to Dependencies.

Due to Silica requiring dpkg-deb to properly work, you cannot run Silica in native Windows. As a result, you need to set your machine up WSL and Ubuntu for Windows, which will allow for Linux programs to run in Windows via a terminal.

1. Set up WSL

Please follow this official tutorial. Please use Ubuntu for ideal results.

2. Setting up WSL for dpkg-deb

Due to how dpkg-deb handles permissions, we need to change some settings to make things work.

  1. Run sudo nano /etc/wsl.conf to edit the WSL config.
  2. Copy and paste the following text into the file.
[automount]
enabled = true
root = /mnt/
options = "umask=22,fmask=11"
  1. Run the following command to update your umask to 0022.
echo "\numask 0022" >> ~/.bashrc
  1. Open up Windows PowerShell as an administrator by right-clicking on the Windows button.

  2. Run this command to restart WSL:

Get-Service LxssManager | Restart-Service

(Note: Please always run Silica through the Ubuntu program or Windows Terminal.)

(Tip courtesy of /u/zoredache on Reddit.)

3. Install dependencies

Like any Debian-based system (like Ubuntu), we need to install some dependencies before downloading Silica.

apt-get install gnupg
apt-get install git
3. Getting Silica

Now it's time to get Silica! Because of how Windows deals with line breaks, we need to download Silica via Git. If you already downloaded Silica via your web browser, delete it. We'll redownload it in a second.

Once you are in the directory you want to download Silica to, run this command:

git clone https://github.com/Shugabuga/Silica/

This will create a new folder for Silica.

4. Text Editors and line breaks

Due to how Windows deals with line breaks, if you wish to create Silica config files by hand, you need to make sure your text editor uses Unix line breaks. This varies by text editor and IDE, so look for a setting about line breaks or EOL characters and set it to Unix.

From here, you're all set for Windows-specific instructions! Now follow the Debian instructions.

Dependencies

We know that some developers will already have these dependencies installed. If you know you already have a dependency, there is no need to re-install it.

macOS users are going to want to install a couple of packages. To do so, run these commands in Terminal:

brew install dpkg
brew install gnupg

Users of Debian or its derivatives (like Ubuntu) need to run the following commands as root to install needed dependencies:

apt-get install gnupg
apt-get install git

We also use find, bzip2, and xz, but most people have these installed by default.

(Windows Subsystem for Linux users already did this step.)

Other Dependencies and Settings

Now that any needed system dependencies are installed, we need to install some Python dependencies and configure settings.json. Thankfully, the included setup.sh script handles this for you!

Run the following command and follow the on-screen prompts to set up Silica's core settings, including setting the repo name, default tint color, and whether it should automatically run Git when it finishes updating your repo. This script will also generate a key to sign the Release.gpg file which will be stored in your keyring.

./setup.sh

If this doesn't work, make sure the the file is set as an executable by running chmod +x setup.sh.

The settings you input during the installation process can be later modified in the Styles/settings.json file.

Customization

Most users would like to customize their repos to fit their needs. Everything you need to do this is in the Styles folder.

  • index.mustache is the template file of the repo's main web page.
  • tweak.mustache is the template file of the web depictions of the tweaks.
  • index.css is a CSS file that is applied to every web page generated by Silica.
  • index.js is a JavaScript file that handles version detection and tab switching on web depictions.
  • settings.json is auto-generated by the setup script, but you can edit it to change your repo's name, description, default tint color, and more.
  • icon.png is the repo's icon as it will display in Cydia and Sileo.
  • The Generic folder includes default image assets.

Image Assets

All Silica image assets are .png files.

  • The Generic folder, which contains a Banner and Icon folder, includes default assets for when a package lacks a banner or an icon. These are named after the package's section. If a section does not have its own image, it will use whatever is stored in Generic.png.
  • icon.png is your repo's icon as displayed in Sileo and Cydia.

Adding Packages

Silica's Packages folder includes all the packages that will live on your repo. A folder in Packages represents an individual tweak. The name of the folder does not matter and changing it does nothing; Silica references packages via their "bundle id."

Inside of a tweak or theme's folder should include a silica_data folder (which will be elaborated on later on) and either a .deb file (useful for tweak developers) or the hierarchy of the generated package (the latter which is useful for theme designers). If a .deb file is present, it will take precedence.

The directory tree should look similar to the following. Please note how that the .deb file is in its own folder inside of Packages.:

Packages
    My Tweak
        tweak.deb
        silica_data
            index.json
            description.md
            icon.png
            banner.png
            screenshots
                01.png
                02.png
                a_screenshot.png
            scripts
                prerm
                extrainst_
    My Theme
        Library
            Themes
                MyTheme.theme
                    IconBundles
                        com.anemonetheming.anemone-large.png
        silica_data
            index.json
            description.md
            icon.png
            banner.png
            screenshots
                01.png
                02.png
                a_screenshot.png

silica_data

The silica_data folder is where the icon, description, screenshot, and other package (tweak/theme) information live. This package is not put in the final package file (the ".deb" file). The following files and folders can go in this folder:

  • index.json is the only required file. It is a JSON file including information such as the bundle ID, a short tagline description, version compatibility, developer information, changelog data, and more. This file is generated by Silica using user input if it does not exist. More information on this file is in the Documentation section of this document.
  • description.md is a Markdown file that houses the package's description.
  • icon.png is the package's icon as it appears in depictions and in Sileo. It should be a square PNG file.
  • banner.png is the package's banner as it appears in depictions and in Sileo. It should be a rectangular PNG file.
  • The screenshots folder houses any screenshots you want to be displayed alongside the package.
  • The scripts folder include any pre/post-installation scripts. The contents of this folder will be placed in the package's DEBIAN folder.

The index.json file, if missing, will be generated when running Silica.

Generating a Repo

Once everything is configured as you wish, run the following command to "compile" your repo.

python3 index.py

From here, Silica will automatically generate a repo and put the output in the docs folder. If a package does not have a silica_data file, you will be asked some information to help automatically generate it.

From here, a service such as GitHub Pages can be used to host the repo for free.

Hosting with GitHub Pages

Silica is designed to be used with GitHub Pages, allowing you to operate a repo for free.

There are multiple ways to go about this, but this method is recommended for those who are totally unfamiliar with git (if you can get git up and running, please use that).

  1. Create a GitHub account.
  2. Create a new repository. Initialize it with a README.
  3. Drag-and-drop all of the contents of the docs directory to the newly-created repository.
  4. Type something in the text box and click the "Commit Changes" button.
  5. Go to your repository's settings and scroll down to the GitHub Pages section.
  6. Set "Source" from "None" to "master branch."
  7. Follow these steps to configure your domain with GitHub Pages

From there, you should be done! Your compiled repo's "source" will have to be publicly viewable if you don't have a Pro account, but that shouldn't matter too much if you only upload the docs folder to GitHub.

If you happen to have git installed on your computer and run git clone https://github.com/your_username/repository_name/, you can use "master branch /docs folder" as the site source and Silica's automatic Git pushing feature to automate the uploading process. This is recommended if you happen to have a GitHub Pro account.

Documentation

index.json

Here is a comprehensive example of an index.json file. These reside in the package's silica_data folder and is required for the repo to properly compile. You must include the bundle_id, name, version, tagline, section, works_min, and works_max. All other values are optional, but are recommended (if applicable).

{
    "bundle_id": "co.shuga.elementary-lite",
    "name": "Elementary Lite",
    "version": "1.1.2-beta",
    "tagline": "A simplistic, glyph-based theme.",
    "homepage": "https://shuga.co/repo",
    "developer": {
        "name": "Shuga",
        "email": "[email protected]"
    },
    "maintainer": {
        "name": "Shuga",
        "email": "[email protected]"
    },
    "social": [
        {
            "name": "Twitter",
            "url": "https://twitter.com/HeyItsShuga"
        },
        {
            "name": "Website",
            "url": "https://shuga.co/"
        }
    ],
    "sponsor": {
        "name": "Shuga Studios",
        "email": "[email protected]"
    },
    "section": "Themes",
    "pre_dependencies": "",
    "dependencies": "com.anemonetheming.anemone",
    "conflicts": "",
    "replaces": "",
    "provides": "",
    "other_control": ["Tag: role::enduser", "SomeOtherEntryToControl: True"],

    "tint": "#55c6d3",
    "works_min": "8.0",
    "works_max": "13.0",
    "featured": "true",
    "source": "https://github.com/Shugabuga/Silica",
    "changelog": [
        {
            "version": "1.1.2-beta",
            "changes": "Thank you for participating in the Elementary beta! All future updates will be given a descriptive changelog with a list of changes."
        }
    ]
}

settings.json

The settings.json file, located in the Styles folder, let you configure Silica as a while. Everything in this file is required except for subfolder, social, footer, and enable_pgp.

{
    "name": "Silica Beta Repo",
    "description": "A repo used to help develop the Silica static repo compiler.",
    "tint": "#2da9f3",
    "cname": "silica.shuga.co",
    "maintainer": {
        "name": "Shuga",
        "email": "[email protected]"
    },
    "social": [
        {
            "name": "Twitter",
            "url": "https://twitter.com/HeyItsShuga"
        },
        {
            "name": "Website",
            "url": "https://shuga.co/"
        }
    ],
    "automatic_git": "false",
    "subfolder": "repo",
    "footer": "{{repo_name}} Powered by Silica {{silica_version}}",
    "enable_gpg": "false"
}

Templating

The repo's home page and web-based tweak depictions can be customized using a Mustache-based templating system. If you want to customize these pages, you can use the following placeholders to extend or personalize your Silica install.

Customizing your repo is optional, but those migrating from a different repo who want to preserve the look of their old depictions may want to do this, as may those who want to push a brand identity.

index.mustache Placeholders

Placeholder Description
{{repo_name}} The name of the repo.
{{repo_desc}} A short tagline of the repo.
{{repo_url}} The domain the repo is hosted on.
{{repo_tint}} The repo's default tint color.
{{tint_color}} An alias to {{repo_tint}}.
{{{repo_carousel}}} A scrollable carousel that lists any featured packages.
{{{repo_packages}}} A list of every package on the repo.
{{silica_compile_date}} The date the repo was compiled on (in YYYY-MM-DD).
{{silica_version}} The version of Silica that the repo runs on.
{{footer}} The footer.
{{tweak_release}} An object including all of the tweaks on the repo and their settings.

tweak.mustache Placeholders

Placeholder Description
{{repo_name}} The name of the repo.
{{repo_desc}} A short tagline of the repo.
{{repo_url}} The domain the repo is hosted on.
{{repo_tint}} The repo's default tint color.
{{tint_color}} The package's tint color. Defaults to the repo's default tint color.
{{silica_compile_date}} The date the repo was compiled on (in YYYY-MM-DD).
{{silica_version}} The version of Silica that the repo runs on.
{{footer}} The footer.
{{tweak_release}} An object including all of the tweaks on the repo and their settings.
{{tweak_name}} The name of the package to display.
{{tweak_developer}} The author of the displayed package.
{{tweak_version}} The current version of the displayed package.
{{tweak_section}} The category of the displayed package.
{{tweak_bundle_id}} The "Bundle ID" of the displayed package.
{{tweak_compatibility}} A string to state what iOS versions a package is compatible with.
{{works_min}} The minimum iOS version the package is compatible with.
{{works_max}} The maximum iOS version the package is compatible with.
{{tweak_tagline}} A short tagline of the displayed package.
{{{tweak_carousel}}} A scrollable carousel of the displayed package's screenshots.
{{{tweak_description}}} A formatted description of the displayed package. Defaults to {{tweak_tagline}}.
{{{changelog}}} A formatted list of changes to the displayed package.
{{source}} A URL to the package's source code.

File Structure

This is the structure of user-defined files and folders in Silica. Some of these, such as settings.json, may be automatically generated on set-up. Others (such as the .mustache template files) don't need to be changed if you want to use the default settings.

Packages // All tweak/theme information/data will go here, AKA what will mainly be messed with.
    [Tweak Folder]
        silica_data
            index.json // This will allow you to edit data in the generated Control file, as well as the data that web and native depictions will use (such as compatibility information and color tint; icons and screenshots are automatically dealt with.).
            description.md // A separate description file, because a one-liner in some JSON isn't any fun!
            icon.png // The package icon.
            banner.png // The header image.
            screenshots
                [Assorted images].png
            scripts
                [Everything here will be put in DEBIAN and is for pre/postinst scripts]
        [Mirror of iOS directory listing OR a .deb file]
Styles // Allows users to customize how Silica looks
    index.mustache // This controls the compiled index.html file.
    tweak.mustache // This controls the per-tweak web depictions generated.
    settings.json // This allows you to edit data in the generated Release file, maintainer links, and some other things that Sileo native depictions may need
    index.css // Stylesheet
    index.js // JavaScript
    icon.png // Repo icon.

silica's People

Contributors

absidue avatar cj81499 avatar insanewaifu avatar luneder avatar shugabuga avatar uchks avatar worf1337 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

silica's Issues

Multiple errors when running $ python3 index.py

1) See attached image for first error received. The index.json file was malformatted. Issues with file were corrected.

FIRST ERROR

2)Ran index.py cmd again and got the following error:
Silica Compiler 1.0.0 Traceback (most recent call last): File "index.py", line 214, in main() File "index.py", line 54, in main reposettings = PackageLister.GetRepoSettings() File "/Users/kid1carus/Silica/util/PackageLister.py", line 124, in GetRepoSettings return json.load(content_file) File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/init.py", line 296, in load parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw) File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/init_.py", line 348, in loads return _default_decoder.decode(s) File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 21 column 1 (char 536)

**_Problem was with the file at Styles/settings.json. Corrected the problem and ran python3 index.py again.

3)Received error:_**
File "index.py", line 214, in
main()
File "index.py", line 114, in main
index_html = DepictionGenerator.RenderIndexHTML()
File "/Users/kid1carus/Silica/util/DepictionGenerator.py", line 288, in RenderIndexHTML
replacements = DepictionGenerator.RenderDataHTML(self)
File "/Users/kid1carus/Silica/util/DepictionGenerator.py", line 329, in RenderDataHTML
data['repo_packages'] = DepictionGenerator.PackageEntryList(self, tweak_release)
File "/Users/kid1carus/Silica/util/DepictionGenerator.py", line 444, in PackageEntryList
list_el += DepictionGenerator.PackageEntry(self, package['name'], package['developer']['name'],
TypeError: string indices must be integers

CURRENTLY WAITING FOR FIX

UnicodeEncodeError: 'latin-1' codec can't encode character '\u2013' in position 2218: ordinal not in range(256)

Hi,

I'm compiling a repo with Silica, and getting an error every time. I'm putting it below.

Silica Compiler 1.2.2 Traceback (most recent call last): File "index.py", line 225, in <module> main() File "index.py", line 125, in main PackageLister.CreateFile("docs/index.html", index_html) File "/root/Documents/Silica/util/PackageLister.py", line 25, in CreateFile text_file.write(contents) UnicodeEncodeError: 'latin-1' codec can't encode character '\u2013' in position 2218: ordinal not in range(256)

If anyone could help that would be appreciated. Thanks!

How do I get rid of this CNAME error?

The page build completed successfully, but returned the following warning for the master branch:

You cannot use CNAMEs ending with github.io or github.com. Instead, create a repository named neumaif02.github.io. See https://help.github.com/articles/setting-up-your-pages-site-repository/

For information on troubleshooting Jekyll see:

https://help.github.com/articles/troubleshooting-jekyll-builds

If you have any questions you can contact us by replying to this email.

Multiple version support

Due to how it names DEBs, multiple packages with the same bundle ID cannot be used, which is useful for having multiple versions of a package on one repo.

Error by running index.py

Silica Compiler 1.1.0 Traceback (most recent call last): File "index.py", line 226, in <module> main() File "index.py", line 53, in main tweak_release = PackageLister.GetTweakRelease() File "/home/nepeta/Downloads/Silica-master/util/PackageLister.py", line 55, in GetTweakRelease with open(self.root + "Packages/" + tweakEntry + "/silica_data/index.json", "r") as content_file: FileNotFoundError: [Errno 2] No such file or directory: '/home/nepeta/Downloads/Silica-master/util/../Packages/Test/silica_data/index.json'

Additions to DEB changelogs are done late. [+ rewrite proposal]

The bug.

From Silica:

We already created the variables that contain the changelogs and, to
make matters worse, all the web assets. The only way to mitigate this is to re-create the
tweak_release variable again, which wrecks a lot of things (ie runtime).
A Silica rewrite is required to properly fix this bug.

Silica does these steps:
Generate tweak_release data -> Create repo assets -> Update changelog text

This is the order desired:
Update changelog text -> Generate tweak_release data -> Create repo assets

This will require a rewrite of Silica to fix. As a result of this realization, as well as various other instabilities and #10 being popular, I am highly encouraging a 2.0.0 release that rewrites most, if not all, of Silica.

The rewrite.

I want to rewrite Silica. There's a major design flaw about how we process DEBs that could break things (we totally overwrite the original Control file). As very little theme designers use Silica's auto-DEB functionality, DEBs should be considered first-class citizens.

A few notes/ideas:

  • I do want to keep the silica_data structure. It works pretty well, and breaking things is no good. However, it may be worth having an entry for DEBs of different versions (see #10).
  • The current hash-oddity mitigation should stay. I don't think I can fix this totally, so let's keep the hashes as-is. In fact, when upgrading a DEB, the old DEB should be moved and not totally deleted from the web server (see #10).
  • I should finish DpkgPy. Native Windows support would be great, and at the very least, being able to ditch dpkg would by handy. See: research on creating ar archives.
  • Styles should be updated to the versions used on Parcility. This is not about the shadow DOM enhancements, but some CSS fixes. Also, have the add button support adding to any repo (see Chariz's implementation for reference; Demasi and I already talked about cloning the design).
  • Sorting: Consider alphanumeric sorting of packages! Also consider a searching algorithm powered by a binary search (or, if Python provides a built-in one, use that). Package searching would be a nice front-end tweak! In addition, an overview of package count per category could be a useful addition.
  • Version detection when loading DEB: This may be automatable. See dependencies, tags for how to do this.
  • Silica for Apps: Consider support for a tri-release via a AltStore repo, an IPA file to download, and a DEB (given a sole .app as input). Consult PixelOmer on perfecting entitlements and try to clear anything that may not be necessary. See: [[Shuga Sticker Pack]].
  • Premium applications: Consider an approach of flagging apps as "paid" or as "trial." Silica should be able to act as a primitive payment processor to notify users if the app isn't truly free (such as Boxberger's use of an in-tweak payment system). Of course, it'll be for show and the tweak should be able to download just as if it was free.

A Silica 2.0.0 release should be as bug-free as possible and add the very few bells and whistles that are missing (ie multiple version support). It won't be easy, but it'll be very rewarding!

Add way to customize the native depictions

Great tool. I'd like to add a custom button into the native depiction for it to be displayed in Sileo, and I didn't find a way to do it easily via Silica. Is that something you'd be able to look into? And if so, how would updating Silica itself work?

Cannot run Setup.sh

When I run setup.sh, I get the following output:

File "/home/ajaidan/Silica/setup.sh", line 2
echo "Silica Configuration Utility"
^
SyntaxError: invalid syntax

Non-compliance with native depiction spec.

  1. DepictionSpacerView is missing "spacing" property, making it useless.

  2. DepictionHiddenScreenshotView isn't a valid property, but a hacky workaround. Consider its removal.

Changelog

The changelog will not work. Below I have included one of my index.json that I have been adding to, even tho it will not show. I have also included the .json file for the corresponding tweak from the docs folder. If you need more just let me know. Thanks in advance!!
com.willbraff.historyofios.json.zip

index.json.zip

Errors by running index.py

Traceback (most recent call last): File "index.py", line 226, in <module> main() File "index.py", line 133, in main PackageLister.CreateFile("docs/depiction/web/" + tweak_data['bundle_id'] + ".html", tweak_html) File "/home/silica/Schreibtisch/Silica/util/PackageLister.py", line 24, in CreateFile with open(self.root + path, "w") as text_file: FileNotFoundError: [Errno 2] No such file or directory: '/home/silica/Schreibtisch/Silica/util/../docs/depiction/web/io/jailbreak.github.neumaif02.meinerstestheme.html'

**Tell us about your setup:**

Tell us about your setup:

  1. What iDevice are you using? iPhone SE 1st Gen
  2. On what version of iOS is it? 13.5.1
  3. What version of checkra1n are you using? 0.10.2
  4. What is your host system (OS version? Hackintosh? VM? etc.)? Linux Mint 18 CLI
  5. How are you connecting to the device (USB-A? USB-C? Apple/3rd party cable? Through a USB hub?)? Apple cable; laptop's built in USB port

What are the steps to reproduce the issue?

  1. Execute checkra1n
  2. Put iDevice in DFU
  3. Wait for device to fully boot
    ...done

What do you expect, and what is happening instead?
I expect it to say 'All Done', but it says USB Error -77, but the jailbreak worked.

Does the issue also occur if you tick "Safe Mode" in the checkra1n options?
Yes.

Any other info, error logs, screenshots, ...?

Originally posted by @Broadcastre in checkra1n/BugTracker#1653

Automatically update pre/postinst when updating a DEB.

If you have multiple versions of the same package, the deb that Silica builds for the docs folder uses the newest version’s contents, but the oldest postinst script.

EDIT: I can’t figure out how to change the issue title, but I was wrong, it doesn’t use the oldest version’s scripts, it uses the scripts in the silica_data folder. These scripts should be updated when the package is updated.

unexpected error after running index.py

Traceback (most recent call last):
File "/Users/joshy/Github/apt/index.py", line 225, in
main()
File "/Users/joshy/Github/apt/index.py", line 49, in main
DebianPackager.CheckForSilicaData()
File "/Users/joshy/Github/apt/util/DebianPackager.py", line 453, in CheckForSilicaData
os.remove(self.root + "Packages/" + folder + "/silica_data/scripts/Control")
FileNotFoundError: [Errno 2] No such file or directory: '/Users/joshy/Github/apt/util/../Packages/zsh/silica_data/scripts/Control'

DebianPackager.py missing maintainer

   DebianPackager.py

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"

there is a problem with the judgment logic
missing maintainer dpkg-deb: warning: ignoring 1 warning about the control file(s)

Error by running index.py

All done! Please look over the generated "index.json" file and consider populating the "silica_data" folder with a description, screenshots, and an icon. Traceback (most recent call last): File "index.py", line 226, in <module> main() File "index.py", line 51, in main DebianPackager.CheckForSilicaData() File "/home/nepeta/Schreibtisch/Nepeta/util/DebianPackager.py", line 394, in CheckForSilicaData os.remove(self.root + "Packages/" + folder + "/silica_data/scripts/Control") FileNotFoundError: [Errno 2] No such file or directory: '/home/nepeta/Schreibtisch/Nepeta/util/../Packages/Cuboid/silica_data/scripts/Control'

Proper naming scheme

Thanks for the great implementation! However it needs a proper naming scheme.

Styles->settings
docs->upload
util->scripts
index.py->build.py
setup.sh, requirements.txt to be moved to scripts folder

Folder names should be statically defined in settings.json, it would make it a lot easier to rename in future and avoid any conflicts.

And finally support for github deploy keys, keep up the good work 👍

Having multiple versions of the same tweak in one directory seems to create a mishmash of them during the repacking

Today I tried to update some of my tweaks. I was absolutely puzzled for about an hour at why it worked when I tested locally, but not when I got it from my repo.
Turns out, Silica saw the 3 versions of the package that I had in the directory, took the dylib from one version, the file structure from another (i had prefs) and created a Frankenstein monster that if you install, you get the prefs that don't work because the dylib is old.
Deleting the docs directory, the old versions and re-running the script fixed it. This is definitely something worth looking into if this project is still maintained. It was a nightmare to debug and find out what caused my tweaks not working.

How to generate a contents file in silica?

A contnets file is a file where every line is like this: /some/path package-name

It could be generated using apt-ftparchive by doing apt-ftparchive contents /path/to/debs > Contents-iphoneos-arm

But how would I do that in silica?

Errors by running index.py

Silica Compiler 1.0.0 Traceback (most recent call last): File "/home/felix/Schreibtisch/Silica-master/index.py", line 214, in <module> main() File "/home/felix/Schreibtisch/Silica-master/index.py", line 114, in main index_html = DepictionGenerator.RenderIndexHTML() File "/home/felix/Schreibtisch/Silica-master/util/DepictionGenerator.py", line 288, in RenderIndexHTML replacements = DepictionGenerator.RenderDataHTML(self) File "/home/felix/Schreibtisch/Silica-master/util/DepictionGenerator.py", line 331, in RenderDataHTML data['repo_carousel'] = DepictionGenerator.CarouselEntryList(self, tweak_release) File "/home/felix/Schreibtisch/Silica-master/util/DepictionGenerator.py", line 465, in CarouselEntryList featured_int = random.randint(0,(len(tweak_release)-1)) File "/usr/lib/python3.7/random.py", line 222, in randint return self.randrange(a, b+1) File "/usr/lib/python3.7/random.py", line 200, in randrange raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width)) ValueError: empty range for randrange() (0,0, 0)

Script file

I tried your silica and I found an error in the script file if I installed the deb file.
I found the script file outside the debian folder, can you fix it so that the script file is no longer outside the debian folder?

Thanks

Seperate Sileo Add Button

Sileo has removed support for cydia:// URLs, so the + button doesn't work anymore. There should be seperate buttons for Cydia and Sileo.

Error: Has for Packages.zst from [DOMAIN] is invalid

Getting this error when adding the repo on Silio only. Repo works fine on Zebra

Error: Has for Packages.zst from [DOMAIN] is invalid
Error: Could not decompress packages from [DOMAIN] (zst): Unknown frame descriptor

Add Packages.xz

Simply make the script create Packages.xz file for faster loading and less 404 spamming

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.