Implement Init and fix setting build variables #26

Merged
brianmcgee merged 2 commits from feat/init into main 2024-02-28 09:19:37 +00:00
4 changed files with 28 additions and 2 deletions

View File

@ -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
View 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
View File

@ -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

Move this in the other loop, so the Args aren't being looped twice

Move this in the other loop, so the Args aren't being looped twice
fmt.Printf("Generated treefmt.toml. Now it's your turn to edit it.\n")
zimbatm marked this conversation as resolved Outdated

you can use path.join(WorkingDirectory, ConfigFile) to make the file configurable

you can use path.join(WorkingDirectory, ConfigFile) to make the file configurable

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

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."

View File

@ -31,8 +31,8 @@
ldflags = [
"-s"
"-w"
"-X 'build.Name=${pname}'"
"-X 'build.Version=${version}'"
"-X git.numtide.com/numtide/treefmt/build.Name=${pname}"
"-X git.numtide.com/numtide/treefmt/build.Version=v${version}"
];
nativeBuildInputs =