Skip to main content

A tool to build your own Magisk Modules Repository

Project description

Magisk Modules Repo Util

This util is to build module repository for MMRL

  • sync is a python package
  • cli.py is a cli tool

Getting Started

Install dependencies

pip3 install -r util/requirements.txt

New config.json

You can write it to your-repo/json/config.json by yourself, or

cli.py config --stdin << EOF
{
  "name": "Your Magisk Repo",
  "base_url": "https://you.github.io/magisk-modules-repo/",
  "max_num": 3,
  "enable_log": true,
  "log_dir": "log"
}
EOF

or

cli.py config --write name="Your Magisk Repo" base_url="https://you.github.io/magisk-modules-repo/" max_num=3 enable_log=true log_dir="log"

New track.json

You can write it to your-repo/modules/{id}/track.json by yourself, or

cli.py track --stdin << EOF
{
  "id": "zygisk_lsposed",
  "update_to": "https://lsposed.github.io/LSPosed/release/zygisk.json",
  "license": "GPL-3.0"
}
EOF

or

cli.py track --add id="zygisk_lsposed" update_to="https://lsposed.github.io/LSPosed/release/zygisk.json" license="GPL-3.0"

If you want to generate track.jsons from repositories on github

cli.py github --token <github-token> -u <user-name> -r <repo-name ...>

[!TIP] Click here to create a new api token.

Sync

cli.py sync

Generate a sitemap

cli.py sitemap --base-url "https://mmrl.dergoogler.com/?module="

How to update by GitHub Actions?

  • You can refer to GMR.

cli.py

cli.py --help
usage: cli.py [-h] [-v] [-V] command ...

Magisk Modules Repo Util

positional arguments:
  command
    config            Modify config of repository.
    track             Module tracks utility.
    github            Generate tracks from GitHub.
    sync              Sync modules in repository.
    index             Generate modules.json from local.
    check             Content check and migrate.
    sitemap           Sitemap generator.

options:
  -h, --help          Show this help message and exit.
  -v, --version       Show util version and exit.
  -V, --version-code  Show util version code and exit.

config.json

{
  "name": "Googlers Magisk Repo",
  "website": "https://mmrl.dergoogler.com",
  "support": "https://github.com/Googlers-Repo/repo/issues",
  "donate": "https://github.com/sponsors/DerGoogler",
  "submission": null,
  "description": null,
  "base_url": "https://gr.dergoogler.com/repo/",
  "max_num": 3,
  "enable_log": true,
  "log_dir": "log"
}
Key Attribute Description
name required Name of your module repository
base_url required Need to end with /
website optional Name of your website
donate optional Name of your donation url
submission optional Link to your submission requests
description optional Describe your repository
support optional Link to your support chat
max_num optional Max num of versions for modules, default is 3
enable_log optional default is true
log_dir optional default is null

track.json

{
  "id": "str",
  "enable": "bool",
  "verified": "bool",
  "update_to": "str",
  "source": "str",
  "readme": "str",
  "max_num": "int",
  "antifeatures": ["array"]
}
Key Attribute Type Description
id required Str Id of Module (in module.prop)
enable required Bool Whether to enable updates
update_to required Str Follow examples below
source optional Str Url of where the source code lives
homepage optional Str URL
readme optional Str URL with e.g. description, instructions
changelog optional Str Markdown or Simple Text (no HTML)
support optional Str URL to issue tracker/support forum
donate optional Str URL to donation page
cover optional Str URL to cover image (featureGraphic)
icon optional Str URL to icon.png (squared, max 512x512 px)
screenshots optional Str[] URLs to screenshots of the module
license optional Str SPDX identifier (see below)
antifeatures optional Str[] potentially unwanted "features" (see below)
category optional Str category the module belongs to (deprecated)
categories optional Str[] array of categories the module belongs to
require optional Str[] array of module_ids this module depends on
verified optional Bool if module has good quality and is well maintained
max_num optional Int Overload MAX_NUM in config.json
versions auto Int how many versions are present (do not touch!)

Examples for antifeatures and their meanings can e.g. be found here.

For SPDX identifiers, see the SPDX license list.

common/repo.json

[!IMPORTANT] This file can be placed in the modules root directory. If a repo owner has added your module to his repo he can override those fields with the track.json file

{
  "support": "str",
  "donate": "str",
  "cover": "str",
  "icon": "str",
  "license": "str",
  "homepage": "str",
  "readme": "str",
  "screenshots": ["array"],
  "category": "str",
  "categories": ["array"],
  "require": ["array"],
  "note": {
    "title": "str", // optional
    "color": "red,blue,yellow,green", // optional
    "message": "str" // required
  },
  "root": {
    "kernelsu": ">= 1.0.0",
    "magisk": ">= 24.0
  }
}
Key Attribute Description
license optional SPDX ID
cover optional Url
icon optional Url
readme optional Str
screenshots optional Url[]
antifeatures optional Str[]
category optional Str
categories optional Str[]
homepage optional Url
support optional Url
donate optional Url
note optional Note
root optional RootSolutions (you should follow the semver) syntax

Update from updateJson

For those modules that provide updateJson.

{
  "id": "zygisk_lsposed",
  "update_to": "https://lsposed.github.io/LSPosed/release/zygisk.json",
  "license": "GPL-3.0"
}

Update from local updateJson

update_to requires a relative directory of local.

{
  "id": "zygisk_lsposed",
  "update_to": "zygisk.json",
  "license": "GPL-3.0"
}

Update from url

For those have a same url to release new modules.

