{"id":20673711,"url":"https://github.com/cpg314/checkalot","last_synced_at":"2026-02-12T12:04:03.196Z","repository":{"id":210596172,"uuid":"726948541","full_name":"cpg314/checkalot","owner":"cpg314","description":"Run a series of check commands on a repository (e.g. fmt/clippy/machete/deny)","archived":false,"fork":false,"pushed_at":"2025-02-26T22:14:28.000Z","size":176,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T17:13:30.053Z","etag":null,"topics":["checker","ci","clippy","lint","rust"],"latest_commit_sha":null,"homepage":"https://c.pgdm.ch/code","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cpg314.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-03T21:19:37.000Z","updated_at":"2025-02-26T22:14:31.000Z","dependencies_parsed_at":"2023-12-06T20:24:42.295Z","dependency_job_id":"a11cfc96-c223-4514-8814-b9b536485737","html_url":"https://github.com/cpg314/checkalot","commit_stats":null,"previous_names":["cpg314/checkalot"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpg314%2Fcheckalot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpg314%2Fcheckalot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpg314%2Fcheckalot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpg314%2Fcheckalot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cpg314","download_url":"https://codeload.github.com/cpg314/checkalot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248750127,"owners_count":21155687,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["checker","ci","clippy","lint","rust"],"created_at":"2024-11-16T20:42:19.722Z","updated_at":"2026-02-12T12:03:58.172Z","avatar_url":"https://github.com/cpg314.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# checkalot\n\nThis lightweight binary runs a configurable series of commands that can perform checks on a repository, such as linting or formatting. Automatic fixing can be attempted for commands that support it.\n\n![Screenshot](screenshot.png)\n\n## Usage\n\n```\nUsage: checkalot [OPTIONS] [REPOSITORY]\n\nArguments:\n  [REPOSITORY]  Repository root. If not provided, deduced from the current directory\n\nOptions:\n      --skip \u003cSKIP\u003e      Skip these checks\n      --only \u003cONLY\u003e      Only perform these checks\n      --config \u003cCONFIG\u003e  Configuration path relative to repository root [default: checkalot.yaml]\n      --fix              Tries to fix errors\n  -h, --help             Print help\n```\n\nThe repository should contain a `checkalot.yaml` configuration file at its root.\n\n```yaml\nchecks:\n  # Built-in command (self version check)\n  - type: version\n    version: \"\u003e=0.1.6\"\n  # Built-in command\n  - type: git-is-clean\n  # Built-in command\n  - type: git-is-rebased\n  # Custom command\n  - type: command\n    # Name, only for display\n    name: group-imports\n    command: cargo group-imports\n    # Folder relative to the repository where to excute the command\n    folder: rust\n    # Optional command for --fix flag\n    fix_command: cargo group-imports --fix\n    # Optional version check\n    version: \"\u003e=0.1.2\"\n    version_command: cargo group-imports --version\n    # Optional output path\n    output: /tmp/group-imports.txt\n```\n\nA more complete example can be found at the root of the repository.\n\n### Fixing issues automatically\n\nWhen the `--fix` command is provided the `fix_command` command of each failed check is called.\n\nAll checks are then rerun in order. This is important, as fixes from one command can invalidate another (e.g. `hakari` adding dependencies that are then falsely marked as unused by `machete`).\n\n![Screenshot](fix.png)\n\n### Bundling dependencies\n\nIt might be burdensome for users to have to manually install and keep up-to-date all commands in a `checkalot` pipeline.\n\nThe `checkalot-bundle` tool takes a YAML configuration of the form\n\n```yaml\n- name: cargo-group-imports\n  version: 0.1.3\n  url: https://github.com/cpg314/cargo-group-imports/releases/download/v0.1.3/cargo-group-imports-0.1.3-x86_64-unknown-linux-gnu.tar.gz\n  license: licenses.html\n  files:\n    - cargo-group-imports\n- ...\n```\n\nand produces a `.tar.gz` bundle that can be served by HTTPs and referenced by the `checkalot.yaml` configuration:\n\n```yaml\nbundle:\n  url: https://.../bundle-v1.tar.gz\n  checksum: 056e77264767271fe3b267f63296576366fb7115a7125df11953c41c20a46756\n```\n\nThe contents will be extracted to `~/.cache/checkalot/{bundle}`, which is added to the `PATH` during the execution of commands.\n\nNote: Currently, the bundle is uniquely identified by its URL. Therefore, the URL must be changed (e.g. with a version number) for the contents to be redownloaded.\n\n### Avoiding rebuilds\n\nIf you execute `clippy` outside of `checkalot`, make sure it is run with exactly the same arguments, to avoid recompilations between invocations from different locations. This includes for example the `-D warnings` parameter.\n\nIf needed, set `CARGO_LOG=cargo::core::compiler::fingerprint=info` to understand why `clippy` thinks a file is stale.\n\n## Installation\n\n```\n$ cargo install --git https://github.com/cpg314/checkalot --tag v0.1.6\n```\n\nThis will install both `checkalot` and `cargo-checkalot`, the latter being usable as a cargo subcommand (`cargo checkalot`).\n\nAlternatively, see the pre-compiled packages in the [Releases](https://github.com/cpg314/checkalot/releases) page.\n\n### Emojis\n\nIf emojis do not show properly, install a failback font such as [Noto Emoji](https://github.com/googlefonts/noto-emoji). For example, on Arch/Manjaro with wezterm:\n\n```console\n$ sudo pacman -S noto-fonts-emoji\n$ rg font ~/.wezterm.lua\nfont = wezterm.font_with_fallback({\"JetBrains Mono\", \"Noto Emoji\"})\n```\n\n## See also\n\n- https://crates.io/crates/cargo-checkmate\n- The commands featured in the example:\n  - https://github.com/bnjbvr/cargo-machete\n  - https://github.com/EmbarkStudios/cargo-deny\n  - https://crates.io/crates/cargo-hakari\n  - https://prettier.io/\n  - https://github.com/cpg314/cargo-group-imports\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcpg314%2Fcheckalot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcpg314%2Fcheckalot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcpg314%2Fcheckalot/lists"}