Ctrl K
ComunidadGuías…

moon.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
$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
      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
    options:
      interactive: true

  server:
    script: "cd .bin && ./gogs web"
    preset: "server"
    env:
      TTY_FORCE: "1"

  dev:
    command: "noop"
    options:
      runInCI: false
      persistent: true
    deps:
      - "build"
      - "server"
      - "web:dev"
      - "portless"

  prod:
    command: "noop"
    options:
      runInCI: false
      persistent: true
    deps:
      - "build-prod"
      - "server"
      - "portless"