mirror of
https://github.com/lukaszraczylo/git-velocity.git
synced 2026-10-12 23:23:32 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8033f52488 | ||
|
|
fe16c46b88 | ||
|
|
1eb395c836 | ||
|
|
d41e79af3a | ||
|
|
8d20f65726 | ||
|
|
d429c7a5c3 | ||
|
|
82e987f41c | ||
|
|
d2b52a4d16 | ||
|
|
6b16426153 |
@@ -6,8 +6,8 @@ require (
|
|||||||
charm.land/bubbles/v2 v2.2.1
|
charm.land/bubbles/v2 v2.2.1
|
||||||
charm.land/lipgloss/v2 v2.0.6
|
charm.land/lipgloss/v2 v2.0.6
|
||||||
github.com/bradleyfalzon/ghinstallation/v2 v2.19.0
|
github.com/bradleyfalzon/ghinstallation/v2 v2.19.0
|
||||||
github.com/go-git/go-git/v5 v5.19.2
|
github.com/go-git/go-git/v5 v5.19.3
|
||||||
github.com/google/go-github/v68 v68.0.0
|
github.com/google/go-github/v92 v92.0.0
|
||||||
github.com/shurcooL/githubv4 v0.0.0-20260209031235-2402fdf4a9ed
|
github.com/shurcooL/githubv4 v0.0.0-20260209031235-2402fdf4a9ed
|
||||||
github.com/spf13/cobra v1.10.2
|
github.com/spf13/cobra v1.10.2
|
||||||
github.com/stretchr/testify v1.12.1
|
github.com/stretchr/testify v1.12.1
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ github.com/go-git/go-billy/v5 v5.9.2 h1:OXFSRyz4g20upsGDJgQG9Bak1l/ZEv8GHVYB52O7
|
|||||||
github.com/go-git/go-billy/v5 v5.9.2/go.mod h1:ExsU+jcGwXTBOnyilvAnEM1wug1IxHr4yP2ZXsNRtV0=
|
github.com/go-git/go-billy/v5 v5.9.2/go.mod h1:ExsU+jcGwXTBOnyilvAnEM1wug1IxHr4yP2ZXsNRtV0=
|
||||||
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
|
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
|
||||||
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
|
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
|
||||||
github.com/go-git/go-git/v5 v5.19.2 h1:wkfn7vOlUBu8ivAWKBWisTiwJK4jYHzTF8Ndv1LyGqY=
|
github.com/go-git/go-git/v5 v5.19.3 h1:qHttbZ+Am7wEjdTpR1XMQ4rl42FK9SIXzZ4o9x7s6M4=
|
||||||
github.com/go-git/go-git/v5 v5.19.2/go.mod h1:QqCBE1EFN5ddFmrliLQ3/ntRCUjZU3EJuwuB/jWEHjk=
|
github.com/go-git/go-git/v5 v5.19.3/go.mod h1:Ye4C8dVigkqrv9UsB4NMdSLV4yAIkLiIhW61gcOyhl4=
|
||||||
github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI=
|
github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI=
|
||||||
github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||||
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=
|
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=
|
||||||
@@ -67,10 +67,10 @@ github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUv
|
|||||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||||
github.com/google/go-github/v68 v68.0.0 h1:ZW57zeNZiXTdQ16qrDiZ0k6XucrxZ2CGmoTvcCyQG6s=
|
|
||||||
github.com/google/go-github/v68 v68.0.0/go.mod h1:K9HAUBovM2sLwM408A18h+wd9vqdLOEqTUCbnRIcx68=
|
|
||||||
github.com/google/go-github/v88 v88.0.0 h1:dZA9IKkPK1eXZj4ypngnpRj5FwdpTv4whix2PrQMP7M=
|
github.com/google/go-github/v88 v88.0.0 h1:dZA9IKkPK1eXZj4ypngnpRj5FwdpTv4whix2PrQMP7M=
|
||||||
github.com/google/go-github/v88 v88.0.0/go.mod h1:rufTDgn2N45wjhukLTyxmvc9nilSp3mr3Rgtt6b1MPw=
|
github.com/google/go-github/v88 v88.0.0/go.mod h1:rufTDgn2N45wjhukLTyxmvc9nilSp3mr3Rgtt6b1MPw=
|
||||||
|
github.com/google/go-github/v92 v92.0.0 h1:4vW4RVffwIvoEfIA4RX09mRSB47qQX557/2+HgeWRRg=
|
||||||
|
github.com/google/go-github/v92 v92.0.0/go.mod h1:w3CH62ZcmRfvW1cdXpyTztSOVMtdjxtKpgo0GouLmjY=
|
||||||
github.com/google/go-querystring v1.2.0 h1:yhqkPbu2/OH+V9BfpCVPZkNmUXhb2gBxJArfhIxNtP0=
|
github.com/google/go-querystring v1.2.0 h1:yhqkPbu2/OH+V9BfpCVPZkNmUXhb2gBxJArfhIxNtP0=
|
||||||
github.com/google/go-querystring v1.2.0/go.mod h1:8IFJqpSRITyJ8QhQ13bmbeMBDfmeEJZD5A0egEOmkqU=
|
github.com/google/go-querystring v1.2.0/go.mod h1:8IFJqpSRITyJ8QhQ13bmbeMBDfmeEJZD5A0egEOmkqU=
|
||||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/bradleyfalzon/ghinstallation/v2"
|
"github.com/bradleyfalzon/ghinstallation/v2"
|
||||||
"github.com/google/go-github/v68/github"
|
"github.com/google/go-github/v92/github"
|
||||||
|
|
||||||
"github.com/lukaszraczylo/git-velocity/internal/config"
|
"github.com/lukaszraczylo/git-velocity/internal/config"
|
||||||
"github.com/lukaszraczylo/git-velocity/internal/domain/models"
|
"github.com/lukaszraczylo/git-velocity/internal/domain/models"
|
||||||
@@ -50,10 +50,14 @@ type Client struct {
|
|||||||
// NewClient creates a new GitHub client with the appropriate authentication
|
// NewClient creates a new GitHub client with the appropriate authentication
|
||||||
func NewClient(ctx context.Context, cfg *config.Config) (*Client, error) {
|
func NewClient(ctx context.Context, cfg *config.Config) (*Client, error) {
|
||||||
var gh *github.Client
|
var gh *github.Client
|
||||||
|
var err error
|
||||||
|
|
||||||
// Determine authentication method
|
// Determine authentication method
|
||||||
if cfg.HasGithubToken() {
|
if cfg.HasGithubToken() {
|
||||||
gh = github.NewClient(nil).WithAuthToken(cfg.Auth.GithubToken)
|
gh, err = github.NewClient(github.WithAuthToken(cfg.Auth.GithubToken))
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to create GitHub client: %w", err)
|
||||||
|
}
|
||||||
} else if cfg.HasGithubApp() {
|
} else if cfg.HasGithubApp() {
|
||||||
// GitHub App authentication
|
// GitHub App authentication
|
||||||
privateKey, err := cfg.GetGithubAppPrivateKey()
|
privateKey, err := cfg.GetGithubAppPrivateKey()
|
||||||
@@ -71,7 +75,10 @@ func NewClient(ctx context.Context, cfg *config.Config) (*Client, error) {
|
|||||||
return nil, fmt.Errorf("failed to create GitHub App transport: %w", err)
|
return nil, fmt.Errorf("failed to create GitHub App transport: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
gh = github.NewClient(&http.Client{Transport: itr})
|
gh, err = github.NewClient(github.WithHTTPClient(&http.Client{Transport: itr}))
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to create GitHub client: %w", err)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return nil, fmt.Errorf("no authentication method configured")
|
return nil, fmt.Errorf("no authentication method configured")
|
||||||
}
|
}
|
||||||
@@ -528,7 +535,7 @@ func (c *Client) FetchIssues(ctx context.Context, owner, repo string, since, unt
|
|||||||
|
|
||||||
fetcher := &DateFilteredFetcher[*github.Issue, models.Issue]{
|
fetcher := &DateFilteredFetcher[*github.Issue, models.Issue]{
|
||||||
FetchFn: func(ctx context.Context, page int) ([]*github.Issue, *github.Response, error) {
|
FetchFn: func(ctx context.Context, page int) ([]*github.Issue, *github.Response, error) {
|
||||||
opts.Page = page
|
opts.ListOptions.Page = page
|
||||||
var issues []*github.Issue
|
var issues []*github.Issue
|
||||||
var resp *github.Response
|
var resp *github.Response
|
||||||
err := c.retryWithBackoff(ctx, "list issues", func() error {
|
err := c.retryWithBackoff(ctx, "list issues", func() error {
|
||||||
@@ -561,8 +568,8 @@ func (c *Client) FetchIssueComments(ctx context.Context, owner, repo string, sin
|
|||||||
cacheKey := fmt.Sprintf("issue_comments:%s/%s:%v:%v", owner, repo, since, until)
|
cacheKey := fmt.Sprintf("issue_comments:%s/%s:%v:%v", owner, repo, since, until)
|
||||||
|
|
||||||
opts := &github.IssueListCommentsOptions{
|
opts := &github.IssueListCommentsOptions{
|
||||||
Sort: github.Ptr("created"),
|
Sort: new("created"),
|
||||||
Direction: github.Ptr("desc"),
|
Direction: new("desc"),
|
||||||
ListOptions: github.ListOptions{
|
ListOptions: github.ListOptions{
|
||||||
PerPage: 100,
|
PerPage: 100,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/go-github/v68/github"
|
"github.com/google/go-github/v92/github"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DateFilterResult represents the result of date filtering
|
// DateFilterResult represents the result of date filtering
|
||||||
|
|||||||
+4
-4
@@ -15,18 +15,18 @@
|
|||||||
"@tailwindcss/vite": "^4.3.0",
|
"@tailwindcss/vite": "^4.3.0",
|
||||||
"chart.js": "^4.5.1",
|
"chart.js": "^4.5.1",
|
||||||
"vue": "^3.5.34",
|
"vue": "^3.5.34",
|
||||||
"vue-router": "^4.6.4"
|
"vue-router": "^5.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.39.4",
|
"@eslint/js": "^10.0.0",
|
||||||
"@playwright/test": "^1.60.0",
|
"@playwright/test": "^1.60.0",
|
||||||
"@vitejs/plugin-vue": "^6.0.7",
|
"@vitejs/plugin-vue": "^6.0.7",
|
||||||
"autoprefixer": "^10.5.0",
|
"autoprefixer": "^10.5.0",
|
||||||
"eslint": "^9.39.4",
|
"eslint": "^10.0.0",
|
||||||
"eslint-plugin-vue": "^10.9.1",
|
"eslint-plugin-vue": "^10.9.1",
|
||||||
"postcss": "^8.5.15",
|
"postcss": "^8.5.15",
|
||||||
"tailwindcss": "^4.3.0",
|
"tailwindcss": "^4.3.0",
|
||||||
"vite": "^7.3.5",
|
"vite": "^8.0.0",
|
||||||
"vue-eslint-parser": "^10.4.0"
|
"vue-eslint-parser": "^10.4.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+760
-432
File diff suppressed because it is too large
Load Diff
+8
-3
@@ -14,10 +14,15 @@ export default defineConfig({
|
|||||||
outDir: 'dist',
|
outDir: 'dist',
|
||||||
assetsDir: 'assets',
|
assetsDir: 'assets',
|
||||||
emptyOutDir: true,
|
emptyOutDir: true,
|
||||||
rollupOptions: {
|
rolldownOptions: {
|
||||||
output: {
|
output: {
|
||||||
manualChunks: {
|
codeSplitting: {
|
||||||
'chart': ['chart.js']
|
groups: [
|
||||||
|
{
|
||||||
|
name: 'chart',
|
||||||
|
test: /node_modules\/(chart\.js|@kurkle\/color)\//
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user