ctxfmt

command module
v0.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 21, 2023 License: Apache-2.0 Imports: 17 Imported by: 0

README

Overview

ctxfmt is a tool designed to automate the insertion of context.Context in Go method declarations and calls. It's especially useful for existing codebases, allowing for seamless integration of context handling.

Features

  • Method Definition Completion: Automatically adds ctx context.Context to method declarations in interfaces and existing method definitions.
  • Method Call Completion: Inserts context.TODO() in method calls where arguments are insufficient.
  • Dry-Run Mode: Acts as a linter for code not yet using context, allowing you to preview changes without applying them.

Installation

$ go intall github.com/takashabe/ctxfmt@latest

Usage

Method Definition Completion

$ ctxfmt signature $GOPATH/src/github.com/takashabe/ctxfmt/examples/**

This command modifies the code as follows:

  • ctx context.Context is added to method definitions
  • The import "context" statement is included automatically
@@ -1,12 +1,14 @@
 package main

+import "context"
+
 type Interface interface {
-       Foo(id int)
+       Foo(ctx context.Context, id int)
 }

 type impl struct{}

-func (i *impl) Foo(id int) {}
+func (i *impl) Foo(ctx context.Context, id int) {}

 func main() {
        i := &impl{}

Method Call Completion

$ ctxfmt args --pkg 'github.com/takashabe/ctxfmt/examples' $GOPATH/src/github.com/takashabe/ctxfmt/examples
processed /Users/takashabe/dev/src/github.com/takashabe/ctxfmt/examples/main.go

This command modifies the code as follows:

  • add context.TODO() to method calls that require a context.Context argument
@@ -12,5 +12,5 @@ func (i *impl) Foo(ctx context.Context, id int) {}

 func main() {
        i := &impl{}
-       i.Foo(1)
+       i.Foo(context.TODO(), 1)
 }
⚠ Prerequisites

Ensure the file has a compilation error like below, indicating missing context.Context in method calls:


$ go vet .
# github.com/takashabe/ctxfmt/examples
vet: ./main.go:15:9: not enough arguments in call to i.Foo
        have (number)
        want (context.Context, int)

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
examples module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL