All Projects → Arkweid → Lefthook

Arkweid / Lefthook

Licence: mit
Fast and powerful Git hooks manager for any type of projects.

Programming Languages

go
31211 projects - #10 most used programming language
ruby
36898 projects - #4 most used programming language
javascript
184084 projects - #8 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to Lefthook

lefthook
Fast and powerful Git hooks manager for any type of projects.
Stars: ✭ 2,845 (+53.95%)
Mutual labels:  manager, lefthook
Yadm
Yet Another Dotfiles Manager
Stars: ✭ 2,982 (+61.36%)
Mutual labels:  hooks, manager
Winyl
Winyl's main repository.
Stars: ✭ 97 (-94.75%)
Mutual labels:  manager
Clean State
🐻 A pure and compact state manager, using React-hooks native implementation, automatically connect the module organization architecture. 🍋
Stars: ✭ 107 (-94.21%)
Mutual labels:  hooks
Outstated
Simple hooks-based state management for React
Stars: ✭ 102 (-94.48%)
Mutual labels:  hooks
Debug Objects
WordPress Plugin for debugging and learning with and at the application.
Stars: ✭ 98 (-94.7%)
Mutual labels:  hooks
Input Value
React hook for creating input values
Stars: ✭ 104 (-94.37%)
Mutual labels:  hooks
Flagged
Feature Flags for React made easy with hooks, HOC and Render Props
Stars: ✭ 97 (-94.75%)
Mutual labels:  hooks
Personal Management System
Your web application for managing personal data. <[email protected]>
Stars: ✭ 2,027 (+9.69%)
Mutual labels:  manager
React Resize Observer Hook
ResizeObserver + React hooks
Stars: ✭ 101 (-94.53%)
Mutual labels:  hooks
Porn Vault
💋 Manage your ever-growing porn collection. Using Vue & GraphQL
Stars: ✭ 1,634 (-11.58%)
Mutual labels:  manager
Laravel Filemanager Example 5.3
Demo integration for laravel-filemanager (https://github.com/UniSharp/laravel-filemanager).
Stars: ✭ 100 (-94.59%)
Mutual labels:  manager
React Gesture Responder
a gesture responder system for your react application
Stars: ✭ 99 (-94.64%)
Mutual labels:  hooks
Rx React Container
Use RxJS in React components, via HOC or Hook
Stars: ✭ 105 (-94.32%)
Mutual labels:  hooks
Flowlayout
An Android Layout Manager to create a gridview with cells of different sizes inspired by Flow Layout for iOS.
Stars: ✭ 98 (-94.7%)
Mutual labels:  manager
Wmwm
Pure Go autotiling window manager
Stars: ✭ 107 (-94.21%)
Mutual labels:  manager
Use Substate
🍙 Lightweight (<600B minified + gzipped) React Hook to subscribe to a subset of your single app state.
Stars: ✭ 97 (-94.75%)
Mutual labels:  hooks
Ftpbucket
FTPbucket is a PHP script that enables you to sync your BitBucket or GitHub repository with any web-server
Stars: ✭ 99 (-94.64%)
Mutual labels:  hooks
Reason Reactify
🚀 Transform a mutable tree into a functional React-like API
Stars: ✭ 102 (-94.48%)
Mutual labels:  hooks
Use Conditional Effect
React.useEffect, except you can pass a comparison function.
Stars: ✭ 111 (-93.99%)
Mutual labels:  hooks

Build Status

Lefthook

The fastest polyglot Git hooks manager out there

Fast and powerful Git hooks manager for Node.js, Ruby or any other type of projects.

  • Fast. It is written in Go. Can run commands in parallel.
  • Powerful. With a few lines in the config you can check only the changed files on pre-push hook.
  • Simple. It is single dependency-free binary which can work in any environment.

📖 Read the introduction post

# On `git push` lefthook will run spelling and links check for all of the changed files
pre-push:
  parallel: true
  commands:
    spelling:
      files: git diff --name-only HEAD @{push}
      glob: "*.md"
      run: npx yaspeller {files}
    check-links:
      files: git diff --name-only HEAD @{push}
      glob: "*.md"
      run: npx markdown-link-check {files}
Sponsored by Evil Martians

Usage

Choose your environment:

Then you can find all Lefthook features in the full guide and explore wiki.


Why Lefthook

  • Parallel execution

If you want more speed. Example

pre-push:
  parallel: true
  • Flexible list of files

If you want your own list. Custom and prebuilt examples.

pre-commit:
  commands:
    frontend-linter:
      run: yarn eslint {staged_files}
    backend-linter:
      run: bundle exec rubocop --force-exclusion {all_files}
    frontend-style:
      files: git diff --name-only HEAD @{push}
      run: yarn stylelint {files}
  • Glob and regexp filters

If you want to filter list of files. You could find more glob pattern examples here.

pre-commit:
  commands:
    backend-linter:
      glob: "*.rb" # glob filter
      exclude: "application.rb|routes.rb" # regexp filter
      run: bundle exec rubocop --force-exclusion {all_files}
  • Execute in sub-directory

If you want to execute the commands in a relative path

pre-commit:
  commands:
    backend-linter:
      root: "api/" # Careful to have only trailing slash
      glob: "*.rb" # glob filter
      run: bundle exec rubocop {all_files}
  • Run scripts

If oneline commands are not enough, you can execute files. Example.

commit-msg:
  scripts:
    "template_checker":
      runner: bash
  • Tags

If you want to control a group of commands. Example.

pre-push:
  commands:
    packages-audit:
      tags: frontend security
      run: yarn audit
    gems-audit:
      tags: backend security
      run: bundle audit
  • Support Docker

If you are in the Docker environment. Example.

pre-commit:
  scripts:
    "good_job.js":
      runner: docker run -it --rm <container_id_or_name> {cmd}
  • Local config

If you a frontend/backend developer and want to skip unnecessary commands or override something into Docker. Description.

# lefthook-local.yml
pre-push:
  exclude_tags:
    - frontend
  commands:
    packages-audit:
      skip: true
  • Direct control

If you want to run hooks group directly.

$ lefthook run pre-commit
  • Your own tasks

If you want to run specific group of commands directly.

fixer:
  commands:
    ruby-fixer:
      run: bundle exec rubocop --force-exclusion --safe-auto-correct {staged_files}
    js-fixer:
      run: yarn eslint --fix {staged_files}
$ lefthook run fixer
  • Optional output

If you don't want to see supporting information:

skip_output:
  - meta #(version and which hook running)
  - success #(output from runners with exit code 0)

Table of contents:

Guides

Migrate from

Examples

Benchmarks

Comparison list

Articles

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].