Code Monkey home page Code Monkey logo

schemas's Introduction

Schemas

JSON Schemas for Yazi configuration files.

Development

Setup

git clone --recurse-submodules https://github.com/yazi-rs/schemas
pnpm install

Structure

  • schemas/*.schema.json: JSON Schemas for each configuration file.
  • scripts/*.js: Scripts for managing and checking schemas. Tests against the preset configuration files from the submodule.

License

MIT

schemas's People

Contributors

uncenter avatar dependabot[bot] avatar sxyazi avatar valdezfomar avatar

Stargazers

Ame アメ avatar  avatar

Watchers

 avatar

schemas's Issues

Autogenerated documentation

Just going to leave this issue here for discussion. Pretty disappointing findings so far so we might have to write one for ourselves completely from scratch... I'll make a basic PoC in TypeScript this week.

errors after setting .toml /configs

i am using WSL2 on windows 11 Dextro = ubuntu-24.04
i installed .cargo and then yazi

Every time i try to set config files i get following errors:

Backtrace omitted. Run with RUST_BACKTRACE=1 to display it.
Run with RUST_BACKTRACE=full to include source snippets.

The application panicked (crashed).
called Result::unwrap() on an Err value: Error { inner: Error { inner: TomlError { message: "invalid type: string "", expected a sequence", raw: Some(""$schema" = "https://yazi-rs.github.io/schemas/keymap.json\"\n\n[[manager.keymap]]\non = ""\nrun = "escape"\ndesc = "Exit visual mode, clear selected, or cancel search"\n\n[[manager.keymap]]\non = "<C-[>"\nrun = "escape"\ndesc = "Exit visual mode, clear selected, or cancel search"\n\n[[manager.keymap]]\non = "q"\nrun = "quit"\ndesc = "Exit the process"\n\n[[manager.keymap]]\non = "Q"\nrun = "quit --no-cwd-file"\ndesc = "Exit the process without writing cwd-file"\n\n[[manager.keymap]]\non = ""\nrun = "close"\ndesc = "Close the current tab, or quit if it is last tab"\n\n[[manager.keymap]]\non = ""\nrun = "suspend"\ndesc = "Suspend the process"\n\n[[manager.keymap]]\non = "k"\nrun = "arrow -1"\ndesc = "Move cursor up"\n\n[[manager.keymap]]\non = "j"\nrun = "arrow 1"\ndesc = "Move cursor down"\n\n[[manager.keymap]]\non = ""\nrun = "arrow -1"\ndesc = "Move cursor up"\n\n[[manager.keymap]]\non = ""\nrun = "arrow 1"\ndesc = "Move cursor down"\n\n[[manager.keymap]]\non = ""\nrun = "arrow -50%"\ndesc = "Move cursor up half page"\n\n[[manager.keymap]]\non = ""\nrun = "arrow 50%"\ndesc = "Move cursor down half page"\n\n[[manager.keymap]]\non = ""\nrun = "arrow -100%"\ndesc = "Move cursor up one page"\n\n[[manager.keymap]]\non = ""\nrun = "arrow 100%"\ndesc = "Move cursor down one page"\n\n[[manager.keymap]]\non = ""\nrun = "arrow -50%"\ndesc = "Move cursor up half page"\n\n[[manager.keymap]]\non = ""\nrun = "arrow 50%"\ndesc = "Move cursor down half page"\n\n[[manager.keymap]]\non = ""\nrun = "arrow -100%"\ndesc = "Move cursor up one page"\n\n[[manager.keymap]]\non = ""\nrun = "arrow 100%"\ndesc = "Move cursor down one page"\n\n[[manager.keymap]]\non = ["g", "g"]\nrun = "arrow -99999999"\ndesc = "Move cursor to the top"\n\n[[manager.keymap]]\non = "G"\nrun = "arrow 99999999"\ndesc = "Move cursor to the bottom"\n\n[[manager.keymap]]\non = "h"\nrun = "leave"\ndesc = "Go back to the parent directory"\n\n[[manager.keymap]]\non = "l"\nrun = "enter"\ndesc = "Enter the child directory"\n\n[[manager.keymap]]\non = ""\nrun = "leave"\ndesc = "Go back to the parent directory"\n\n[[manager.keymap]]\non = ""\nrun = "enter"\ndesc = "Enter the child directory"\n\n[[manager.keymap]]\non = "H"\nrun = "back"\ndesc = "Go back to the previous directory"\n\n[[manager.keymap]]\non = "L"\nrun = "forward"\ndesc = "Go forward to the next directory"\n\n[[manager.keymap]]\non = "K"\nrun = "seek -5"\ndesc = "Seek up 5 units in the preview"\n\n[[manager.keymap]]\non = "J"\nrun = "seek 5"\ndesc = "Seek down 5 units in the preview"\n\n[[manager.keymap]]\non = ""\nrun = ["select --state=none", "arrow 1"]\ndesc = "Toggle the current selection state"\n\n[[manager.keymap]]\non = "v"\nrun = "visual_mode"\ndesc = "Enter visual mode (selection mode)"\n\n[[manager.keymap]]\non = "V"\nrun = "visual_mode --unset"\ndesc = "Enter visual mode (unset mode)"\n\n[[manager.keymap]]\non = ""\nrun = "select_all --state=true"\ndesc = "Select all files"\n\n[[manager.keymap]]\non = ""\nrun = "select_all --state=none"\ndesc = "Inverse selection of all files"\n\n[[manager.keymap]]\non = "o"\nrun = "open"\ndesc = "Open selected files"\n\n[[manager.keymap]]\non = "O"\nrun = "open --interactive"\ndesc = "Open selected files interactively"\n\n[[manager.keymap]]\non = ""\nrun = "open"\ndesc = "Open selected files"\n\n[[manager.keymap]]\non = ""\nrun = "open --interactive"\ndesc = "Open selected files interactively"\n\n[[manager.keymap]]\non = "y"\nrun = "yank"\ndesc = "Yank selected files (copy)"\n\n[[manager.keymap]]\non = "x"\nrun = "yank --cut"\ndesc = "Yank selected files (cut)"\n\n[[manager.keymap]]\non = "p"\nrun = "paste"\ndesc = "Paste yanked files"\n\n[[manager.keymap]]\non = "P"\nrun = "paste --force"\ndesc = "Paste yanked files (overwrite if the destination exists)"\n\n[[manager.keymap]]\non = "-"\nrun = "link"\ndesc = "Symlink the absolute path of yanked files"\n\n[[manager.keymap]]\non = "_"\nrun = "link --relative"\ndesc = "Symlink the relative path of yanked files"\n\n[[manager.keymap]]\non = "Y"\nrun = "unyank"\ndesc = "Cancel the yank status"\n\n[[manager.keymap]]\non = "X"\nrun = "unyank"\ndesc = "Cancel the yank status"\n\n[[manager.keymap]]\non = "d"\nrun = "remove"\ndesc = "Trash selected files"\n\n[[manager.keymap]]\non = "D"\nrun = "remove --permanently"\ndesc = "Permanently delete selected files"\n\n[[manager.keymap]]\non = "a"\nrun = "create"\ndesc = "Create a file (ends with / for directories)"\n\n[[manager.keymap]]\non = "r"\nrun = "rename --cursor=before_ext"\ndesc = "Rename selected file(s)"\n\n[[manager.keymap]]\non = ";"\nrun = "shell --interactive"\ndesc = "Run a shell command"\n\n[[manager.keymap]]\non = ":"\nrun = "shell --block --interactive"\ndesc = "Run a shell command (block until finishes)"\n\n[[manager.keymap]]\non = "."\nrun = "hidden toggle"\ndesc = "Toggle the visibility of hidden files"\n\n[[manager.keymap]]\non = "s"\nrun = "search fd"\ndesc = "Search files by name using fd"\n\n[[manager.keymap]]\non = "S"\nrun = "search rg"\ndesc = "Search files by content using ripgrep"\n\n[[manager.keymap]]\non = ""\nrun = "escape --search"\ndesc = "Cancel the ongoing search"\n\n[[manager.keymap]]\non = "z"\nrun = "plugin zoxide"\ndesc = "Jump to a directory using zoxide"\n\n[[manager.keymap]]\non = "Z"\nrun = "plugin fzf"\ndesc = "Jump to a directory or reveal a file using fzf"\n\n[[manager.keymap]]\non = ["m", "s"]\nrun = "linemode size"\ndesc = "Set linemode to size"\n\n[[manager.keymap]]\non = ["m", "p"]\nrun = "linemode permissions"\ndesc = "Set linemode to permissions"\n\n[[manager.keymap]]\non = ["m", "c"]\nrun = "linemode ctime"\ndesc = "Set linemode to ctime"\n\n[[manager.keymap]]\non = ["m", "m"]\nrun = "linemode mtime"\ndesc = "Set linemode to mtime"\n\n[[manager.keymap]]\non = ["m", "o"]\nrun = "linemode owner"\ndesc = "Set linemode to owner"\n\n[[manager.keymap]]\non = ["m", "n"]\nrun = "linemode none"\ndesc = "Set linemode to none"\n\n[[manager.keymap]]\non = ["c", "c"]\nrun = "copy path"\ndesc = "Copy the file path"\n\n[[manager.keymap]]\non = ["c", "d"]\nrun = "copy dirname"\ndesc = "Copy the directory path"\n\n[[manager.keymap]]\non = ["c", "f"]\nrun = "copy filename"\ndesc = "Copy the filename"\n\n[[manager.keymap]]\non = ["c", "n"]\nrun = "copy name_without_ext"\ndesc = "Copy the filename without extension"\n\n[[manager.keymap]]\non = "f"\nrun = "filter --smart"\ndesc = "Filter files"\n\n[[manager.keymap]]\non = "/"\nrun = "find --smart"\ndesc = "Find next file"\n\n[[manager.keymap]]\non = "?"\nrun = "find --previous --smart"\ndesc = "Find previous file"\n\n[[manager.keymap]]\non = "n"\nrun = "find_arrow"\ndesc = "Go to the next found"\n\n[[manager.keymap]]\non = "N"\nrun = "find_arrow --previous"\ndesc = "Go to the previous found"\n\n[[manager.keymap]]\non = [",", "m"]\nrun = ["sort modified --reverse=no", "linemode mtime"]\ndesc = "Sort by modified time"\n\n[[manager.keymap]]\non = [",", "M"]\nrun = ["sort modified --reverse", "linemode mtime"]\ndesc = "Sort by modified time (reverse)"\n\n[[manager.keymap]]\non = [",", "c"]\nrun = ["sort created --reverse=no", "linemode ctime"]\ndesc = "Sort by created time"\n\n[[manager.keymap]]\non = [",", "C"]\nrun = ["sort created --reverse", "linemode ctime"]\ndesc = "Sort by created time (reverse)"\n\n[[manager.keymap]]\non = [",", "e"]\nrun = "sort extension --reverse=no"\ndesc = "Sort by extension"\n\n[[manager.keymap]]\non = [",", "E"]\nrun = "sort extension --reverse"\ndesc = "Sort by extension (reverse)"\n\n[[manager.keymap]]\non = [",", "a"]\nrun = "sort alphabetical --reverse=no"\ndesc = "Sort alphabetically"\n\n[[manager.keymap]]\non = [",", "A"]\nrun = "sort alphabetical --reverse"\ndesc = "Sort alphabetically (reverse)"\n\n[[manager.keymap]]\non = [",", "n"]\nrun = "sort natural --reverse=no"\ndesc = "Sort naturally"\n\n[[manager.keymap]]\non = [",", "N"]\nrun = "sort natural --reverse"\ndesc = "Sort naturally (reverse)"\n\n[[manager.keymap]]\non = [",", "s"]\nrun = ["sort size --reverse=no", "linemode size"]\ndesc = "Sort by size"\n\n[[manager.keymap]]\non = [",", "S"]\nrun = ["sort size --reverse", "linemode size"]\ndesc = "Sort by size (reverse)"\n\n[[manager.keymap]]\non = [",", "r"]\nrun = "sort random --reverse=no"\ndesc = "Sort randomly"\n\n[[manager.keymap]]\non = ["g", "h"]\nrun = "cd "\ndesc = "Go to the home directory"\n\n[[manager.keymap]]\non = ["g", "c"]\nrun = "cd /.config"\ndesc = "Go to the config directory"\n\n[[manager.keymap]]\non = ["g", "d"]\nrun = "cd /Downloads"\ndesc = "Go to the downloads directory"\n\n[[manager.keymap]]\non = ["g", ""]\nrun = "cd --interactive"\ndesc = "Go to a directory interactively"\n\n[[manager.keymap]]\non = "t"\nrun = "tab_create --current"\ndesc = "Create a new tab with CWD"\n\n[[manager.keymap]]\non = "1"\nrun = "tab_switch 0"\ndesc = "Switch to the first tab"\n\n[[manager.keymap]]\non = "2"\nrun = "tab_switch 1"\ndesc = "Switch to the second tab"\n\n[[manager.keymap]]\non = "3"\nrun = "tab_switch 2"\ndesc = "Switch to the third tab"\n\n[[manager.keymap]]\non = "4"\nrun = "tab_switch 3"\ndesc = "Switch to the fourth tab"\n\n[[manager.keymap]]\non = "5"\nrun = "tab_switch 4"\ndesc = "Switch to the fifth tab"\n\n[[manager.keymap]]\non = "6"\nrun = "tab_switch 5"\ndesc = "Switch to the sixth tab"\n\n[[manager.keymap]]\non = "7"\nrun = "tab_switch 6"\ndesc = "Switch to the seventh tab"\n\n[[manager.keymap]]\non = "8"\nrun = "tab_switch 7"\ndesc = "Switch to the eighth tab"\n\n[[manager.keymap]]\non = "9"\nrun = "tab_switch 8"\ndesc = "Switch to the ninth tab"\n\n[[manager.keymap]]\non = "["\nrun = "tab_switch -1 --relative"\ndesc = "Switch to the previous tab"\n\n[[manager.keymap]]\non = "]"\nrun = "tab_switch 1 --relative"\ndesc = "Switch to the next tab"\n\n[[manager.keymap]]\non = "{"\nrun = "tab_swap -1"\ndesc = "Swap current tab with previous tab"\n\n[[manager.keymap]]\non = "}"\nrun = "tab_swap 1"\ndesc = "Swap current tab with next tab"\n\n[[manager.keymap]]\non = "w"\nrun = "tasks_show"\ndesc = "Show task manager"\n\n[[manager.keymap]]\non = ""\nrun = "help"\ndesc = "Open help"\n\n[[manager.keymap]]\non = ""\nrun = "help"\ndesc = "Open help"\n\n[[tasks.keymap]]\non = ""\nrun = "close"\ndesc = "Close task manager"\n\n[[tasks.keymap]]\non = "<C-[>"\nrun = "close"\ndesc = "Close task manager"\n\n[[tasks.keymap]]\non = ""\nrun = "close"\ndesc = "Close task manager"\n\n[[tasks.keymap]]\non = "w"\nrun = "close"\ndesc = "Close task manager"\n\n[[tasks.keymap]]\non = "k"\nrun = "arrow -1"\ndesc = "Move cursor up"\n\n[[tasks.keymap]]\non = "j"\nrun = "arrow 1"\ndesc = "Move cursor down"\n\n[[tasks.keymap]]\non = ""\nrun = "arrow -1"\ndesc = "Move cursor up"\n\n[[tasks.keymap]]\non = ""\nrun = "arrow 1"\ndesc = "Move cursor down"\n\n[[tasks.keymap]]\non = ""\nrun = "inspect"\ndesc = "Inspect the task"\n\n[[tasks.keymap]]\non = "x"\nrun = "cancel"\ndesc = "Cancel the task"\n\n[[tasks.keymap]]\non = ""\nrun = "help"\ndesc = "Open help"\n\n[[tasks.keymap]]\non = ""\nrun = "help"\ndesc = "Open help"\n\n[[select.keymap]]\non = ""\nrun = "close"\ndesc = "Cancel selection"\n\n[[select.keymap]]\non = "<C-[>"\nrun = "close"\ndesc = "Cancel selection"\n\n[[select.keymap]]\non = ""\nrun = "close"\ndesc = "Cancel selection"\n\n[[select.keymap]]\non = ""\nrun = "close --submit"\ndesc = "Submit the selection"\n\n[[select.keymap]]\non = "k"\nrun = "arrow -1"\ndesc = "Move cursor up"\n\n[[select.keymap]]\non = "j"\nrun = "arrow 1"\ndesc = "Move cursor down"\n\n[[select.keymap]]\non = ""\nrun = "arrow -1"\ndesc = "Move cursor up"\n\n[[select.keymap]]\non = ""\nrun = "arrow 1"\ndesc = "Move cursor down"\n\n[[select.keymap]]\non = ""\nrun = "help"\ndesc = "Open help"\n\n[[select.keymap]]\non = ""\nrun = "help"\ndesc = "Open help"\n\n[[input.keymap]]\non = ""\nrun = "close"\ndesc = "Cancel input"\n\n[[input.keymap]]\non = ""\nrun = "close --submit"\ndesc = "Submit the input"\n\n[[input.keymap]]\non = ""\nrun = "escape"\ndesc = "Go back the normal mode, or cancel input"\n\n[[input.keymap]]\non = "<C-[>"\nrun = "escape"\ndesc = "Go back the normal mode, or cancel input"\n\n[[input.keymap]]\non = "i"\nrun = "insert"\ndesc = "Enter insert mode"\n\n[[input.keymap]]\non = "a"\nrun = "insert --append"\ndesc = "Enter append mode"\n\n[[input.keymap]]\non = "I"\nrun = ["move -999", "insert"]\ndesc = "Move to the BOL, and enter insert mode"\n\n[[input.keymap]]\non = "A"\nrun = ["move 999", "insert --append"]\ndesc = "Move to the EOL, and enter append mode"\n\n[[input.keymap]]\non = "v"\nrun = "visual"\ndesc = "Enter visual mode"\n\n[[input.keymap]]\non = "V"\nrun = ["move -999", "visual", "move 999"]\ndesc = "Enter visual mode and select all"\n\n[[input.keymap]]\non = "h"\nrun = "move -1"\ndesc = "Move back a character"\n\n[[input.keymap]]\non = "l"\nrun = "move 1"\ndesc = "Move forward a character"\n\n[[input.keymap]]\non = ""\nrun = "move -1"\ndesc = "Move back a character"\n\n[[input.keymap]]\non = ""\nrun = "move 1"\ndesc = "Move forward a character"\n\n[[input.keymap]]\non = ""\nrun = "move -1"\ndesc = "Move back a character"\n\n[[input.keymap]]\non = ""\nrun = "move 1"\ndesc = "Move forward a character"\n\n[[input.keymap]]\non = "b"\nrun = "backward"\ndesc = "Move back to the start of the current or previous word"\n\n[[input.keymap]]\non = "w"\nrun = "forward"\ndesc = "Move forward to the start of the next word"\n\n[[input.keymap]]\non = "e"\nrun = "forward --end-of-word"\ndesc = "Move forward to the end of the current or next word"\n\n[[input.keymap]]\non = ""\nrun = "backward"\ndesc = "Move back to the start of the current or previous word"\n\n[[input.keymap]]\non = ""\nrun = "forward --end-of-word"\ndesc = "Move forward to the end of the current or next word"\n\n[[input.keymap]]\non = "0"\nrun = "move -999"\ndesc = "Move to the BOL"\n\n[[input.keymap]]\non = "$"\nrun = "move 999"\ndesc = "Move to the EOL"\n\n[[input.keymap]]\non = ""\nrun = "move -999"\ndesc = "Move to the BOL"\n\n[[input.keymap]]\non = ""\nrun = "move 999"\ndesc = "Move to the EOL"\n\n[[input.keymap]]\non = ""\nrun = "move -999"\ndesc = "Move to the BOL"\n\n[[input.keymap]]\non = ""\nrun = "move 999"\ndesc = "Move to the EOL"\n\n[[input.keymap]]\non = ""\nrun = "backspace"\ndesc = "Delete the character before the cursor"\n\n[[input.keymap]]\non = ""\nrun = "backspace --under"\ndesc = "Delete the character under the cursor"\n\n[[input.keymap]]\non = ""\nrun = "backspace"\ndesc = "Delete the character before the cursor"\n\n[[input.keymap]]\non = ""\nrun = "backspace --under"\ndesc = "Delete the character under the cursor"\n\n[[input.keymap]]\non = ""\nrun = "kill bol"\ndesc = "Kill backwards to the BOL"\n\n[[input.keymap]]\non = ""\nrun = "kill eol"\ndesc = "Kill forwards to the EOL"\n\n[[input.keymap]]\non = ""\nrun = "kill backward"\ndesc = "Kill backwards to the start of the current word"\n\n[[input.keymap]]\non = ""\nrun = "kill forward"\ndesc = "Kill forwards to the end of the current word"\n\n[[input.keymap]]\non = "d"\nrun = "delete --cut"\ndesc = "Cut the selected characters"\n\n[[input.keymap]]\non = "D"\nrun = ["delete --cut", "move 999"]\ndesc = "Cut until the EOL"\n\n[[input.keymap]]\non = "c"\nrun = "delete --cut --insert"\ndesc = "Cut the selected characters, and enter insert mode"\n\n[[input.keymap]]\non = "C"\nrun = ["delete --cut --insert", "move 999"]\ndesc = "Cut until the EOL, and enter insert mode"\n\n[[input.keymap]]\non = "x"\nrun = ["delete --cut", "move 1 --in-operating"]\ndesc = "Cut the current character"\n\n[[input.keymap]]\non = "y"\nrun = "yank"\ndesc = "Copy the selected characters"\n\n[[input.keymap]]\non = "p"\nrun = "paste"\ndesc = "Paste the copied characters after the cursor"\n\n[[input.keymap]]\non = "P"\nrun = "paste --before"\ndesc = "Paste the copied characters before the cursor"\n\n[[input.keymap]]\non = "u"\nrun = "undo"\ndesc = "Undo the last operation"\n\n[[input.keymap]]\non = ""\nrun = "redo"\ndesc = "Redo the last operation"\n\n[[input.keymap]]\non = ""\nrun = "help"\ndesc = "Open help"\n\n[[input.keymap]]\non = ""\nrun = "help"\ndesc = "Open help"\n\n[[completion.keymap]]\non = ""\nrun = "close"\ndesc = "Cancel completion"\n\n[[completion.keymap]]\non = ""\nrun = "close --submit"\ndesc = "Submit the completion"\n\n[[completion.keymap]]\non = ""\nrun = ["close --submit", "close_input --submit"]\ndesc = "Submit the completion and input"\n\n[[completion.keymap]]\non = ""\nrun = "arrow -1"\ndesc = "Move cursor up"\n\n[[completion.keymap]]\non = ""\nrun = "arrow 1"\ndesc = "Move cursor down"\n\n[[completion.keymap]]\non = ""\nrun = "arrow -1"\ndesc = "Move cursor up"\n\n[[completion.keymap]]\non = ""\nrun = "arrow 1"\ndesc = "Move cursor down"\n\n[[completion.keymap]]\non = ""\nrun = "arrow -1"\ndesc = "Move cursor up"\n\n[[completion.keymap]]\non = ""\nrun = "arrow 1"\ndesc = "Move cursor down"\n\n[[completion.keymap]]\non = ""\nrun = "help"\ndesc = "Open help"\n\n[[completion.keymap]]\non = ""\nrun = "help"\ndesc = "Open help"\n\n[[help.keymap]]\non = ""\nrun = "escape"\ndesc = "Clear the filter, or hide the help"\n\n[[help.keymap]]\non = "<C-[>"\nrun = "escape"\ndesc = "Clear the filter, or hide the help"\n\n[[help.keymap]]\non = "q"\nrun = "close"\ndesc = "Exit the process"\n\n[[help.keymap]]\non = ""\nrun = "close"\ndesc = "Hide the help"\n\n[[help.keymap]]\non = "k"\nrun = "arrow -1"\ndesc = "Move cursor up"\n\n[[help.keymap]]\non = "j"\nrun = "arrow 1"\ndesc = "Move cursor down"\n\n[[help.keymap]]\non = ""\nrun = "arrow -1"\ndesc = "Move cursor up"\n\n[[help.keymap]]\non = ""\nrun = "arrow 1"\ndesc = "Move cursor down"\n\n[[help.keymap]]\non = "f"\nrun = "filter"\ndesc = "Apply a filter for the help items"\n"), keys: ["manager", "keymap", "on"], span: Some(85..92) } } }
in /home/mukul-dk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/yazi-config-0.2.5/src/keymap/keymap.rs, line 67
thread: main

Even if i remove keymap.toml file i get same kind with theme.toml file. and yazi.toml file dosent work at all.

Thankyou.

Generate schemas automatically at build time

I'm not sure how this could fit the existing ecosystem, but bear with me. 🙂 I looked over the currently open issues and there seems to be some issues with versioning as well as the schemas falling behind the newest changes. Maybe this could be improved a bit.

I would like to propose an approach where the schemas are generated automatically. A while ago I helped contribute a similar change in mfontanini/presenterm#228 and mfontanini/presenterm#236. The maintainer proposed doing it using https://docs.rs/schemars/latest/schemars/ , and it worked nicely.

Add schemas to yazi-rs.github.io/

Not sure the best way to approach this. I think GitHub Pages actually lets us deploy to the yazi-rs.github.io/schemas/ subdirectory since that is the name of this repository, we can give that a test, but I'm not sure if that will work with Docusaurus at the root. Maybe a script to pull in changes on a cron? A redirect? Interested to hear your thoughts @sxyazi.

Implement versioning system

This is a tricky one that I would love help brainstorming ideas for.

Requirements

Ultimately we need to:

  • Allow users to specify a version in the schema URL (e.g. https://yazi-rs.github.io/schemas/vX.X.X/theme.json).
  • Allow users to simply go off of the latest release (e.g. https://yazi-rs.github.io/schemas/latest/theme.json).
  • Allow users to use schemas that match the latest commit (not sure what the URL would look like, maybe just what it is now - https://yazi-rs.github.io/schemas/theme.json - but that will cause issues when we initially implement this as right now that schema reflects the latest release. It could be https://yazi-rs.github.io/schemas/main/theme.json?).

Ideas

  • A folder for each version (/schemas/latest/, schemas/v0.2.3/, schemas/main/)
    • PROS: As simple as it gets, near zero to no changes needed to the schema deploy workflow. Schemas from past versions can easily be edited too.
    • CONS: Gets overwhelming quickly, many different schema files containing mostly the same thing in different directories is kinda redundant and too large.
  • ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.