Skip to content

essentialkaos/aligo

GitHub Actions CI Status GoReportCard codebeat badge GitHub Actions CodeQL Status

ScreenshotsInstallationCommand-line completionMan documentationFAQUsageBuild 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

Usage: aligo {options} {command} package…

Commands

  check    Check package for alignment problems
  view     Print alignment info for all structs

Options

  --arch, -a name      Architecture name
  --struct, -s name    Print info only about struct with given name
  --tags, -t tag…      Build tags (mergeble)
  --pager, -P          Use pager for long output
  --no-color, -nc      Disable colors in output
  --help, -h           Show this help message
  --version, -v        Show version

Examples

  aligo view .
  Show info about all structs in current package

  aligo check .
  Check current package

  aligo check ./...
  Check current package and all sub-packages

  aligo --tags tag1,tag2,tag3 check ./...
  Check current package and all sub-packages with custom build tags

  aligo -s PostMessageParameters view .
  Show info about PostMessageParameters struct

Build 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