about summary refs log tree commit diff
path: root/cmd/ghabilling
diff options
context:
space:
mode:
authorFranck Cuny <fcuny@roblox.com>2024-05-06 16:33:49 -0700
committerFranck Cuny <fcuny@roblox.com>2024-05-06 16:33:49 -0700
commitd8602b2da625ea67856c56d70aa159c6142bd952 (patch)
tree8d4b77e9f060d350f6e7b75e12f763e551293f64 /cmd/ghabilling
parentmore deletion (diff)
downloadworld-d8602b2da625ea67856c56d70aa159c6142bd952.tar.gz
move ghabilling to python
Diffstat (limited to 'cmd/ghabilling')
-rw-r--r--cmd/ghabilling/README.md15
-rw-r--r--cmd/ghabilling/main.go92
2 files changed, 0 insertions, 107 deletions
diff --git a/cmd/ghabilling/README.md b/cmd/ghabilling/README.md
deleted file mode 100644
index 2aa08ce..0000000
--- a/cmd/ghabilling/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# `gha-billing`
-
-Print information about how many free minutes of GitHub actions are left for this cycle.
-
-The API for this is documented [here](https://docs.github.com/en/rest/billing/billing?apiVersion=2022-11-28#get-github-actions-billing-for-an-organization).
-
-For this you need a [token](https://github.com/settings/personal-access-tokens) with the following permissions:
-- [plan](https://docs.github.com/en/rest/authentication/permissions-required-for-fine-grained-personal-access-tokens?apiVersion=2022-11-28#user-permissions-for-plan)
-
-## usage
-
-```sh
-➜  world git:(main) ✗ go run ./cmd/ghabilling -t github_pat_<TOKEN>
-this cycle, 14 minutes have been used, and 1986 minutes are remaining
-```
diff --git a/cmd/ghabilling/main.go b/cmd/ghabilling/main.go
deleted file mode 100644
index 4865a4a..0000000
--- a/cmd/ghabilling/main.go
+++ /dev/null
@@ -1,92 +0,0 @@
-package main
-
-import (
-	"context"
-	"encoding/json"
-	"flag"
-	"fmt"
-	"net/http"
-	"os"
-	"time"
-
-	"github.com/fcuny/world/internal/version"
-)
-
-const API_URL = "https://api.github.com"
-
-const usage = `Usage:
-    gha-billing -t [TOKEN]
-
-Options:
-    -t, --token       GitHub API's token
-    -v, --version     Print version information
-    -h, --help        Print this message
-`
-
-// https://docs.github.com/en/rest/billing/billing?apiVersion=2022-11-28#get-github-actions-billing-for-an-organization
-type githubActionBilling struct {
-	TotalMinutesUsed     float64        `json:"total_minutes_used"`
-	TotalPaidMinutesUsed float64        `json:"total_paid_minutes_used"`
-	IncludedMinutes      float64        `json:"included_minutes"`
-	MinutesUsedBreakdown map[string]int `json:"minutes_used_breakdown"`
-}
-
-func main() {
-	flag.Usage = func() { fmt.Fprintf(os.Stderr, "%s\n", usage) }
-
-	var (
-		tokenFlag   string
-		userFlag    string
-		versionFlag bool
-	)
-
-	flag.StringVar(&tokenFlag, "token", "", "GitHub API token")
-	flag.StringVar(&tokenFlag, "t", "", "GitHub API token")
-	flag.StringVar(&userFlag, "user", "fcuny", "GitHub API token")
-	flag.StringVar(&userFlag, "u", "fcuny", "GitHub API token")
-	flag.BoolVar(&versionFlag, "version", false, "Print version information")
-	flag.BoolVar(&versionFlag, "v", false, "Print version information")
-
-	flag.Parse()
-
-	if versionFlag {
-		information := version.VersionAndBuildInfo()
-		fmt.Println(information)
-		return
-	}
-
-	if tokenFlag == "" {
-		fmt.Fprintf(os.Stderr, "The API token is not set\n")
-		os.Exit(1)
-	}
-
-	ctx := context.TODO()
-
-	url := fmt.Sprintf("%s/users/%s/settings/billing/actions", API_URL, userFlag)
-	req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
-	if err != nil {
-		fmt.Fprintf(os.Stderr, "could not create a request: %v\n", err)
-		os.Exit(1)
-	}
-	req.Header.Set("Authorization", fmt.Sprintf("token %s", tokenFlag))
-	req.Header.Set("Accept", "application/vnd.github.v3+json")
-
-	client := http.Client{
-		Timeout: 30 * time.Second,
-	}
-
-	res, err := client.Do(req)
-	if err != nil {
-		fmt.Fprintf(os.Stderr, "error making http request: %s\n", err)
-		os.Exit(1)
-	}
-
-	var b githubActionBilling
-	if err := json.NewDecoder(res.Body).Decode(&b); err != nil {
-		fmt.Fprintf(os.Stderr, "error parsing the JSON response: %v\n", err)
-		os.Exit(1)
-	}
-
-	timeRemaining := b.IncludedMinutes - b.TotalMinutesUsed
-	fmt.Printf("this cycle, %d minutes have been used, and %d minutes are remaining\n", int(b.TotalMinutesUsed), int(timeRemaining))
-}