workman

A simple cli tool to manage your go.work file.

How to install

How to use

just run workman in any module inside a go.work defined workspace, and you’ll see the command line UI interactives.

BTW, the command itself already support json output and arg-based operations. Run workman -h to see the usage.

Usage of workman:
  -l    list go.work info
  -n    no command line ui
  -u string
        update go.work (default "{}")

I’m working on a vscode-go-work-manager plugin too. But not sure when to finish, ah…πŸŽƒ

Example

  1. Our workspace

Folder tree:

~/work/
β”œβ”€β”€ go.work
β”œβ”€β”€ mod1/
β”‚Β Β  └── go.mod
β”œβ”€β”€ mod2/
β”‚Β Β  └── go.mod
β”œβ”€β”€ mod3/
β”‚Β Β  └── go.mod
β”œβ”€β”€ mod4/
β”‚Β Β  └── go.mod
β”œβ”€β”€ mod5/
β”‚Β Β  └── go.mod
└── mod6/
    └── go.mod

Our go.work file:

go 1.18

use (
    mod1
    mod2
    mod3
)
  1. Let’s try $ workman.

Output:

Workspace: ~/work/go.work go1.18
Module usage:
√ mod1
√ mod2
√ mod3
 Β· mod4
 Β· mod5
 Β· mod6
change: <Tab> | exit: <Esc>/<q>

It displays the go.work file path and the go version in it.

  1. It’s interactive. press <Tab> key to change the modules we are using.

Output:

Modules:
> [βœ“] mod1
  [βœ“] mod2
  [βœ“] mod3
  [βœ—] mod4
  [βœ—] mod5
  [βœ—] mod6
enter: select | tab: confirm | left: none | right: all | type to filter

Follow the instructions to turn OFF mod1 mod3, and turn ON mod6.

Modules:
  [βœ—] mod1
  [βœ“] mod2
  [βœ—] mod3
  [βœ—] mod4
  [βœ—] mod5
> [βœ“] mod6
enter: select | tab: confirm | left: none | right: all | type to filter

Press <Tab> to confirm. Then it backs to display the current go.work status.

Workspace: /home/dash/work/go.work go1.18
Module usage:
√ mod2
√ mod6
 Β· mod1
 Β· mod3
 Β· mod4
 Β· mod5
change: <Tab> | exit: <Esc>/<q>

Press <Esc> to quit the tool. And cat go.work to see its content.

go 1.18

use (
    mod2
    mod6
)

That’s it.

GitHub

View Github