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,
the backup includes all of its files and subdirectories 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
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`.
@ -106,15 +104,17 @@ Tools may also:
and it may in fact occur on other operating systems as well.
* Reject/ignore recursive aliases or set a recursion limit.
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:
* 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`.
* For clarity and consistency with the primary manifest,
you are encouraged to use `<base>` instead of relative paths.
For example, prefer `<base>/save.dat` instead of `./save.dat`,
and prefer `<base>/../parent` instead of `../parent`.
* You must use `<base>` instead of relative paths.
For example, use `<base>/save.dat` instead of `./save.dat`,
and use `<base>/../parent` instead of `../parent`.
The latest version of the primary manifest can be downloaded from
https://raw.githubusercontent.com/mtkennerly/ludusavi-manifest/master/data/manifest.yaml .

View file

@ -94817,21 +94817,6 @@ Celestial Breach:
steam:
id: 547970
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:
Celestial Command: {}
launch:
@ -358724,11 +358709,6 @@ Mr. Shadow:
id: 543270
Mr. Shifty:
files:
"./Library/Preferences/unity.Team Shifty.Mr Shifty.plist":
tags:
- save
when:
- os: mac
"<home>/.config/unity3d/Team Shifty/Mr Shifty":
tags:
- save
@ -387372,17 +387352,6 @@ Ongaku:
id: 360990
Oni:
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":
tags:
- config
@ -515060,11 +515029,6 @@ Startopia:
id: 243040
Startup Company:
files:
"./StartupCompany":
tags:
- save
when:
- os: linux
"<home>/Library/Application Support/Startup Company/SaveData":
tags:
- save

View file

@ -5380,6 +5380,7 @@
* [Ceggtcher VR](https://www.pcgamingwiki.com/wiki/?curid=41470)
* [Celestial](https://www.pcgamingwiki.com/wiki/?curid=144911)
* [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 Crossing](https://www.pcgamingwiki.com/wiki/?curid=55738)
* [Celestial Hacker Girl Jessica](https://www.pcgamingwiki.com/wiki/?curid=98514)

View file

@ -706,7 +706,11 @@ impl WikiPath {
}
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("../")
}
}