$schema: "https://moonrepo.dev/schemas/project.json" language: "go" stack: "backend" id: "gogs" fileGroups: sources: - "cmd/**/*.go" - "internal/**/*.go" - "public/**/*.go" - "templates/**/*.go" - "conf/**/*.go" tests: - "**/*_test.go" configs: - "go.mod" - "go.sum" - ".golangci.yml" assets: - "conf/**/*" - "public/**/*" - "templates/**/*" tasks: install: script: | go mod tidy go generate ./... inputs: - "@group(sources)" - "@group(configs)" - "mockgen.go" - "mockgen.yaml" format: command: "golangci-lint fmt" inputs: - "@group(sources)" - "@group(configs)" deps: - "install" lint: command: "golangci-lint run" inputs: - "@group(sources)" - "@group(configs)" deps: - "install" - "format" test: command: "go test -cover -race ./..." inputs: - "@group(sources)" - "@group(tests)" - "@group(configs)" deps: - "install" build: script: | go build -v -trimpath \ -ldflags "-X 'gogs.io/gogs/internal/conf.BuildTime=$(date -u '+%Y-%m-%d %I:%M:%S %Z')' -X 'gogs.io/gogs/internal/conf.BuildCommit=$(git rev-parse HEAD)'" \ -o .bin/gogs ./cmd/gogs inputs: - "@group(sources)" - "@group(configs)" - "@group(assets)" outputs: - ".bin/gogs" deps: - "install" build-prod: script: | go build -v -trimpath -tags prod \ -ldflags "-X 'gogs.io/gogs/internal/conf.BuildTime=$(date -u '+%Y-%m-%d %I:%M:%S %Z')' -X 'gogs.io/gogs/internal/conf.BuildCommit=$(git rev-parse HEAD)'" \ -o .bin/gogs ./cmd/gogs inputs: - "@group(sources)" - "@group(configs)" - "@group(assets)" outputs: - ".bin/gogs" deps: - "install" - "web:build" portless: script: | portless alias gogs 3000 --force >/dev/null portless proxy start >/dev/null 2>&1 || true mkdir -p .bin/custom/conf touch .bin/custom/conf/app.ini awk ' BEGIN { in_server=0; saw_server=0; set_domain=0; set_url=0 } /^\[server\]/ { in_server=1; saw_server=1; print; next } /^\[/ { if (in_server) { if (!set_domain) print "DOMAIN = gogs.localhost" if (!set_url) print "EXTERNAL_URL = https://gogs.localhost/" in_server=0 } print; next } in_server && /^[[:space:]]*DOMAIN[[:space:]]*=/ { print "DOMAIN = gogs.localhost"; set_domain=1; next } in_server && /^[[:space:]]*EXTERNAL_URL[[:space:]]*=/ { print "EXTERNAL_URL = https://gogs.localhost/"; set_url=1; next } { print } END { if (in_server) { if (!set_domain) print "DOMAIN = gogs.localhost" if (!set_url) print "EXTERNAL_URL = https://gogs.localhost/" } else if (!saw_server) { print "" print "[server]" print "DOMAIN = gogs.localhost" print "EXTERNAL_URL = https://gogs.localhost/" } } ' .bin/custom/conf/app.ini > .bin/custom/conf/app.ini.tmp \ && mv .bin/custom/conf/app.ini.tmp .bin/custom/conf/app.ini dev: script: "cd .bin && ./gogs web" preset: "server" env: TTY_FORCE: "1" deps: - "build" - "web:dev" - "portless" prod: script: "cd .bin && ./gogs web" preset: "server" env: TTY_FORCE: "1" deps: - "build-prod" - "portless"