{
  "id": "zygisk_lsposed",
  "update_to": "https://github.com/LSPosed/LSPosed/releases/download/v1.8.6/LSPosed-v1.8.6-6712-zygisk-release.zip",
  "license": "GPL-3.0",
  "changelog": "https://lsposed.github.io/LSPosed/release/changelog.md"
}

Update from git

For those we can get module by packaging all files in the repository, such as Magisk-Modules-Repo and Magisk-Modules-Alt-Repo.

{
  "id": "busybox-ndk",
  "update_to": "https://github.com/Magisk-Modules-Repo/busybox-ndk.git"
}

Update from local zip

update_to and changelog requires a relative directory of local.

{
  "id": "zygisk_lsposed",
  "update_to": "LSPosed-v1.8.6-6712-zygisk-release.zip",
  "license": "GPL-3.0",
  "changelog": "changelog.md"
}

For developer

your-repo
├── json
│   ├── config.json
│   └── modules.json
│
├── local
│   ├── ...
│   └── ...
│
├── log
│   ├── sync_2023-03-18.log
│   ├── ...
│   └── ...
│
├── modules
│   ├── zygisk_lsposed
│   │   ├── track.json
│   │   ├── update.json
│   │   ├── v1.8.6_6712.md
│   │   ├── v1.8.6_6712.zip
│   │   ├── ...
│   │   └── ...
│   │
│   ├── another_module
│   │   ├── ...
│   │   └── ...
│   └── .
│
└── util

update.json

{
  "id": "zygisk_lsposed",
  "timestamp": 1673882223.0,
  "versions": [
    {
      "timestamp": 1673882223.0,
      "version": "v1.8.6 (6712)",
      "versionCode": 6712,
      "zipUrl": "{base_url}modules/zygisk_lsposed/v1.8.6_(6712)_6712.zip",
      "changelog": "{base_url}modules/zygisk_lsposed/v1.8.6_(6712)_6712.md"
    }
  ]
}

track.json

{
  "id": "zygisk_lsposed",
  "update_to": "https://lsposed.github.io/LSPosed/release/zygisk.json",
  "license": "GPL-3.0",
  "homepage": "https://lsposed.org/",
  "source": "https://github.com/LSPosed/LSPosed.git",
  "support": "https://github.com/LSPosed/LSPosed/issues",
  "added": 1679025505.129431,
  "last_update": 1673882223.0,
  "versions": 1
}

modules.json

version 1

{
  "name": "{name}",
  "metadata": {
    "version": 1,
    "timestamp": 1692439764.10608
  },
  "modules": [
    {
      "id": "zygisk_lsposed",
      "name": "Zygisk - LSPosed",
      "version": "v1.8.6 (6712)",
      "versionCode": 6712,
      "author": "LSPosed Developers",
      "description": "Another enhanced implementation of Xposed Framework. Supports Android 8.1 ~ 13. Requires Magisk 24.0+ and Zygisk enabled.",
      "track": {
        "type": "ONLINE_JSON",
        "added": 1679025505.129431,
        "license": "GPL-3.0",
        "homepage": "https://lsposed.org/",
        "source": "https://github.com/LSPosed/LSPosed.git",
        "support": "https://github.com/LSPosed/LSPosed/issues",
        "donate": ""
      },
      "versions": [
        {
          "timestamp": 1673882223.0,
          "version": "v1.8.6 (6712)",
          "versionCode": 6712,
          "zipUrl": "{base_url}modules/zygisk_lsposed/v1.8.6_(6712)_6712.zip",
          "changelog": "{base_url}modules/zygisk_lsposed/v1.8.6_(6712)_6712.md"
        }
      ]
    }
  ]
}

version 0

{
  "name": "{name}",
  "timestamp": 1692439602.46997,
  "modules": [
    {
      "id": "zygisk_lsposed",
      "name": "Zygisk - LSPosed",
      "version": "v1.8.6 (6712)",
      "versionCode": 6712,
      "author": "LSPosed Developers",
      "description": "Another enhanced implementation of Xposed Framework. Supports Android 8.1 ~ 13. Requires Magisk 24.0+ and Zygisk enabled.",
      "license": "GPL-3.0",
      "states": {
        "zipUrl": "{base_url}modules/zygisk_lsposed/v1.8.6_(6712)_6712.zip",
        "changelog": "{base_url}modules/zygisk_lsposed/v1.8.6_(6712)_6712.md"
      }
    }
  ]
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mmrl-util-2.10.10.tar.gz (41.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mmrl_util-2.10.10-py3-none-any.whl (52.1 kB view details)

Uploaded Python 3

File details

Details for the file mmrl-util-2.10.10.tar.gz.

File metadata

  • Download URL: mmrl-util-2.10.10.tar.gz
  • Upload date:
  • Size: 41.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for mmrl-util-2.10.10.tar.gz
Algorithm Hash digest
SHA256 00b2c7ddff715e1a9eed3b574b91f0436bb8674ca6197133eade53d9f01d8dae
MD5 75beeb2cad1fa854b47e48e761e1cf23
BLAKE2b-256 41fadada29c5e1577f44e242b40e8ee1da51f6513224160d668bb1feffa5b8b1

See more details on using hashes here.

File details

Details for the file mmrl_util-2.10.10-py3-none-any.whl.

File metadata

  • Download URL: mmrl_util-2.10.10-py3-none-any.whl
  • Upload date:
  • Size: 52.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for mmrl_util-2.10.10-py3-none-any.whl
Algorithm Hash digest
SHA256 e7989ab28ec57633a9909892fc566c45091bc067dd5e7f2b38c315bd7b71ac14
MD5 9705d6dcb395350a319d7c4caf31b538
BLAKE2b-256 3bca2a45703b4e413469ed409a74eb877e178d49c71fb949fa3d4ee3e145ddd0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page