--- # https://taskfile.dev version: "3" tasks: lint: desc: "Lint every OpenAPI spec under serviceAPIs/ with vacuum" cmds: - | for file in serviceAPIs/*.yml serviceAPIs/*.yaml; do if [[ -f "$file" ]]; then vacuum lint $file -b -d --no-clip -z -n info -s \ -r vaccum.conf.yaml {{.CLI_ARGS}} fi done generate: desc: "Generate Go server (./api) and client (./pkg) code from OpenAPI specs" cmds: - | generateGo() { mkdir -p $2 oapi-codegen \ -generate $4 \ -config .openapi.yml \ -package $1 \ -o $2/api.gen.go \ $3 } # Below3 the gererateGo for ./pkg is the public client package # and ./api is the internal server package for file in serviceAPIs/*.yml serviceAPIs/*.yaml; do if [[ -f "$file" ]]; then service=$(basename "$file") service=${service%.*} service_lower=${service,,} # Client Code generateGo $service_lower ./pkg/$service $file \ "models,client" # Server Code generateGo $service_lower ./api/$service $file \ "models,embedded-spec,echo-server" fi done