go-plantuml
go-plantuml generates plantuml diagrams from go source files or directories.
It supports generic fields.
Installation
go install github.com/bykof/go-plantuml@latest
Please consider that $GOPATH/bin
should be on our $PATH
.
Usage
Usage:
go-plantuml [command]
Available Commands:
generate Generate a plantuml diagram from given paths
help Help about any command
Flags:
-h, --help help for go-plantuml
-t, --toggle Help message for toggle
Use "go-plantuml [command] --help" for more information about a command.
Usage:
go-plantuml generate [flags]
Flags:
-d, --directories strings the go source directories (default [.])
-f, --files strings the go source files
-h, --help help for generate
-o, --out string the graphfile (default "graph.puml")
-r, --recursive traverse the given directories recursively
-x, --exclude exclude file matching given regex expression, not used if using -f flag
Example
For example we have to files in the directory test
.
// address.go
package models
import "fmt"
var (
EmptyVariable, AnotherEmptyVariable string
A, B = "1", 2
PackageVariable = "Teststreet"
AnotherPackageVariable = "Anotherteststreet"
)
const (
StartingStreetNumber = 1
)
type (
AddressLike interface {
FullAddress(withPostalCode bool) string
}
Address struct {
A, B string
Street string
City string
PostalCode string
Country string
CustomChannel chan string
AnInterface *interface{}
}
)
func (address Address) FullAddress(withPostalCode bool) string {
return fmt.Sprintf(
"%s %s %d",
PackageVariable,
AnotherPackageVariable,
StartingStreetNumber,
)
}
// user.go
package models
import "github.com/bykof/go-plantuml/test/address/models"
type (
User struct {
FirstName string
LastName string
Age uint8
Address *models.Address
privateAddress models.Address
}
)
func (user *User) SetFirstName(firstName string) {
user.FirstName = firstName
}
func PackageFunction() string {
return "Hello World"
}
Then we run go-plantuml generate
or go-plantuml generate -d . -o graph.puml
.
This will create a graph.puml
file and check for .go files inside your current directory.
Which looks like this:
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
License
MIT