Merge pull request 'gitea-packages-update-check' (#7) from gitea-packages-update-check into master

Reviewed-on: #7
This commit is contained in:
usbharu 2024-03-13 09:35:46 +00:00
commit 4a18264fa3
4 changed files with 247 additions and 0 deletions

View File

@ -0,0 +1,29 @@
on:
pull_request:
types:
- labeled
- opened
- synchronize
- closed
workflow_dispatch:
permissions:
pull-requests: read
jobs:
build-tool:
runs-on: ubuntu-latest
container:
image: catthehacker/ubuntu:act-latest
defaults:
run:
working-directory: ./gitea-packages-update-check
if: contains(github.event.pull_request.labels.*.name,'gitea-packages-update-check')
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: "^1.20"
- run: go build -o gitea-packages-update-check -ldflags="-s -w" -trimpath
- run: curl --user usbharu:${{ secrets.DEPLOY_TOKEN }} --upload-file gitea-packages-update-check https://git.usbharu.dev/api/packages/usbharu/generic/gitea-packages-update-check/${{ github.sha }}/gitea-packages-update-check
if: github.event.pull_request.merged == true

View File

@ -0,0 +1 @@
module gitea-packages-update-ceck

View File

@ -0,0 +1,72 @@
package main
import (
"encoding/json"
"flag"
"fmt"
"io"
"log"
"net/http"
"os"
"time"
)
func main() {
var (
r = flag.String("registry", "git.usbharu.dev", "gitea registry")
s = flag.Bool("https", true, "use https")
o = flag.String("owner", "usbharu", "package owner")
n = flag.String("name", "", "package name")
t = flag.String("type", "generic", "package type")
)
flag.Parse()
var protocol string
if *s {
protocol = "https"
} else {
protocol = "http"
}
url := protocol + "://" + *r + "/api/v1/packages/" + *o + "?type=" + *t + "&q=" + *n + "&token=" + os.Getenv("GITEA_TOKEN")
get, err := http.Get(url)
if err != nil {
log.Fatal(err)
return
}
if get.StatusCode != 200 {
log.Fatalf("The Status is not 200. %d", get.StatusCode)
}
defer func(Body io.ReadCloser) {
err := Body.Close()
if err != nil {
log.Fatal(err)
}
}(get.Body)
all, err := io.ReadAll(get.Body)
if err != nil {
log.Fatal(err)
return
}
var p []Packages
if err := json.Unmarshal(all, &p); err != nil {
log.Fatal("Error in json decode", err)
return
}
last := time.Time{}
var packageT Packages
for _, packages := range p {
if last.Before(packages.CreatedAt) {
last = packages.CreatedAt
packageT = packages
}
}
fmt.Printf("%s://%s/api/v1/packages/%s/%s/%s/%s", protocol, *r, *o, *t, packageT.Name, packageT.Version)
}

View File

@ -0,0 +1,145 @@
package main
import "time"
type Packages struct {
Id int `json:"id"`
Owner struct {
Id int `json:"id"`
Login string `json:"login"`
LoginName string `json:"login_name"`
FullName string `json:"full_name"`
Email string `json:"email"`
AvatarUrl string `json:"avatar_url"`
Language string `json:"language"`
IsAdmin bool `json:"is_admin"`
LastLogin time.Time `json:"last_login"`
Created time.Time `json:"created"`
Restricted bool `json:"restricted"`
Active bool `json:"active"`
ProhibitLogin bool `json:"prohibit_login"`
Location string `json:"location"`
Website string `json:"website"`
Description string `json:"description"`
Visibility string `json:"visibility"`
FollowersCount int `json:"followers_count"`
FollowingCount int `json:"following_count"`
StarredReposCount int `json:"starred_repos_count"`
Username string `json:"username"`
} `json:"owner"`
Repository struct {
Id int `json:"id"`
Owner struct {
Id int `json:"id"`
Login string `json:"login"`
LoginName string `json:"login_name"`
FullName string `json:"full_name"`
Email string `json:"email"`
AvatarUrl string `json:"avatar_url"`
Language string `json:"language"`
IsAdmin bool `json:"is_admin"`
LastLogin time.Time `json:"last_login"`
Created time.Time `json:"created"`
Restricted bool `json:"restricted"`
Active bool `json:"active"`
ProhibitLogin bool `json:"prohibit_login"`
Location string `json:"location"`
Website string `json:"website"`
Description string `json:"description"`
Visibility string `json:"visibility"`
FollowersCount int `json:"followers_count"`
FollowingCount int `json:"following_count"`
StarredReposCount int `json:"starred_repos_count"`
Username string `json:"username"`
} `json:"owner"`
Name string `json:"name"`
FullName string `json:"full_name"`
Description string `json:"description"`
Empty bool `json:"empty"`
Private bool `json:"private"`
Fork bool `json:"fork"`
Template bool `json:"template"`
Parent interface{} `json:"parent"`
Mirror bool `json:"mirror"`
Size int `json:"size"`
Language string `json:"language"`
LanguagesUrl string `json:"languages_url"`
HtmlUrl string `json:"html_url"`
Url string `json:"url"`
Link string `json:"link"`
SshUrl string `json:"ssh_url"`
CloneUrl string `json:"clone_url"`
OriginalUrl string `json:"original_url"`
Website string `json:"website"`
StarsCount int `json:"stars_count"`
ForksCount int `json:"forks_count"`
WatchersCount int `json:"watchers_count"`
OpenIssuesCount int `json:"open_issues_count"`
OpenPrCounter int `json:"open_pr_counter"`
ReleaseCounter int `json:"release_counter"`
DefaultBranch string `json:"default_branch"`
Archived bool `json:"archived"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ArchivedAt time.Time `json:"archived_at"`
Permissions struct {
Admin bool `json:"admin"`
Push bool `json:"push"`
Pull bool `json:"pull"`
} `json:"permissions"`
HasIssues bool `json:"has_issues"`
InternalTracker struct {
EnableTimeTracker bool `json:"enable_time_tracker"`
AllowOnlyContributorsToTrackTime bool `json:"allow_only_contributors_to_track_time"`
EnableIssueDependencies bool `json:"enable_issue_dependencies"`
} `json:"internal_tracker"`
HasWiki bool `json:"has_wiki"`
HasPullRequests bool `json:"has_pull_requests"`
HasProjects bool `json:"has_projects"`
HasReleases bool `json:"has_releases"`
HasPackages bool `json:"has_packages"`
HasActions bool `json:"has_actions"`
IgnoreWhitespaceConflicts bool `json:"ignore_whitespace_conflicts"`
AllowMergeCommits bool `json:"allow_merge_commits"`
AllowRebase bool `json:"allow_rebase"`
AllowRebaseExplicit bool `json:"allow_rebase_explicit"`
AllowSquashMerge bool `json:"allow_squash_merge"`
AllowRebaseUpdate bool `json:"allow_rebase_update"`
DefaultDeleteBranchAfterMerge bool `json:"default_delete_branch_after_merge"`
DefaultMergeStyle string `json:"default_merge_style"`
DefaultAllowMaintainerEdit bool `json:"default_allow_maintainer_edit"`
AvatarUrl string `json:"avatar_url"`
Internal bool `json:"internal"`
MirrorInterval string `json:"mirror_interval"`
MirrorUpdated time.Time `json:"mirror_updated"`
RepoTransfer interface{} `json:"repo_transfer"`
} `json:"repository"`
Creator struct {
Id int `json:"id"`
Login string `json:"login"`
LoginName string `json:"login_name"`
FullName string `json:"full_name"`
Email string `json:"email"`
AvatarUrl string `json:"avatar_url"`
Language string `json:"language"`
IsAdmin bool `json:"is_admin"`
LastLogin time.Time `json:"last_login"`
Created time.Time `json:"created"`
Restricted bool `json:"restricted"`
Active bool `json:"active"`
ProhibitLogin bool `json:"prohibit_login"`
Location string `json:"location"`
Website string `json:"website"`
Description string `json:"description"`
Visibility string `json:"visibility"`
FollowersCount int `json:"followers_count"`
FollowingCount int `json:"following_count"`
StarredReposCount int `json:"starred_repos_count"`
Username string `json:"username"`
} `json:"creator"`
Type string `json:"type"`
Name string `json:"name"`
Version string `json:"version"`
HtmlUrl string `json:"html_url"`
CreatedAt time.Time `json:"created_at"`
}