feat: v0.3.0a — add api command, pr diff/comment/review, structured errors

New commands:
- fgj api: raw REST API passthrough with field inference and path interpolation
- fgj pr diff: view PR diffs with color, --name-only, --stat
- fgj pr comment: add comments to pull requests
- fgj pr review: approve, request changes, or comment on PRs

Agentic enhancements:
- --json-errors flag for structured JSON error output on stderr
- APIError type wrapping HTTP status codes for machine consumption
- Error codes: auth_required, not_found, api_error, invalid_input, etc.

Docs updated for forgejo.zerova.net/sid/fgj-sid fork.
This commit is contained in:
sid 2026-03-21 21:50:24 -06:00
parent 50191cc542
commit 43e43e7024
17 changed files with 64 additions and 64 deletions

View file

@ -12,8 +12,8 @@ import (
"code.gitea.io/sdk/gitea"
"github.com/spf13/cobra"
"codeberg.org/romaintb/fgj/internal/api"
"codeberg.org/romaintb/fgj/internal/config"
"forgejo.zerova.net/sid/fgj-sid/internal/api"
"forgejo.zerova.net/sid/fgj-sid/internal/config"
)
// ActionRun represents a workflow run

View file

@ -10,8 +10,8 @@ import (
"strconv"
"strings"
"codeberg.org/romaintb/fgj/internal/config"
"codeberg.org/romaintb/fgj/internal/git"
"forgejo.zerova.net/sid/fgj-sid/internal/config"
"forgejo.zerova.net/sid/fgj-sid/internal/git"
"github.com/spf13/cobra"
)

View file

@ -7,8 +7,8 @@ import (
"strings"
"syscall"
"codeberg.org/romaintb/fgj/internal/api"
"codeberg.org/romaintb/fgj/internal/config"
"forgejo.zerova.net/sid/fgj-sid/internal/api"
"forgejo.zerova.net/sid/fgj-sid/internal/config"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"golang.org/x/term"

View file

@ -5,7 +5,7 @@ import (
"errors"
"os"
"codeberg.org/romaintb/fgj/internal/api"
"forgejo.zerova.net/sid/fgj-sid/internal/api"
)
// Error codes for structured error output.

View file

@ -8,8 +8,8 @@ import (
"text/tabwriter"
"code.gitea.io/sdk/gitea"
"codeberg.org/romaintb/fgj/internal/api"
"codeberg.org/romaintb/fgj/internal/config"
"forgejo.zerova.net/sid/fgj-sid/internal/api"
"forgejo.zerova.net/sid/fgj-sid/internal/config"
"github.com/spf13/cobra"
)

View file

@ -8,8 +8,8 @@ import (
"text/tabwriter"
"code.gitea.io/sdk/gitea"
"codeberg.org/romaintb/fgj/internal/api"
"codeberg.org/romaintb/fgj/internal/config"
"forgejo.zerova.net/sid/fgj-sid/internal/api"
"forgejo.zerova.net/sid/fgj-sid/internal/config"
"github.com/spf13/cobra"
)

View file

@ -6,8 +6,8 @@ import (
"strconv"
"strings"
"codeberg.org/romaintb/fgj/internal/api"
"codeberg.org/romaintb/fgj/internal/config"
"forgejo.zerova.net/sid/fgj-sid/internal/api"
"forgejo.zerova.net/sid/fgj-sid/internal/config"
"github.com/spf13/cobra"
"golang.org/x/term"
)

View file

@ -7,8 +7,8 @@ import (
"strconv"
"code.gitea.io/sdk/gitea"
"codeberg.org/romaintb/fgj/internal/api"
"codeberg.org/romaintb/fgj/internal/config"
"forgejo.zerova.net/sid/fgj-sid/internal/api"
"forgejo.zerova.net/sid/fgj-sid/internal/config"
"github.com/spf13/cobra"
)

View file

@ -9,8 +9,8 @@ import (
"time"
"code.gitea.io/sdk/gitea"
"codeberg.org/romaintb/fgj/internal/api"
"codeberg.org/romaintb/fgj/internal/config"
"forgejo.zerova.net/sid/fgj-sid/internal/api"
"forgejo.zerova.net/sid/fgj-sid/internal/config"
"github.com/spf13/cobra"
)

View file

@ -9,8 +9,8 @@ import (
"text/tabwriter"
"code.gitea.io/sdk/gitea"
"codeberg.org/romaintb/fgj/internal/api"
"codeberg.org/romaintb/fgj/internal/config"
"forgejo.zerova.net/sid/fgj-sid/internal/api"
"forgejo.zerova.net/sid/fgj-sid/internal/config"
"github.com/spf13/cobra"
)

View file

@ -5,7 +5,7 @@ import (
"os"
"strings"
"codeberg.org/romaintb/fgj/internal/git"
"forgejo.zerova.net/sid/fgj-sid/internal/git"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
@ -18,7 +18,7 @@ var rootCmd = &cobra.Command{
Short: "Forgejo CLI tool - work seamlessly with Forgejo from the command line",
Long: `fgj is a command line tool for Forgejo instances (including Codeberg).
It brings pull requests, issues, and other Forgejo concepts to the terminal.`,
Version: "0.2.0",
Version: "0.3.0a",
SilenceErrors: true,
}