8000 GitHub - hyperb1iss/siren: A multi-language linting frontend that makes code quality an awesome experience with smart tool selection, vibrant output, and framework detection.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

A multi-language linting frontend that makes code quality an awesome experience with smart tool selection, vibrant output, and framework detection.

License

Notifications You must be signed in to change notification settings

hyperb1iss/siren

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

51 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿงœโ€โ™€๏ธ SIREN โœจ

Code quality enchantress with style

Status Language License Tools Languages

Siren is a powerful frontend for multiple linting tools that makes maintaining code quality a delightful experience. Inspired by the mythological sirens, Siren draws developers in with beautiful vibrant output, smart defaults, and an intuitive interface - making code quality standards irresistible to adopt.

Siren Demo

โœจ Core Features

  • ๐ŸŒˆ Multi-language Support - Currently works with Rust, Python, JavaScript/TypeScript and HTML/Templates
  • ๐Ÿ” Framework Detection - Automatically identifies project types and frameworks
  • ๐Ÿง™โ€โ™€๏ธ Smart Tool Selection - Chooses the right linters based on detected technologies
  • ๐Ÿช„ Unified Interface - One command to rule all your linting needs
  • ๐Ÿ’… Vibrant Output - Colorful, stylish terminal experience
  • โš™๏ธ Configuration Flexibility - Smart defaults with extensive customization options
  • โšก High Performance - Lightning-fast execution with Rust's efficiency
  • ๐Ÿ”ง Auto-fixing - Automatically resolves common issues when possible
  • ๐Ÿ”„ Git Integration - Focuses on recently modified files for efficient workflows
  • ๐Ÿ“Š Interactive Progress - Live-updating spinners show the status of each tool

๐Ÿš€ Installation

Using Cargo (Coming Soon)

cargo install siren-lint

From Source

git clone https://github.com/hyperb1iss/siren
cd siren
cargo build --release

Homebrew (Coming Soon)

brew install hyperb1iss/tap/siren

๐ŸŽฏ Quick Start

# Run Siren with no arguments to check the entire project
siren

# Format your code beautifully across all languages
siren format

# Check just the files you've changed
siren --git-modified

# Automatically fix what can be fixed
siren fix

# Focus on a specific directory or file
siren check src/components/

# Target a specific language
siren check --lang rust

# Format and fix in one command
siren format-fix src/

๐Ÿ’– Currently Supported Languages & Tools

Siren supports a growing collection of languages and tools, automatically selecting the best options for your project.

Language Formatting Linting Type Checking Fixing
๐Ÿฆ€ Rust rustfmt clippy - clippy --fix
๐Ÿ Python black, ruff format pylint, ruff check mypy ruff --fix
๐ŸŒ JavaScript prettier eslint - eslint --fix
๐Ÿ“˜ TypeScript prettier eslint - eslint --fix
๐Ÿ–ฅ๏ธ HTML/Templates djlint djlint - djlint --reformat

Coming Soon

  • ๐ŸŽจ CSS/SCSS: prettier, stylelint
  • ๐Ÿน Go: gofmt, golangci-lint
  • ๐Ÿ’Ž Ruby: rubocop, sorbet
  • ๐Ÿ“ Markdown: prettier, markdownlint
  • And many more...

โš™๏ธ Configuration: Opinionated But Flexible

Siren believes in "convention over configuration" but respects your preferences.

Philosophy

  • Works Out-of-box - Zero config needed for common projects
  • Progressive Configuration - Add settings only when you need to customize
  • Sensible Defaults - We make the hard choices so you don't have to
  • Override Anything - But you can always do it your way

Configuration File

Siren uses TOML for configuration. Place a .siren.toml file in your project root:

# .siren.toml example

[general]
fail_level = "error"
use_relative_paths = true

[languages.python] 
line_length = 100
ignore_rules = ["E203", "W503"]

[tools.eslint]
extra_args = ["--max-warnings", "10"] 
auto_fix = true

๐Ÿ’Ž Advanced Use Cases

For Developers

# Format your code beautifully across all languages
$ siren format

# Check just the files you've changed
$ siren --git-modified

# Use glob patterns to check specific files or directories
$ siren check . "src/components/**/*.tsx" "lib/**/*.js"

# Fix issues in specific parts of your codebase
$ siren fix core/templates "**/*.html"

# Chain commands for workflow efficiency
$ siren format-fix --git-modified

For Team Leads

# Run comprehensive checks before a release
$ siren check --strict

# Integrate with CI pipeline
$ siren check --ci --fail-level=error

# Create a team config (coming soon)
$ siren init --team

For Newcomers

# See what Siren detects in your project
$ siren detect

# Learn what tools are available
$ siren list-tools

# Get suggestions for improving code quality (coming soon)
$ siren suggest

๐Ÿ”ฎ Integration Tips

Shell Aliases

# Add to your .bashrc or .zshrc
alias lint="siren"
alias lintfix="siren fix"
alias format="siren format"
alias check="siren --git-modified"

Git Hooks

# In .git/hooks/pre-commit
siren check --git-staged --fail-level=error

CI/CD Integration

# .github/workflows/quality.yml
steps:
  - name: Check code quality
    run: siren check --ci --fail-level=error

๐ŸŒŠ Development Status

Siren is currently in active development. Check the Project Checklist for the current status and roadmap.

The following features are implemented and working:

  • โœ… Core architecture and command structure
  • โœ… Tool registry and plugin system
  • โœ… Support for Rust, Python, and HTML tools
  • โœ… Partial support for JavaScript/TypeScript tools
  • โœ… Project detection and file collection
  • โœ… Basic configuration loading and defaults
  • โœ… Colorful terminal output

Coming soon:

  • ๐Ÿ”„ Enhanced reporting (HTML, CI annotations)
  • ๐Ÿ”„ Additional language support
  • ๐Ÿ”„ More comprehensive documentation
  • ๐Ÿ”„ Configuration validation and wizards
  • ๐Ÿ”„ Performance optimizations

๐Ÿค Contributing

Contributions are what make the open source community such a vibrant place! Any contributions you make are greatly appreciated.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AwesomeFeature)
  3. Commit your changes (git commit -m 'Add some AwesomeFeature')
  4. Push to the branch (git push origin feature/AwesomeFeature)
  5. Open a Pull Request

Contributing guide coming soon.

๐Ÿ“œ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.


Created by Stefanie Jane ๐ŸŒ 

If you find Siren useful, buy me a Monster Ultra Violet! โšก๏ธ

About

A multi-language linting frontend that makes code quality an awesome experience with smart tool selection, vibrant output, and framework detection.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

No packages published

Languages

0