|
1 |
| -# skyline-rs-template |
| 1 | +# Helios |
2 | 2 |
|
3 |
| -A template for writing skyline plugins for modding switch games using Rust and skyline-rs. |
| 3 | +A skyline-based plugin for automatically keeping your mods up-to-date. If an update is available, it prompts you to install it on launch. |
4 | 4 |
|
5 |
| -[Documentation for skyline-rs](https://ultimate-research.github.io/skyline-rs-template/doc/skyline/index.html) |
6 | 5 |
|
7 |
| -## Setup |
| 6 | +### Usage |
8 | 7 |
|
9 |
| -### Local |
| 8 | +To create a mod to be updated via Helios, simply create a simple config: |
10 | 9 |
|
11 |
| -#### Prerequisites |
12 |
| - |
13 |
| -* [Rust](https://www.rust-lang.org/install.html) - make sure rustup, cargo, and rustc (preferrably nightly) are installed. |
14 |
| -* [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) |
15 |
| - |
16 |
| -Install [cargo skyline](https://github.com/jam1garner/cargo-skyline). |
17 |
| -```bash |
18 |
| -# inside a folder where you will dev all of your plugins going forward |
19 |
| -cargo install cargo-skyline |
20 |
| -cargo skyline new [your_plugin_name] |
21 |
| -``` |
22 |
| - |
23 |
| -### VS Code with Docker |
24 |
| - |
25 |
| -#### Prerequisites |
26 |
| - |
27 |
| -* [Docker](https://www.docker.com/get-started) |
28 |
| -* [Visual Studio Code](https://code.visualstudio.com/) |
29 |
| -* [Visual Studio Code Remote Development Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) |
30 |
| - |
31 |
| -Simply run `Remote Containers: Reopen in Container` in the Command Palette. |
32 |
| - |
33 |
| -## Creating and building a plugin |
34 |
| - |
35 |
| -To compile your plugin use the following command in the root of the project (beside the `Cargo.toml` file): |
36 |
| -```sh |
37 |
| -cargo skyline build |
38 |
| -``` |
39 |
| -Your resulting plugin will be the `.nro` found in the folder |
40 |
| -``` |
41 |
| -[plugin name]/target/aarch64-skyline-switch |
42 |
| -``` |
43 |
| -To install (you must already have skyline installed on your switch), put the plugin on your SD at: |
44 |
| -``` |
45 |
| -sd:/atmosphere/contents/[title id]/romfs/skyline/plugins |
46 |
| -``` |
47 |
| -So, for example, smash plugins go in the following folder: |
48 |
| -``` |
49 |
| -sd:/atmosphere/contents/01006A800016E000/romfs/skyline/plugins |
50 |
| -``` |
51 |
| - |
52 |
| -`cargo skyline` can also automate some of this process via FTP. If you have an FTP client on your Switch, you can run: |
53 |
| -```sh |
54 |
| -cargo skyline set-ip [Switch IP] |
55 |
| -# install to the correct plugin folder on the Switch and listen for logs |
56 |
| -cargo skyline run |
| 10 | +```toml |
| 11 | +name = "helios_test" |
| 12 | +version = "1.0.0" |
| 13 | +server_ip = "999.999.999.999" |
57 | 14 | ```
|
58 | 15 |
|
59 |
| -## Troubleshooting |
| 16 | +Then name it `[name here].toml` and throw it in `sd:/helios/[title id of game]/`. Helios will automatically keep your config file version up to date. |
60 | 17 |
|
61 |
| -**"Cannot be used on stable"** |
| 18 | +Config fields: |
62 | 19 |
|
63 |
| -First, make sure you have a nightly installed: |
64 |
| -``` |
65 |
| -rustup install nightly |
66 |
| -``` |
67 |
| -Second, make sure it is your default channel: |
68 |
| -``` |
69 |
| -rustup default nightly |
70 |
| -``` |
71 |
| ---- |
72 |
| -``` |
73 |
| -thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/bin/cargo-nro.rs:280:13 |
74 |
| -note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace |
75 |
| -``` |
76 |
| - |
77 |
| -Make sure you are *inside* the root of the plugin you created before running `cargo skyline build` |
78 |
| - |
79 |
| -Have a problem/solution that is missing here? Create an issue or a PR! |
80 |
| - |
81 |
| -## Updating |
| 20 | +* `name` (required) - the name of the plugin as present on the skyline-update server |
| 21 | +* `version` (required) - the version of the plugin being included on the SD card in the form of `MAJOR.MINOR.PATCH`. |
| 22 | +* `server_ip` (required) - the IP address of the server to install the update from. The server should be running skyline-update's update-server. |
82 | 23 |
|
83 |
| -For updating your dependencies such as skyline-rs: |
84 |
| - |
85 |
| -``` |
86 |
| -cargo update |
87 |
| -``` |
88 |
| - |
89 |
| -For updating your version of `rust-std-skyline-squashed`: |
90 |
| - |
91 |
| -``` |
92 |
| -# From inside your plugins folder |
93 |
| -
|
94 |
| -cargo skyline self-update |
95 |
| -``` |
| 24 | +It is recommended that mod creator's should include the config file with the download itself. This will allow anyone who installs the mod and has helios installed to update the mod without even thinking about it. |
0 commit comments