aligo icon indicating copy to clipboard operation
aligo copied to clipboard

Utility for checking and viewing Golang struct alignment info

GitHub Actions CI Status GoReportCard codebeat badge GitHub Actions CodeQL Status

ScreenshotsInstallationCommand-line completionMan documentationFAQUsageCI StatusContributingThanksLicense


𝑎𝑙𝑖𝑔𝑜 is a utility for checking and viewing Golang struct alignment info.

Screenshots

aligo preview aligo preview

Installation

From source

To build the aligo from scratch, make sure you have a working Go 1.19+ workspace (instructions), then:

go install github.com/essentialkaos/aligo/v2@latest

Using with Github Actions

For using aligo with Github Actions use this workflow file or add job Aligo to your workflow:

name: Aligo

on:
  push:
    branches: [master, develop]
  pull_request:
    branches: [master]

jobs:
  Aligo:
    name: Aligo
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: '1.20.x'

      - name: Check Golang sources with Aligo
        uses: essentialkaos/aligo-action@v2
        with:
          files: ./...

Command-line completion

You can generate completion for bash, zsh or fish shell.

Bash:

sudo aligo --completion=bash 1> /etc/bash_completion.d/aligo

ZSH:

sudo aligo --completion=zsh 1> /usr/share/zsh/site-functions/aligo

Fish:

sudo aligo --completion=fish 1> /usr/share/fish/vendor_completions.d/aligo.fish

Man documentation

You can generate man page for aligo using next command:

aligo --generate-man | sudo gzip > /usr/share/man/man1/aligo.1.gz

FAQ

Q: I think my struct is well aligned. How can I disable check for it?

A: You could add a comment with text aligo:ignore for this struct, and aligo will ignore all problems with it. Example:

// This is my supa-dupa struct
// aligo:ignore
type MyStruct struct {
  A bool
  B int
}

Usage

CI Status

Branch Status
master CI
develop CI

Contributing

Before contributing to this project please read our Contributing Guidelines.

Thanks

We would like to thank:

License

Apache License, Version 2.0