Skip to content
yowainwrightPublic

About

fjsf, a fuzzy json script finder

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

169 Commits

Folders and files

Repository files navigation

fjsf

npm version GitHub Actions

Fuzzy Script Finder

A zero-dependency CLI for fuzzy searching and executing scripts from JSON, TOML, and YAML config files. Works with package.json, Cargo.toml, pyproject.toml, Taskfile.yml, and more.

Image

Why fjsf?

Stop typing full script names. Type fjsf, fuzzy search, press Enter.

Works wherever scripts live — npm, Cargo, Python tasks, Go taskfiles — no config needed.

Architecture

You start here.
Lost. In a sea of config files trying to remember the script you need,
you type fjsf and...

graph TD
    A[CLI Entry] --> B{Parse Mode}
    B -->|default| C[Find Config Files]
    B -->|find| D[Find by Filename]
    B -->|path| E[Load Single File]
    B -->|help/quit| F[Exit]

    C --> G[Extract scripts/tasks/jobs]
    D --> G
    G --> H[Fuzzy Search UI]
    H --> I[Execute Script]

    E --> J[Flatten All Keys]
    J --> H
Loading

You end here.
Just as lonely as before.
But you executed that script you needed lickety-split!

Features

  • Multi-format: reads package.json, Cargo.toml, pyproject.toml, Taskfile.yml, GitHub Actions, and any JSON/TOML/YAML config
  • Nested task discovery: finds [tool.taskipy.tasks], jobs:, and other non-standard task paths automatically
  • Default mode: scans the current directory tree and collects all scripts
  • Find mode: locates every copy of a filename across a monorepo
  • Path mode: explores any config file with fuzzy search
  • Zero dependencies — compiled to a native binary via QuickJS
  • Interactive terminal UI with keyboard navigation

Usage

fjsf                        # Search all scripts in current directory tree
fjsf find Cargo.toml        # Find all Cargo.toml files and search their scripts
fjsf path pyproject.toml    # Explore a specific file

Search scripts across any project

fjsf
# Type to fuzzy filter, arrows to navigate, Enter to run, Esc/Ctrl+C to quit

Find scripts across a monorepo

fjsf find package.json
# Shows scripts from every package.json found in the tree

Explore a config file

fjsf path Taskfile.yml
# Type: "build"
# Shows all entries with "build" in the key or value

Python projects with taskipy

fjsf path pyproject.toml
# Finds tasks under [tool.taskipy.tasks] automatically

Command Reference

# Default — scan directory for config files and extract scripts
fjsf

# Find mode — locate all files with that name and extract scripts
fjsf find <filename>
fjsf f <filename>

# Path mode — load a single file and fuzzy search all entries
fjsf path <file>
fjsf p <file>

# Other
fjsf help / fjsf --help     # Show usage
fjsf --version / fjsf -v    # Show version
fjsf quit / fjsf q          # Exit

# Keyboard controls
# Type to fuzzy search, ↑/↓ to navigate, Enter to execute
# q to quit (when search is empty), Esc or Ctrl+C to exit anytime

Installation

Homebrew

brew tap yowainwright/tap
brew install fjsf

npm

bun install -g fjsf
# or: npm install -g fjsf

Binary

Download the latest binary from the releases page:

  • macOS (Apple Silicon): fjsf-qjs-darwin-arm64
  • Linux x64: fjsf-qjs-linux-x64
chmod +x fjsf-qjs-*
sudo mv fjsf-qjs-* /usr/local/bin/fjsf

License

MIT

About

fjsf, a fuzzy json script finder

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages