Automic VaultAutomic Vault

brew

Install bashate with Homebrew, Nix

Code style enforcement for bash programs. Version 2.1.1 via Homebrew; verified 2026-06-15.

install

Additional install commands

macOS

Homebrewverified · 100%
brew install bashate

local Homebrew formula metadata

Linux

Nixverified · 92%
nix profile install nixpkgs#bashate

nixpkgs package indexes · pkgs/by-name/ba/bashate/package.nix · source: api.github.com

overview

Package summary

Code style enforcement for bash programs

Commands and aliases

  • bashate

history

Project history and usage

bashate is OpenStack's style checker for Bash scripts. It is essentially a pycodestyle-style lint gate for shell code, built for projects where Bash scripts are part of the reviewed and tested codebase.

Project history

The official README calls bashate a pep8 equivalent for Bash scripts and says it attempts to fill the same automated code-review role for Bash that pep8 did in many OpenStack projects. It also states that bashate started in the DevStack project and would continue to evolve over time.

The OpenStack documentation and Opendev source identify it as an Apache-licensed OpenStack project with docs, source, bugs, release notes, and contribution pages. Its documented checks cover whitespace, indentation, line endings, line length, structure rules, `bash -n` syntax errors, and obsolete or unsafe syntax.

Adoption history

bashate's adoption is tied to OpenStack's large shell-script surface, especially DevStack and project automation. The batch input shows Homebrew and Nix packaging; in practice, the tool is most valuable to contributors and CI jobs enforcing OpenStack-adjacent shell style.

The release notes and official tag list show a 0.x line followed by 1.0.0 and 2.x releases, enough history to treat it as a maintained OpenStack utility rather than a one-off script.

How it is used

Users run `bashate` against shell scripts to catch style and safety issues before review or CI. Its output intentionally follows the default pycodestyle output format, making it familiar in OpenStack's Python-heavy review culture.

The documented checks include trailing whitespace, hard tabs, non-multiple-of-four indents, missing final newline, missing shebang or `.sh` suffix, long lines, malformed control structures, heredoc termination, function declaration style, `bash -n` syntax errors, deprecated `$[` arithmetic, risky `local` declarations, and `[[` recommendations for comparisons.

Why package nerds care

bashate is package-nerd significant because it shows shell scripts becoming first-class reviewed artifacts in a large infrastructure project. It is not a general-purpose shell parser revolution; it is the small enforcement tool that makes a project's Bash style reproducible across laptops and CI workers.

It also captures an OpenStack packaging pattern: a narrow Python CLI published as a standalone package, documented by Sphinx, hosted in Opendev, and installed by package managers for repeatable developer workflows.

Timeline

  • 2010s: bashate starts in the DevStack project, according to the official README.
  • 2010s: 0.x release tags establish the early style-checker line.
  • 2020: OpenStack release-notes build documents the 0.5.x, 0.6.0, and 1.0.0 release notes.
  • 2020s: Official tag list reaches the 2.x release line.
  • 2020s: Homebrew and Nix package the `bashate` CLI.

Related projects

  • Related projects include DevStack, OpenStack's broader CI/review tooling, pycodestyle/pep8, ShellCheck, shfmt, and Bash itself. bashate's own README explicitly compares its role to pycodestyle.

Sources

  • Official Opendev tag list shows 0.1.0 through 2.1.1 tags.
  • Official README says bashate is a pep8 equivalent for Bash scripts, started in DevStack, and follows pycodestyle output format.
  • Official docs list project documentation, source, bug tracker, release notes, contributing docs, and supported checks.
  • Official release notes page documents 0.5.x, 0.6.0, and 1.0.0 notes.
  • input.source_facts.package-manager lists Homebrew and Nix packaging.

security posture

Risk level: green

narrow executable package without higher-risk signals.

Risk classifier

green risk · low confidence · appliance

Why

  • narrow executable package without higher-risk signals

Signals

  • metadata:no-higher-risk-signals

Install behavior

  • No Homebrew post-install hook is recorded in formula metadata.
  • Homebrew bottle metadata is available for 1 platform targets.
  • Installs with 1 runtime dependencies.

Recommended review

Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.

executables

Installed executables

CommandKindExposureNote
bashatecliglobal executable

freshness

Version and freshness

These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.

page generated2026-07-08
manager version2.1.1
manager updated2026-06-15
local dataok
upstreamnot checked
latest detectednot detected

https://opendev.org/openstack/bashate

install metadata

Package metadata

Package keybrew:bashate
Version2.1.1
Package managerHomebrew
Package manager pagehttps://formulae.brew.sh/formula/bashate
Homepagehttps://opendev.org/openstack/bashate
Repositoryhttps://opendev.org/openstack/bashate
Upstream docshttps://docs.openstack.org/bashate/latest
LicenseApache-2.0
Source archivehttps://files.pythonhosted.org/packages/4d/0c/35b92b742cc9da7788db16cfafda2f38505e19045ae1ee204ec238ece93f/bashate-2.1.1.tar.gz
Last updated2026-06-15T10:20:10-04:00
Pulseupdated
Dependenciespython@3.14
Bottleavailable (on all)
Homebrew post-installnot defined
Servicenone declared

registry facts

Source database details

Source DatabaseHomebrew formula API
Taphomebrew/core
Full Namebashate
Version Scheme0
Revision2
Head VersionHEAD
Bottle Stable Root URLhttps://ghcr.io/v2/homebrew/core
Deprecatedno
Disabledno
Keg Onlyno
URL Keys
  • head
  • stable

source database matches

Other package-manager records

Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.

Nix95%

bashate

nix profile install nixpkgs#bashate
  • normalized package name match
  • Matched by: Bashate
nixpkgs package indexes · api.github.com · nixpkgs package indexes: pkgs/by-name/ba/bashate/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

source trail

Generated from repository data

This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.

Used sources

  • Geiger risk classifier
  • Nucleus package database
  • av.db category and tag curation
  • cross-ecosystem install command graph
  • curated package history
  • external package-manager database matches
  • package relationship graph
  • package version freshness
  • package-page enrichment