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
56 changes: 56 additions & 0 deletions SOURCES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Manifest sources as JSON

Extra manifest sources can be declared in `.json` files under
`%AppData%\LuaToolsGui\sources\`. A source declared this way appears as a row on the **Add** page and
installs through the same pipeline as any other.

Settings → *Manifest sources* lists the files found, what each contributed, and why anything was
refused. Files are re-read whenever that page is opened, so there is nothing to restart.

## Why

The sources the app can fetch from are otherwise fixed at build time. Following a repo that moved, or
adding a community one, means cutting a release. This makes it a line of JSON.

## Data only

A file can say **where** manifests are fetched from. It cannot supply code, a binary, or a fetch routine
of its own: it names one of the shapes the app already knows how to consume, and the app does the
fetching. Installing one of these files cannot execute anything.

## Format

`%AppData%\LuaToolsGui\sources\example.json`:

```json
{
"schema": 1,
"name": "Example sources",
"author": "you",
"sources": [
{
"name": "example-zip",
"displayName": "Example",
"kind": "manifestZip",
"url": "https://raw.githubusercontent.com/someone/some-repo/main/{appid}.zip",
"mirrors": ["https://cdn.jsdelivr.net/gh/someone/some-repo@main/{appid}.zip"],
"badge": "Free"
}
]
}
```

| Field | |
|---|---|
| `kind` | `manifestZip` — one `<appid>.zip` holding the lua and its `.manifest` files.<br>`luaFile` — one `<appid>.lua`, entitlements and depot keys only. |
| `url` | Must be `https` and contain `{appid}`. |
| `mirrors` | Tried in order when the primary is unreachable. Optional. |
| `displayName` | Row label. Defaults to `name`. |
| `badge` | Short label on the row. Cosmetic. Optional. |

A source is refused, with the reason shown in Settings, if it uses a name the app already uses, is not
`https`, has no `{appid}`, or names a `kind` that does not exist. One bad entry never takes the file's
good ones down with it.

GitHub urls go through the app's existing mirror fallback, the availability check included. A host that
refuses `HEAD` is probed with a one-byte ranged `GET` instead.
2 changes: 2 additions & 0 deletions src/LuaToolsGui/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ public App()
services.AddSingleton<CoverCache>();
services.AddSingleton<ToastService>();
services.AddSingleton<SteamDepotInfo>();
services.AddSingleton<Services.Sources.SourcePackRegistry>();
services.AddSingleton<Services.Sources.PackSourceService>();
services.AddSingleton<LuaVault>();
services.AddSingleton<Services.AppInfo.LaunchModStore>();
services.AddSingleton<Services.AppInfo.LaunchOptionsService>();
Expand Down
6 changes: 6 additions & 0 deletions src/LuaToolsGui/Resources/Strings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions src/LuaToolsGui/Resources/Strings.ar.resx
Original file line number Diff line number Diff line change
Expand Up @@ -645,4 +645,10 @@
<data name="Fixes_Revert_Conflict_Body" xml:space="preserve"><value>تغيّر {0} منذ تطبيق هذا الإصلاح، لذا فإن استعادته ستستبدل تلك التغييرات. إذا طبّقت إصلاحًا آخر فوقه، فتراجع عنه أولاً. الملفات المتأثرة: {1}.</value></data>
<data name="Fixes_Revert_Partial" xml:space="preserve"><value>تم التراجع عن الإصلاح جزئيًا</value></data>
<data name="Fixes_Revert_Partial_Body" xml:space="preserve"><value>تعذّرت استعادة {0} من الملفات. أغلق اللعبة وحاول مرة أخرى.</value></data>
<data name="Sources_Err_Fetch" xml:space="preserve"><value>هذا المصدر لا يحتوي على هذه اللعبة، أو تعذّر الوصول إليه.</value></data>
<data name="Settings_Section_Sources" xml:space="preserve"><value>مصادر المانيفست</value></data>
<data name="Settings_SourcePacks_Hint" xml:space="preserve"><value>مصادر إضافية معرَّفة في ملفات ‎.json. بيانات فقط: الملف يحدّد من أين تُجلب المانيفستات، ولا يُنفَّذ منه أي شيء.</value></data>
<data name="Settings_SourcePacks_Open" xml:space="preserve"><value>فتح المجلد</value></data>
<data name="Settings_SourcePacks_None" xml:space="preserve"><value>لا توجد ملفات مصادر بعد.</value></data>
<data name="Settings_SourcePacks_Count" xml:space="preserve"><value>المصادر: {0}</value></data>
</root>
6 changes: 6 additions & 0 deletions src/LuaToolsGui/Resources/Strings.bg.resx
Original file line number Diff line number Diff line change
Expand Up @@ -619,4 +619,10 @@
<data name="Fixes_Revert_Conflict_Body" xml:space="preserve"><value>{0} е променен, откакто беше приложена тази поправка, така че възстановяването ще презапише тези промени. Ако сте приложили друга поправка отгоре, първо върнете нея. Засегнати са {1} файла.</value></data>
<data name="Fixes_Revert_Partial" xml:space="preserve"><value>Корекцията е върната частично</value></data>
<data name="Fixes_Revert_Partial_Body" xml:space="preserve"><value>{0} файл(а) не можаха да бъдат възстановени. Затворете играта и опитайте отново.</value></data>
<data name="Sources_Err_Fetch" xml:space="preserve"><value>Този източник няма тази игра или е недостъпен.</value></data>
<data name="Settings_Section_Sources" xml:space="preserve"><value>Източници на манифести</value></data>
<data name="Settings_SourcePacks_Hint" xml:space="preserve"><value>Допълнителни източници, описани във файлове .json. Само данни: файлът казва откъде да се вземат манифести и нищо в него не се изпълнява.</value></data>
<data name="Settings_SourcePacks_Open" xml:space="preserve"><value>Отваряне на папката</value></data>
<data name="Settings_SourcePacks_None" xml:space="preserve"><value>Все още няма файлове с източници.</value></data>
<data name="Settings_SourcePacks_Count" xml:space="preserve"><value>източници: {0}</value></data>
</root>
6 changes: 6 additions & 0 deletions src/LuaToolsGui/Resources/Strings.cs.resx
Original file line number Diff line number Diff line change
Expand Up @@ -619,4 +619,10 @@ Zrušit - pokračovat ve stahování</value></data>
<data name="Fixes_Revert_Conflict_Body" xml:space="preserve"><value>Soubor {0} se od použití této opravy změnil, takže obnovení by tyto změny přepsalo. Pokud jste navrch použili jinou opravu, vraťte nejprve ji. Dotčeno {1} souborů.</value></data>
<data name="Fixes_Revert_Partial" xml:space="preserve"><value>Oprava vrácena zpět částečně</value></data>
<data name="Fixes_Revert_Partial_Body" xml:space="preserve"><value>{0} soubor(ů) se nepodařilo obnovit. Zavřete hru a zkuste to znovu.</value></data>
<data name="Sources_Err_Fetch" xml:space="preserve"><value>Tento zdroj tuto hru nemá, nebo je nedostupný.</value></data>
<data name="Settings_Section_Sources" xml:space="preserve"><value>Zdroje manifestů</value></data>
<data name="Settings_SourcePacks_Hint" xml:space="preserve"><value>Další zdroje deklarované v souborech .json. Pouze data: soubor říká, odkud manifesty stáhnout, a nic z něj se nespouští.</value></data>
<data name="Settings_SourcePacks_Open" xml:space="preserve"><value>Otevřít složku</value></data>
<data name="Settings_SourcePacks_None" xml:space="preserve"><value>Zatím žádné soubory zdrojů.</value></data>
<data name="Settings_SourcePacks_Count" xml:space="preserve"><value>zdroje: {0}</value></data>
</root>
6 changes: 6 additions & 0 deletions src/LuaToolsGui/Resources/Strings.da.resx
Original file line number Diff line number Diff line change
Expand Up @@ -619,4 +619,10 @@ Annuller - fortsæt download</value></data>
<data name="Fixes_Revert_Conflict_Body" xml:space="preserve"><value>{0} er ændret, siden denne rettelse blev anvendt, så en gendannelse ville overskrive de ændringer. Hvis du har anvendt en anden rettelse ovenpå, så fortryd den først. {1} fil(er) berørt.</value></data>
<data name="Fixes_Revert_Partial" xml:space="preserve"><value>Rettelse delvist fortrudt</value></data>
<data name="Fixes_Revert_Partial_Body" xml:space="preserve"><value>{0} fil(er) kunne ikke gendannes. Luk spillet og prøv igen.</value></data>
<data name="Sources_Err_Fetch" xml:space="preserve"><value>Denne kilde har ikke dette spil, eller kunne ikke nås.</value></data>
<data name="Settings_Section_Sources" xml:space="preserve"><value>Manifestkilder</value></data>
<data name="Settings_SourcePacks_Hint" xml:space="preserve"><value>Ekstra kilder angivet i .json-filer. Kun data: en fil siger, hvor manifester hentes fra, og intet i den køres.</value></data>
<data name="Settings_SourcePacks_Open" xml:space="preserve"><value>Åbn mappen</value></data>
<data name="Settings_SourcePacks_None" xml:space="preserve"><value>Ingen kildefiler endnu.</value></data>
<data name="Settings_SourcePacks_Count" xml:space="preserve"><value>kilder: {0}</value></data>
</root>
6 changes: 6 additions & 0 deletions src/LuaToolsGui/Resources/Strings.de.resx
Original file line number Diff line number Diff line change
Expand Up @@ -619,4 +619,10 @@ Abbrechen - weiter herunterladen</value></data>
<data name="Fixes_Revert_Conflict_Body" xml:space="preserve"><value>{0} wurde seit dem Anwenden dieses Fixes geändert; eine Wiederherstellung würde diese Änderungen überschreiben. Falls du einen weiteren Fix darüber angewendet hast, setze zuerst diesen zurück. {1} Datei(en) betroffen.</value></data>
<data name="Fixes_Revert_Partial" xml:space="preserve"><value>Fix teilweise rückgängig gemacht</value></data>
<data name="Fixes_Revert_Partial_Body" xml:space="preserve"><value>{0} Datei(en) konnten nicht wiederhergestellt werden. Schließe das Spiel und versuche es erneut.</value></data>
<data name="Sources_Err_Fetch" xml:space="preserve"><value>Diese Quelle hat dieses Spiel nicht oder war nicht erreichbar.</value></data>
<data name="Settings_Section_Sources" xml:space="preserve"><value>Manifest-Quellen</value></data>
<data name="Settings_SourcePacks_Hint" xml:space="preserve"><value>Zusätzliche Quellen, in .json-Dateien deklariert. Nur Daten: eine Datei sagt, woher Manifeste geholt werden, ausgeführt wird daraus nie etwas.</value></data>
<data name="Settings_SourcePacks_Open" xml:space="preserve"><value>Ordner öffnen</value></data>
<data name="Settings_SourcePacks_None" xml:space="preserve"><value>Noch keine Quellendateien.</value></data>
<data name="Settings_SourcePacks_Count" xml:space="preserve"><value>Quellen: {0}</value></data>
</root>
6 changes: 6 additions & 0 deletions src/LuaToolsGui/Resources/Strings.el.resx
Original file line number Diff line number Diff line change
Expand Up @@ -619,4 +619,10 @@
<data name="Fixes_Revert_Conflict_Body" xml:space="preserve"><value>Το {0} έχει αλλάξει από τότε που εφαρμόστηκε αυτή η διόρθωση, οπότε η επαναφορά θα αντικαταστήσει αυτές τις αλλαγές. Αν εφαρμόσατε άλλη διόρθωση από πάνω, επαναφέρετε πρώτα εκείνη. Επηρεάζονται {1} αρχεία.</value></data>
<data name="Fixes_Revert_Partial" xml:space="preserve"><value>Η διόρθωση αναιρέθηκε μερικώς</value></data>
<data name="Fixes_Revert_Partial_Body" xml:space="preserve"><value>Δεν ήταν δυνατή η επαναφορά {0} αρχείων. Κλείστε το παιχνίδι και δοκιμάστε ξανά.</value></data>
<data name="Sources_Err_Fetch" xml:space="preserve"><value>Αυτή η πηγή δεν έχει αυτό το παιχνίδι, ή δεν ήταν προσβάσιμη.</value></data>
<data name="Settings_Section_Sources" xml:space="preserve"><value>Πηγές manifest</value></data>
<data name="Settings_SourcePacks_Hint" xml:space="preserve"><value>Επιπλέον πηγές δηλωμένες σε αρχεία .json. Μόνο δεδομένα: το αρχείο λέει από πού λαμβάνονται τα manifest, και τίποτα μέσα του δεν εκτελείται.</value></data>
<data name="Settings_SourcePacks_Open" xml:space="preserve"><value>Άνοιγμα φακέλου</value></data>
<data name="Settings_SourcePacks_None" xml:space="preserve"><value>Δεν υπάρχουν ακόμη αρχεία πηγών.</value></data>
<data name="Settings_SourcePacks_Count" xml:space="preserve"><value>πηγές: {0}</value></data>
</root>
6 changes: 6 additions & 0 deletions src/LuaToolsGui/Resources/Strings.es-419.resx
Original file line number Diff line number Diff line change
Expand Up @@ -619,4 +619,10 @@ Cancelar: seguir descargando</value></data>
<data name="Fixes_Revert_Conflict_Body" xml:space="preserve"><value>{0} cambió desde que se aplicó este fix, así que restaurarlo sobrescribiría esos cambios. Si aplicaste otro fix encima, revierte ese primero. {1} archivo(s) afectado(s).</value></data>
<data name="Fixes_Revert_Partial" xml:space="preserve"><value>Parche revertido parcialmente</value></data>
<data name="Fixes_Revert_Partial_Body" xml:space="preserve"><value>No se pudieron restaurar {0} archivo(s). Cerrá el juego y probá de nuevo.</value></data>
<data name="Sources_Err_Fetch" xml:space="preserve"><value>Esta fuente no tiene este juego, o no se pudo contactar.</value></data>
<data name="Settings_Section_Sources" xml:space="preserve"><value>Fuentes de manifiestos</value></data>
<data name="Settings_SourcePacks_Hint" xml:space="preserve"><value>Fuentes adicionales declaradas en archivos .json. Solo datos: un archivo indica de dónde obtener manifiestos, y nada en él se ejecuta.</value></data>
<data name="Settings_SourcePacks_Open" xml:space="preserve"><value>Abrir la carpeta</value></data>
<data name="Settings_SourcePacks_None" xml:space="preserve"><value>Aún no hay archivos de fuentes.</value></data>
<data name="Settings_SourcePacks_Count" xml:space="preserve"><value>fuentes: {0}</value></data>
</root>
6 changes: 6 additions & 0 deletions src/LuaToolsGui/Resources/Strings.es.resx
Original file line number Diff line number Diff line change
Expand Up @@ -619,4 +619,10 @@ Cancelar: seguir descargando</value></data>
<data name="Depot_Err_NoKeyFor" xml:space="preserve"><value>No hay clave de descifrado en el Lua para el depot {0}.</value></data>
<data name="Builds_Select_SharedHint" xml:space="preserve"><value>Runtime compartido: normalmente ya está instalado. Marca para descargarlo igualmente.</value></data>
<data name="Downloads_ClearHistory_Confirm" xml:space="preserve"><value>¿Quitar las {0} entradas del historial de descargas? Los archivos descargados no se ven afectados.</value></data>
<data name="Sources_Err_Fetch" xml:space="preserve"><value>Esta fuente no tiene este juego, o no se pudo contactar.</value></data>
<data name="Settings_Section_Sources" xml:space="preserve"><value>Fuentes de manifiestos</value></data>
<data name="Settings_SourcePacks_Hint" xml:space="preserve"><value>Fuentes adicionales declaradas en archivos .json. Solo datos: un archivo indica de dónde obtener manifiestos, y nada en él se ejecuta.</value></data>
<data name="Settings_SourcePacks_Open" xml:space="preserve"><value>Abrir la carpeta</value></data>
<data name="Settings_SourcePacks_None" xml:space="preserve"><value>Aún no hay archivos de fuentes.</value></data>
<data name="Settings_SourcePacks_Count" xml:space="preserve"><value>fuentes: {0}</value></data>
</root>
6 changes: 6 additions & 0 deletions src/LuaToolsGui/Resources/Strings.fi.resx
Original file line number Diff line number Diff line change
Expand Up @@ -619,4 +619,10 @@ Peruuta - jatka lataamista</value></data>
<data name="Fixes_Revert_Conflict_Body" xml:space="preserve"><value>{0} on muuttunut tämän korjauksen käyttöönoton jälkeen, joten palauttaminen korvaisi nuo muutokset. Jos otit päälle toisen korjauksen, peru ensin se. {1} tiedosto(a) koskee.</value></data>
<data name="Fixes_Revert_Partial" xml:space="preserve"><value>Korjaus peruttu osittain</value></data>
<data name="Fixes_Revert_Partial_Body" xml:space="preserve"><value>{0} tiedostoa ei voitu palauttaa. Sulje peli ja yritä uudelleen.</value></data>
<data name="Sources_Err_Fetch" xml:space="preserve"><value>Tässä lähteessä ei ole tätä peliä, tai siihen ei saatu yhteyttä.</value></data>
<data name="Settings_Section_Sources" xml:space="preserve"><value>Manifestilähteet</value></data>
<data name="Settings_SourcePacks_Hint" xml:space="preserve"><value>Lisälähteitä .json-tiedostoissa. Pelkkää dataa: tiedosto kertoo mistä manifestit haetaan, eikä siitä suoriteta mitään.</value></data>
<data name="Settings_SourcePacks_Open" xml:space="preserve"><value>Avaa kansio</value></data>
<data name="Settings_SourcePacks_None" xml:space="preserve"><value>Ei vielä lähdetiedostoja.</value></data>
<data name="Settings_SourcePacks_Count" xml:space="preserve"><value>lähteet: {0}</value></data>
</root>
6 changes: 6 additions & 0 deletions src/LuaToolsGui/Resources/Strings.fr.resx
Original file line number Diff line number Diff line change
Expand Up @@ -619,4 +619,10 @@ Annuler - continuer le téléchargement</value></data>
<data name="Fixes_Revert_Conflict_Body" xml:space="preserve"><value>{0} a changé depuis l'application de ce correctif ; le restaurer écraserait ces modifications. Si vous avez appliqué un autre correctif par-dessus, annulez-le d'abord. {1} fichier(s) concerné(s).</value></data>
<data name="Fixes_Revert_Partial" xml:space="preserve"><value>Correctif partiellement annulé</value></data>
<data name="Fixes_Revert_Partial_Body" xml:space="preserve"><value>Impossible de restaurer {0} fichier(s). Fermez le jeu et réessayez.</value></data>
<data name="Sources_Err_Fetch" xml:space="preserve"><value>Cette source n'a pas ce jeu, ou n'a pas pu être jointe.</value></data>
<data name="Settings_Section_Sources" xml:space="preserve"><value>Sources de manifests</value></data>
<data name="Settings_SourcePacks_Hint" xml:space="preserve"><value>Sources supplémentaires déclarées dans des fichiers .json. Uniquement des données : un fichier indique où récupérer des manifests, rien n'y est jamais exécuté.</value></data>
<data name="Settings_SourcePacks_Open" xml:space="preserve"><value>Ouvrir le dossier</value></data>
<data name="Settings_SourcePacks_None" xml:space="preserve"><value>Aucun fichier de source pour l'instant.</value></data>
<data name="Settings_SourcePacks_Count" xml:space="preserve"><value>sources : {0}</value></data>
</root>
6 changes: 6 additions & 0 deletions src/LuaToolsGui/Resources/Strings.hu.resx
Original file line number Diff line number Diff line change
Expand Up @@ -619,4 +619,10 @@ Mégse - letöltés folytatása</value></data>
<data name="Fixes_Revert_Conflict_Body" xml:space="preserve"><value>A(z) {0} megváltozott a javítás alkalmazása óta, ezért a visszaállítás felülírná ezeket a módosításokat. Ha másik javítást is alkalmaztál rá, előbb azt vond vissza. {1} fájl érintett.</value></data>
<data name="Fixes_Revert_Partial" xml:space="preserve"><value>A javítás részben lett visszavonva</value></data>
<data name="Fixes_Revert_Partial_Body" xml:space="preserve"><value>{0} fájlt nem sikerült visszaállítani. Zárd be a játékot, és próbáld újra.</value></data>
<data name="Sources_Err_Fetch" xml:space="preserve"><value>Ez a forrás nem tartalmazza ezt a játékot, vagy nem érhető el.</value></data>
<data name="Settings_Section_Sources" xml:space="preserve"><value>Manifest-források</value></data>
<data name="Settings_SourcePacks_Hint" xml:space="preserve"><value>További források .json fájlokban megadva. Csak adat: a fájl megmondja, honnan töltsük le a manifesteket, és semmi nem fut le belőle.</value></data>
<data name="Settings_SourcePacks_Open" xml:space="preserve"><value>Mappa megnyitása</value></data>
<data name="Settings_SourcePacks_None" xml:space="preserve"><value>Még nincs forrásfájl.</value></data>
<data name="Settings_SourcePacks_Count" xml:space="preserve"><value>források: {0}</value></data>
</root>
Loading