Basic running different commands from config file.

master
Zed A. Shaw 3 days ago
parent f54ae6ebdf
commit bcd3bb6263
  1. 6
      .ozai.toml
  2. 26
      Makefile
  3. 6
      config/settings.go
  4. 14
      go.mod
  5. 24
      go.sum
  6. 23
      main.go

@ -0,0 +1,6 @@
[commands.ssgod]
Command="ssgod"
[commands.echo]
Command="ssgod"

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

@ -6,8 +6,12 @@ import (
"github.com/BurntSushi/toml" "github.com/BurntSushi/toml"
) )
type command struct {
Command string
}
type config struct { type config struct {
Test int Commands map[string]command
ConfigPath string ConfigPath string
} }

@ -3,3 +3,17 @@ module lcthw.dev/learn-code-the-hard-way/ozai
go 1.24.2 go 1.24.2
require github.com/BurntSushi/toml v1.5.0 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

@ -1,2 +1,26 @@
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= 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/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=

@ -2,8 +2,29 @@ package main
import ( import (
"fmt" "fmt"
"os/exec"
"log"
"errors"
"lcthw.dev/learn-code-the-hard-way/ozai/config"
) )
func main() { 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()
} }

Loading…
Cancel
Save