Merge pull request 'gitea-packages-update-check' (#7) from gitea-packages-update-check into master
Reviewed-on: #7
This commit is contained in:
commit
4a18264fa3
|
@ -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
|
|
@ -0,0 +1 @@
|
|||
module gitea-packages-update-ceck
|
|
@ -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)
|
||||
}
|
|
@ -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"`
|
||||
}
|
Loading…
Reference in New Issue