yazi: Fix expected structure of flavors

This commit is contained in:
lordkekz 2024-06-06 12:05:28 +02:00 committed by Robert Helgesson
parent 16f86c94ce
commit 216d51eb22
No known key found for this signature in database
GPG key ID: 96E745BD17AA17ED
9 changed files with 75 additions and 13 deletions

View file

@ -164,7 +164,7 @@ in {
default = { };
description = ''
Pre-made themes.
Values should be a package or path containing an `init.lua` file.
Values should be a package or path containing the required files.
Will be linked to {file}`$XDG_CONFIG_HOME/yazi/flavors/<name>.yazi`.
See <https://yazi-rs.github.io/docs/flavors/overview/> for documentation.
@ -228,26 +228,37 @@ in {
]);
assertions = let
mkAsserts = opt:
mkAsserts = opt: requiredFiles:
mapAttrsToList (name: value:
let
isDir = pathIsDirectory "${value}";
msgNotDir = optionalString (!isDir)
"The path or package should be a directory, not a single file.";
hasInitLua = pathExists "${value}/init.lua"
&& !(pathIsDirectory "${value}/init.lua");
msgNoInitLua = optionalString (!hasInitLua)
"The path or package must contain a file `init.lua`.";
isFileMissing = file:
!(pathExists "${value}/${file}")
|| pathIsDirectory "${value}/${file}";
missingFiles = filter isFileMissing requiredFiles;
msgFilesMissing = optionalString (missingFiles != [ ])
"The ${singularOpt} is missing these files: ${
toString missingFiles
}";
singularOpt = removeSuffix "s" opt;
in {
assertion = isDir && hasInitLua;
assertion = isDir && missingFiles == [ ];
message = ''
Value at `programs.yazi.${opt}.${name}` is not a valid yazi ${singularOpt}.
${msgNotDir}
${msgNoInitLua}
${msgFilesMissing}
Evaluated value: `${value}`
'';
}) cfg.${opt};
in (mkAsserts "flavors") ++ (mkAsserts "plugins");
in (mkAsserts "flavors" [
"flavor.toml"
"tmtheme.xml"
"README.md"
"preview.png"
"LICENSE"
"LICENSE-tmtheme"
]) ++ (mkAsserts "plugins" [ "init.lua" ]);
};
}

View file

@ -0,0 +1,50 @@
<div align="center">
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
</div>
<h3 align="center">
Example Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
</h3>
## Cooking up a new flavor
> [!NOTE]
> Please remove this section from your README before publishing.
1. [x] Fork this repository and rename it to `your-flavor-name.yazi`.
2. [ ] Copy the **parts you need to customize** from the [default theme.toml](https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/theme.toml) as `./flavor.toml`, and change them to meet your preferences.
3. [ ] Find a `.tmTheme` file on GitHub that matches the color of your flavor, copy it and it's license file as `./tmtheme.xml`, and `LICENSE-tmtheme`.
4. [ ] Modify the content and preview image in the README to fit your flavor.
## 👀 Preview
<img src="preview.png" width="600" />
## 🎨 Installation
<!-- Please replace "username/example.yazi" with your repository name. -->
```bash
# Linux/macOS
git clone https://github.com/username/example.yazi.git ~/.config/yazi/flavors/example.yazi
# Windows
git clone https://github.com/username/example.yazi.git %AppData%\yazi\config\flavors\example.yazi
```
## ⚙️ Usage
Add the these lines to your `theme.toml` configuration file to use it:
<!-- Please replace "example" with your flavor name. -->
```toml
[flavor]
use = "example"
```
## 📜 License
The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed.
Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details.

View file

@ -0,0 +1,2 @@
# This is a flavor.

View file

@ -1 +0,0 @@
-- This is a flavor.

View file

@ -83,7 +83,7 @@
## Produces warning
#"flavor-with-suffix.yazi" = ./flavor;
## Fails assertion
#single-file-flavor = ./flavor/init.lua;
#single-file-flavor = ./flavor/flavor.toml;
#empty-dir-flavor = ./empty;
};
};
@ -101,7 +101,7 @@
${./init.lua}
assertFileContent home-files/.config/yazi/plugins/testplugin.yazi/init.lua \
${./plugin/init.lua}
assertFileContent home-files/.config/yazi/flavors/testflavor.yazi/init.lua \
${./flavor/init.lua}
assertFileContent home-files/.config/yazi/flavors/testflavor.yazi/flavor.toml \
${./flavor/flavor.toml}
'';
}