Implement Init and fix setting build variables #26
@ -20,6 +20,7 @@ type Format struct {
|
||||
Walk walk.Type `enum:"auto,git,filesystem" default:"auto" help:"The method used to traverse the files within --tree-root. Currently supports 'auto', 'git' or 'filesystem'."`
|
||||
Verbosity int `name:"verbose" short:"v" type:"counter" default:"0" env:"LOG_LEVEL" help:"Set the verbosity of logs e.g. -vv."`
|
||||
Version bool `name:"version" short:"V" help:"Print version"`
|
||||
Init bool `name:"init" short:"i" help:"Create a new treefmt.toml"`
|
||||
|
||||
Paths []string `name:"paths" arg:"" type:"path" optional:"" help:"Paths to format. Defaults to formatting the whole tree."`
|
||||
Stdin bool `help:"Format the context passed in via stdin"`
|
||||
|
11
init.toml
Normal file
11
init.toml
Normal file
@ -0,0 +1,11 @@
|
||||
# One CLI to format the code tree - https://git.numtide.com/numtide/treefmt
|
||||
|
||||
[formatter.mylanguage]
|
||||
# Formatter to run
|
||||
command = "command-to-run"
|
||||
# Command-line arguments for the command
|
||||
options = []
|
||||
# Glob pattern of files to include
|
||||
includes = [ "*.<language-extension>" ]
|
||||
# Glob patterns of files to exclude
|
||||
excludes = []
|
14
main.go
14
main.go
@ -1,6 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
@ -9,6 +10,11 @@ import (
|
||||
"github.com/alecthomas/kong"
|
||||
)
|
||||
|
||||
// We embed the sample toml file for use with the init flag.
|
||||
//
|
||||
//go:embed init.toml
|
||||
var initBytes []byte
|
||||
|
||||
func main() {
|
||||
// This is to maintain compatibility with 1.0.0 which allows specifying the version with a `treefmt --version` flag
|
||||
// on the 'default' command. With Kong it would be better to have `treefmt version` so it would be treated as a
|
||||
@ -18,6 +24,14 @@ func main() {
|
||||
if arg == "--version" || arg == "-V" {
|
||||
fmt.Printf("%s %s\n", build.Name, build.Version)
|
||||
return
|
||||
} else if arg == "--init" || arg == "-i" {
|
||||
if err := os.WriteFile("treefmt.toml", initBytes, 0o644); err != nil {
|
||||
fmt.Printf("Failed to write treefmt.toml: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
brianmcgee marked this conversation as resolved
Outdated
|
||||
fmt.Printf("Generated treefmt.toml. Now it's your turn to edit it.\n")
|
||||
zimbatm marked this conversation as resolved
Outdated
zimbatm
commented
you can use path.join(WorkingDirectory, ConfigFile) to make the file configurable you can use path.join(WorkingDirectory, ConfigFile) to make the file configurable
zimbatm
commented
Never mind, I missed that it runs before the CLI parser. Never mind, I missed that it runs before the CLI parser.
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
brianmcgee marked this conversation as resolved
Outdated
zimbatm
commented
It would be nice to say something like "Generated treefmt.toml. Now it's your turn to edit it." It would be nice to say something like "Generated treefmt.toml. Now it's your turn to edit it."
|
||||
|
Reference in New Issue
Block a user
Move this in the other loop, so the Args aren't being looped twice