No longer endorse relative paths

This commit is contained in:
mtkennerly 2024-04-01 22:43:14 -04:00
parent c0b0761cbb
commit 89f80086a2
No known key found for this signature in database
GPG key ID: E764BE00BE6E6408
4 changed files with 12 additions and 43 deletions

View file

@ -86,8 +86,6 @@ Tools must implement the following in addition to respecting the schema:
* When a path identifies a folder, * When a path identifies a folder,
the backup includes all of its files and subdirectories recursively. the backup includes all of its files and subdirectories recursively.
* When backing up registry keys, the backup includes all sub-keys recursively. * When backing up registry keys, the backup includes all sub-keys recursively.
* Relative paths must be resolved relative to the location of the manifest file.
This is mainly relevant for secondary manifests.
* If a tool supports secondary manifests, they must be automatically detected * If a tool supports secondary manifests, they must be automatically detected
when they are named `.ludusavi.yaml` and located directly in `<base>`. when they are named `.ludusavi.yaml` and located directly in `<base>`.
For example, a Steam game's secondary manifest would be `<root>/steamapps/common/<game>/.ludusavi.yaml`. For example, a Steam game's secondary manifest would be `<root>/steamapps/common/<game>/.ludusavi.yaml`.
@ -106,15 +104,17 @@ Tools may also:
and it may in fact occur on other operating systems as well. and it may in fact occur on other operating systems as well.
* Reject/ignore recursive aliases or set a recursion limit. * Reject/ignore recursive aliases or set a recursion limit.
The primary manifest will never contain a recursive alias. The primary manifest will never contain a recursive alias.
* Reject/ignore relative paths in the `files` mapping
(i.e., paths starting with `./` or `../`).
The primary manifest will never contain relative paths.
For authors of secondary manifests bundled with games: For authors of secondary manifests bundled with games:
* If present, the secondary manifest must be located directly in the game's install folder (not a subfolder), * If present, the secondary manifest must be located directly in the game's install folder (not a subfolder),
and the file name must be `.ludusavi.yaml`. and the file name must be `.ludusavi.yaml`.
* For clarity and consistency with the primary manifest, * You must use `<base>` instead of relative paths.
you are encouraged to use `<base>` instead of relative paths. For example, use `<base>/save.dat` instead of `./save.dat`,
For example, prefer `<base>/save.dat` instead of `./save.dat`, and use `<base>/../parent` instead of `../parent`.
and prefer `<base>/../parent` instead of `../parent`.
The latest version of the primary manifest can be downloaded from The latest version of the primary manifest can be downloaded from
https://raw.githubusercontent.com/mtkennerly/ludusavi-manifest/master/data/manifest.yaml . https://raw.githubusercontent.com/mtkennerly/ludusavi-manifest/master/data/manifest.yaml .

View file

@ -94817,21 +94817,6 @@ Celestial Breach:
steam: steam:
id: 547970 id: 547970
Celestial Command: Celestial Command:
files:
"./Celestial Command/Saves":
tags:
- save
when:
- os: windows
- os: mac
- os: linux
"./Celestial Command/Saves/GameSettings.settings":
tags:
- config
when:
- os: windows
- os: mac
- os: linux
installDir: installDir:
Celestial Command: {} Celestial Command: {}
launch: launch:
@ -358724,11 +358709,6 @@ Mr. Shadow:
id: 543270 id: 543270
Mr. Shifty: Mr. Shifty:
files: files:
"./Library/Preferences/unity.Team Shifty.Mr Shifty.plist":
tags:
- save
when:
- os: mac
"<home>/.config/unity3d/Team Shifty/Mr Shifty": "<home>/.config/unity3d/Team Shifty/Mr Shifty":
tags: tags:
- save - save
@ -387372,17 +387352,6 @@ Ongaku:
id: 360990 id: 360990
Oni: Oni:
files: files:
"./persist.dat":
tags:
- save
when:
- os: windows
- os: mac
"./persist.dat, ./key_config.txt, ~/Library/Preferences/com.godgames.oni.plist":
tags:
- config
when:
- os: mac
"<base>/AE/key_config.txt": "<base>/AE/key_config.txt":
tags: tags:
- config - config
@ -515060,11 +515029,6 @@ Startopia:
id: 243040 id: 243040
Startup Company: Startup Company:
files: files:
"./StartupCompany":
tags:
- save
when:
- os: linux
"<home>/Library/Application Support/Startup Company/SaveData": "<home>/Library/Application Support/Startup Company/SaveData":
tags: tags:
- save - save

View file

@ -5380,6 +5380,7 @@
* [Ceggtcher VR](https://www.pcgamingwiki.com/wiki/?curid=41470) * [Ceggtcher VR](https://www.pcgamingwiki.com/wiki/?curid=41470)
* [Celestial](https://www.pcgamingwiki.com/wiki/?curid=144911) * [Celestial](https://www.pcgamingwiki.com/wiki/?curid=144911)
* [Celestial Breach](https://www.pcgamingwiki.com/wiki/?curid=52422) * [Celestial Breach](https://www.pcgamingwiki.com/wiki/?curid=52422)
* [Celestial Command](https://www.pcgamingwiki.com/wiki/?curid=49279)
* [Celestial Creator](https://www.pcgamingwiki.com/wiki/?curid=64554) * [Celestial Creator](https://www.pcgamingwiki.com/wiki/?curid=64554)
* [Celestial Crossing](https://www.pcgamingwiki.com/wiki/?curid=55738) * [Celestial Crossing](https://www.pcgamingwiki.com/wiki/?curid=55738)
* [Celestial Hacker Girl Jessica](https://www.pcgamingwiki.com/wiki/?curid=98514) * [Celestial Hacker Girl Jessica](https://www.pcgamingwiki.com/wiki/?curid=98514)

View file

@ -706,7 +706,11 @@ impl WikiPath {
} }
pub fn usable(&self) -> bool { pub fn usable(&self) -> bool {
!self.composite.is_empty() && !self.irregular() && !self.too_broad() !self.composite.is_empty()
&& !self.irregular()
&& !self.too_broad()
&& !self.composite.starts_with("./")
&& !self.composite.starts_with("../")
} }
} }