Skip to content

automatically fix the order of golang imports. Repository mirrored from GitLab. 🦊

License

Notifications You must be signed in to change notification settings

bonsai-oss/goimportssort

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fork of https://github.com/AanZee/goimportssort

go-imports-sort

Gitlab code coverage GitHub Workflow Status Build GitHub go.mod Go version

This tool aims to automatically fix the order of golang imports. It will split your imports into three categories.

Features

  • Automatically split your imports in three categories: inbuilt, external and local.
  • Written fully in Golang, no dependencies, works on any platform.
  • Detects Go module name automatically.
  • Orders your imports alphabetically.
  • Removes additional line breaks.
  • No more manually fixing import orders.

Why use this over goimports?

Goimports will not categorize your imports when wrongly formatted. PRs to add in the functionality were denied.

Installation

$ go install github.com/bonsai-oss/goimportssort@latest

Usage

usage: goimportssort [flags] [path ...]
  -l    write results to stdout
  -local string
        put imports beginning with this string after 3rd-party packages; comma-separated list
  -o string
        custom the order of the section of imports. e.g. ixl means inbuilt, external, and local (default "iel")
  -p int
        number of files to process concurrently (default 8)
  -v    verbose logging
  -w    write result to (source) file instead of stdout

Imports will be sorted according to their categories.

$ goimportssort -v -w .

For example:

package main

import (
	"fmt"
	"log"
	APZ "bitbucket.org/example/package/name"
	APA "bitbucket.org/example/package/name"
	"github.com/bonsai-oss/goimportssort/package2"
	"github.com/bonsai-oss/goimportssort/package1"
)
import (
	"net/http/httptest"
)

import "bitbucket.org/example/package/name2"
import "bitbucket.org/example/package/name3"
import "bitbucket.org/example/package/name4"

will be transformed into:

package main

import (
	"fmt"
	"log"
	"net/http/httptest"

	APA "bitbucket.org/example/package/name"
	APZ "bitbucket.org/example/package/name"
	"bitbucket.org/example/package/name2"
	"bitbucket.org/example/package/name3"
	"bitbucket.org/example/package/name4"

	"github.com/bonsai-oss/goimportssort/package1"
	"github.com/bonsai-oss/goimportssort/package2"
)