LinuxCommandLibrary

brittany

Format Haskell source code

TLDR

Format a Haskell source file and print the result to stdout

$ brittany [path/to/file.hs]
copy

Format all Haskell source files in the current directory in-place
$ brittany --write-mode=inplace [*.hs]
copy

Check whether a Haskell source file needs changes and indicate the result through the programme's exit code
$ brittany --check-mode [path/to/file.hs]
copy

Format a Haskell source file using the specified amount of spaces per indentation level and line length
$ brittany --indent [4] --columns [100] [path/to/file.hs]
copy

Format a Haskell source file according to the style defined in the specified configuration file
$ brittany --config-file [path/to/config.yaml] [path/to/file.hs]
copy

SYNOPSIS

brittany [options] repository_url

PARAMETERS

--help
    Show help message and exit.

--version
    Show version information and exit.

-d, --debian-branch branch
    Specify the Debian packaging branch.

-b, --build-command command
    Specify the build command instead of debian/rules build.

-o, --output-dir directory
    Specify the output directory for the built packages.

DESCRIPTION

brittany is a tool used for building Debian packages from source code managed in version control systems like Git or Subversion. It automates tasks such as fetching source code, applying patches, running build scripts (debian/rules), and creating the final .deb packages. It's designed to simplify the package building process, particularly for developers maintaining packages directly from version control or who want to automate the build and testing of their packages. It facilitates reproducible builds and reduces the manual steps involved in packaging software for Debian-based distributions. It's often integrated into continuous integration (CI) systems to automatically build packages whenever the source code changes. While primarily focused on Debian, it can be adapted for other packaging systems with appropriate configuration.

CAVEATS

brittany relies heavily on the structure and conventions of Debian packaging. Incorrectly formatted `debian/` directories or incomplete build dependencies can lead to build failures. Network access is required to fetch source code from the version control repository.

BUILD PROCESS

The typical build process involves:
1. Fetching the source code from the specified repository.
2. Checking out the Debian packaging branch (if specified).
3. Running the build script (debian/rules).
4. Creating the .deb packages.
5. Placing the .deb packages in the output directory.

HISTORY

brittany's development history isn't widely documented in publicly available manuals or man pages. It arose as a need for automating Debian package builds from VCS, contributing to improved reproducibility and efficiency in Debian development workflows. The precise origins and contributors are not readily accessible in common documentation.

SEE ALSO

dpkg-buildpackage(1), debuild(1)

Copied to clipboard