Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
# Silica
# Silica (Rootless)

**Silica** is a static repo generator for jailbroken iOS devices developed by [Shuga](https://shuga.co) and supported by [Ignition](https://ignition.fun).

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.

## Rootless changes

Developers, you must add your architecture to your packages in the settings.json file.
Even if your package does not support rootless, you must add the architecture.
Rootless = ``` "architecture": "iphoneos-arm64" ```
Rootful = ``` "architecture": "iphoneos-arm" ```

## 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:
Expand Down Expand Up @@ -71,7 +78,7 @@ If you already downloaded Silica via your web browser, delete it. We'll redownlo
Once you are in the directory you want to download Silica to, run this command:

```bash
git clone https://github.com/Shugabuga/Silica/
git clone https://github.com/nahtedetihw/Silica/
```

This will create a new folder for Silica.
Expand Down Expand Up @@ -224,11 +231,12 @@ If you happen to have `git` installed on your computer and run `git clone https:
## 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).
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`, `architecture`, `name`, `version`, `tagline`, `section`, `works_min`, and `works_max`. All other values are optional, but are recommended (if applicable).

```json
{
"bundle_id": "co.shuga.elementary-lite",
"architecture": "iphoneos-arm64",
"name": "Elementary Lite",
"version": "1.1.2-beta",
"tagline": "A simplistic, glyph-based theme.",
Expand Down
4 changes: 2 additions & 2 deletions util/DebianPackager.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def CompileRelease(self, repo_settings):
release_file += "Suite: stable\n"
release_file += "Version: 1.0\n"
release_file += "Codename: ios\n"
release_file += "Architectures: iphoneos-arm\n"
release_file += "Architectures: iphoneos-arm iphoneos-arm64\n"
release_file += "Components: main\n"
release_file += "Description: " + repo_settings['description'].replace("\n\n", "\n .\n ").replace("\n", "\n ") + "\n"

Expand All @@ -48,7 +48,7 @@ def CompileControl(self, tweak_data, repo_settings):
"""
subfolder = PackageLister.FullPathCname(self, repo_settings)

control_file = "Architecture: iphoneos-arm\n"
control_file = "Architecture: " + tweak_data['architecture'] + "\n"
# Mandatory properties include name, bundle id, and version.
control_file += "Package: " + tweak_data['bundle_id'] + "\n"
control_file += "Name: " + tweak_data['name'] + "\n"
Expand Down
4 changes: 3 additions & 1 deletion util/DepictionGenerator.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import random # If no packages are featured, feature a random one.
from subprocess import check_output # Get upstream URL for API
from util.PackageLister import PackageLister

import re

class DepictionGenerator:
"""
Expand Down Expand Up @@ -112,6 +112,7 @@ def RenderPackageHTML(self, tweak_data):
replacements['works_min'] = tweak_data['works_min']
replacements['works_max'] = tweak_data['works_max']
replacements['tweak_tagline'] = tweak_data['tagline']
replacements['architecture'] = tweak_data['architecture']
except:
PackageLister.ErrorReporter(self, "Configuration Error!", "You are missing an essential "
"property in " + tweak_data['name'] + "'s index.json. Make sure developer, version, section, "
Expand Down Expand Up @@ -446,6 +447,7 @@ def ScreenshotCarousel(self, tweak_data):
repo_settings = PackageLister.GetRepoSettings(self)
screenshot_div = "<div class=\"scroll_view\">"
image_list = self.PackageLister.GetScreenshots(tweak_data)
image_list.sort(key=lambda f: int(re.sub('\D', '', f)))
if (len(image_list) > 0):
for image in image_list:
screenshot_div += '''<img class="img_card" src="../../assets/{1}/screenshot/{2}">'''.format(
Expand Down
5 changes: 3 additions & 2 deletions util/PackageLister.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import json # Used to parse various JSON files
import os # Used to navigate files so we know what tweak folders exist.
from PIL import Image # Used to get image screenshot size.

import re

class PackageLister:
"""
Expand Down Expand Up @@ -75,6 +75,7 @@ def GetScreenshots(self, tweak_data):
image_list.append(folder)
except:
pass
image_list.sort(key=lambda f: int(re.sub('\D', '', f)))
return image_list

def GetScreenshotSize(self, tweak_data):
Expand Down Expand Up @@ -171,4 +172,4 @@ def ResolveVersion(self, tweak_release, bundle_id):

def ErrorReporter(self, title, message):
print('\033[91m- {0} -\n{1}\033[0m'.format(title, message))
quit()
quit()