From 102c944b0b3645f9f75046c42ab047551434d905 Mon Sep 17 00:00:00 2001 From: kratisto Date: Tue, 27 Jan 2026 00:14:05 +0100 Subject: [PATCH] chore: migrate to gitea --- .gitea/copilot-instructions.md | 46 ++++++++++++++++++++++++++++++ .gitea/workflows/golangci-lint.yml | 30 +++++++++++++++++++ .gitea/workflows/test.yml | 27 ++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 .gitea/copilot-instructions.md create mode 100644 .gitea/workflows/golangci-lint.yml create mode 100644 .gitea/workflows/test.yml diff --git a/.gitea/copilot-instructions.md b/.gitea/copilot-instructions.md new file mode 100644 index 0000000..120adf2 --- /dev/null +++ b/.gitea/copilot-instructions.md @@ -0,0 +1,46 @@ +# Copilot Instructions for tcgdex-golang + +## Project Overview +This repository implements a Go client for interacting with the tcgdex (Trading Card Game Database) API. The codebase is organized into two main directories: +- `client/`: Contains API client logic and request builders for cards, series, and sets. +- `models/`: Defines data structures representing cards, abilities, attacks, items, variants, legalities, series, and sets. + +## Architecture & Data Flow +- The `client` package provides entry points for querying tcgdex data. Each file (e.g., `cards.go`, `series.go`) encapsulates logic for a specific resource type. +- The `models` package contains Go structs that mirror the API's JSON schema. These are used for unmarshalling API responses and internal data handling. +- Data flows from API requests (built in `client/`) into model structs, which are then consumed by application logic or returned to callers. + +## Developer Workflows +- **Build:** Use `go build ./...` from the project root to build all packages. +- **Test:** Run `go test ./...` to execute all tests (if present). No test files detected in the current structure. +- **Coverage:** If coverage is needed, use `go test -coverprofile=coverage.out ./...`. +- **Dependencies:** Managed via Go modules (`go.mod`, `go.sum`). Use `go mod tidy` to clean up dependencies. +- **Makefile:** If present, check for custom build/test commands. (No custom targets detected in current context.) + +## Project-Specific Patterns +- **Resource Separation:** Each API resource (card, series, set) has its own client and model files. Follow this pattern for new resources. +- **Model Naming:** Model structs use the `card_`, `serie_`, and `set_` prefixes to indicate their domain. Maintain this convention for clarity. +- **Client Builders:** Use builder patterns in `client/client_builder.go` for constructing complex queries. +- **Error Handling:** Standard Go error handling is used. Return errors from client methods and propagate them up. + +## Integration Points +- **External API:** All data is fetched from the tcgdex API. No other external services detected. +- **No Database:** The project does not persist data locally; it acts as a pure API client. + +## Examples +- To add a new resource, create a model in `models/` (e.g., `resource.go`) and a client in `client/` (e.g., `resource.go`). +- To extend card functionality, update `models/card.go` and `client/cards.go`. + +## Key Files +- `client/cards.go`, `client/series.go`, `client/sets.go`: API resource clients +- `models/card.go`, `models/serie.go`, `models/set.go`: Core data models +- `client/client_builder.go`: Query builder logic +- `go.mod`, `go.sum`: Dependency management + +## Conventions +- Keep resource logic and models in separate files for maintainability. +- Use Go idioms for error handling and struct design. +- Document public methods with GoDoc comments for clarity. + +--- +If any section is unclear or missing important details, please specify which part needs improvement or what additional context is required. \ No newline at end of file diff --git a/.gitea/workflows/golangci-lint.yml b/.gitea/workflows/golangci-lint.yml new file mode 100644 index 0000000..ce0f2a2 --- /dev/null +++ b/.gitea/workflows/golangci-lint.yml @@ -0,0 +1,30 @@ +name: golangci-lint +on: + push: + pull_request: + +permissions: + contents: read + # Optional: allow read access to pull requests. Use with `only-new-issues` option. + # pull-requests: read + +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 # all history for all branches and tags + + - uses: actions/setup-go@v6 + with: + go-version-file: go.mod + check-latest: true + cache: false + + - name: golangci-lint + uses: golangci/golangci-lint-action@v8 + with: + version: v2.3.1 \ No newline at end of file diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml new file mode 100644 index 0000000..a29633e --- /dev/null +++ b/.gitea/workflows/test.yml @@ -0,0 +1,27 @@ +name: Test + +on: + push: + pull_request: + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 # all history for all branches and tags + + - uses: actions/setup-go@v6 + with: + go-version-file: go.mod + check-latest: true + cache: false + + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install -y make + + - name: Run make check-all + run: make test \ No newline at end of file