diff --git a/.ozai.toml b/.ozai.toml new file mode 100644 index 0000000..915484d --- /dev/null +++ b/.ozai.toml @@ -0,0 +1,6 @@ + +[commands.ssgod] +Command="ssgod" + +[commands.echo] +Command="ssgod" diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a81ee69 --- /dev/null +++ b/Makefile @@ -0,0 +1,26 @@ +GO_IS_STUPID_EXE= + +ifeq '$(OS)' 'Windows_NT' + GO_IS_STUPID_EXE=.exe +endif + +build: + go build . + +test: + go test lcthw.dev/learn-code-the-hard-way/ozai/tests -c -o runtests$(GO_IS_STUPID_EXE) + ./runtests$(GO_IS_STUPID_EXE) + +docs: + go tool pkgsite --open + +coverage: + go build -cover -o webapp + mkdir -p .coverage + echo "GOCOVERDIR=.coverage ./webapp" + +cover_report: + go tool covdata textfmt -i=.coverage -o coverage.txt + go tool cover -func=coverage.txt + go tool cover -html=coverage.txt -o coverage.html + open coverage.html diff --git a/config/settings.go b/config/settings.go index 6ed6eed..81cefd4 100644 --- a/config/settings.go +++ b/config/settings.go @@ -6,8 +6,12 @@ import ( "github.com/BurntSushi/toml" ) +type command struct { + Command string +} + type config struct { - Test int + Commands map[string]command ConfigPath string } diff --git a/go.mod b/go.mod index bf92aef..c4e3f70 100644 --- a/go.mod +++ b/go.mod @@ -3,3 +3,17 @@ module lcthw.dev/learn-code-the-hard-way/ozai go 1.24.2 require github.com/BurntSushi/toml v1.5.0 + +require ( + github.com/google/licensecheck v0.3.1 // indirect + github.com/google/safehtml v0.0.3-0.20211026203422-d6f0e11a5516 // indirect + golang.org/x/mod v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/pkgsite v0.0.0-20250908134923-f655b297736f // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/text v0.28.0 // indirect + golang.org/x/tools v0.36.0 // indirect + rsc.io/markdown v0.0.0-20231214224604-88bb533a6020 // indirect +) + +tool golang.org/x/pkgsite/cmd/pkgsite diff --git a/go.sum b/go.sum index ff7fd09..63d2e0b 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,26 @@ github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/licensecheck v0.3.1 h1:QoxgoDkaeC4nFrtGN1jV7IPmDCHFNIVh54e5hSt6sPs= +github.com/google/licensecheck v0.3.1/go.mod h1:ORkR35t/JjW+emNKtfJDII0zlciG9JgbT7SmsohlHmY= +github.com/google/safehtml v0.0.3-0.20211026203422-d6f0e11a5516 h1:pSEdbeokt55L2hwtWo6A2k7u5SG08rmw0LhWEyrdWgk= +github.com/google/safehtml v0.0.3-0.20211026203422-d6f0e11a5516/go.mod h1:L4KWwDsUJdECRAEpZoBn3O64bQaywRscowZjJAzjHnU= +github.com/yuin/goldmark v1.6.0 h1:boZcn2GTjpsynOsC0iJHnBWa4Bi0qzfJjthwauItG68= +github.com/yuin/goldmark v1.6.0/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/pkgsite v0.0.0-20250908134923-f655b297736f h1:+fMLiUCRUNqyHHGqmH+Ges3DZrj22RVSx0/tm1bG5go= +golang.org/x/pkgsite v0.0.0-20250908134923-f655b297736f/go.mod h1:vaLH9YVozsmo/DLIjBON2krxwyptu36om+HmNoEbDnQ= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +rsc.io/markdown v0.0.0-20231214224604-88bb533a6020 h1:GqQcl3Kno/rOntek8/d8axYjau8r/c1zVFojXS6WJFI= +rsc.io/markdown v0.0.0-20231214224604-88bb533a6020/go.mod h1:8xcPgWmwlZONN1D9bjxtHEjrUtSEa3fakVF8iaewYKQ= diff --git a/main.go b/main.go index b6ce0ac..5188713 100644 --- a/main.go +++ b/main.go @@ -2,8 +2,29 @@ package main import ( "fmt" + "os/exec" + "log" + "errors" + "lcthw.dev/learn-code-the-hard-way/ozai/config" ) func main() { - fmt.Println("hi") + config.Load() + + fmt.Println("CONFIG:", config.Settings.ConfigPath) + fmt.Println("COMMANDs:", config.Settings.Commands) + + cmd := exec.Command(config.Settings.Commands["ssgod"].Command) + if errors.Is(cmd.Err, exec.ErrDot) { + cmd.Err = nil + } + + out, err := cmd.CombinedOutput() + + if err != nil { + fmt.Printf("%s\n", out) + log.Fatal(err) + } + + cmd.Wait() }