diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..32c3074 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/cmd/delete.go b/cmd/delete.go new file mode 100644 index 0000000..6b4d354 --- /dev/null +++ b/cmd/delete.go @@ -0,0 +1,50 @@ +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +func init() { + rootCmd.AddCommand(deleteCmd) + deleteCmd.Flags().StringP("repo", "R", "", "Select another repository for finding actions cache.") + deleteCmd.Flags().StringP("branch", "B", "", "Filter by branch") + deleteCmd.SetHelpTemplate(getDeleteHelp()) +} + +var deleteCmd = &cobra.Command{ + Use: "delete", + Short: "Delete cache by key", + Long: `Delete cache by key`, + Run: func(cmd *cobra.Command, args []string) { + repo, _ := cmd.Flags().GetString("repo") + branch, _ := cmd.Flags().GetString("branch") + fmt.Println("DELETE") + fmt.Println(repo) + fmt.Println(branch) + }, +} + +func getDeleteHelp() string { + return ` +gh-actions-cache: Works with GitHub Actions Cache. + +USAGE: + gh actions-cache delete [flags] + +ARGUMENTS: + key cache key which needs to be deleted + +FLAGS: + -R, --repo <[HOST/]owner/repo> Select another repository using the [HOST/]OWNER/REPO format + -B, --branch Filter by branch + --confirm Confirm deletion without prompting + +INHERITED FLAGS + --help Show help for command + +EXAMPLES: + $ gh actions-cache delete Linux-node-f5dbf39c9d11eba80242ac13 +` +} diff --git a/cmd/list.go b/cmd/list.go new file mode 100644 index 0000000..39ef63b --- /dev/null +++ b/cmd/list.go @@ -0,0 +1,63 @@ +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +func init() { + rootCmd.AddCommand(listCmd) + listCmd.Flags().StringP("repo", "R", "", "Select another repository for finding actions cache.") + listCmd.Flags().StringP("branch", "B", "", "Filter by branch") + listCmd.Flags().StringP("key", "", "", "Filter by key") + listCmd.Flags().StringP("order", "", "", "Order of caches returned (asc/desc)") + listCmd.Flags().StringP("sort", "", "", "Sort fetched caches (used/size/created)") + listCmd.SetHelpTemplate(getListHelp()) +} + +var listCmd = &cobra.Command{ + Use: "list", + Short: "Lists the actions cache", + Long: `Lists the actions cache`, + Run: func(cmd *cobra.Command, args []string) { + repo, _ := cmd.Flags().GetString("repo") + branch, _ := cmd.Flags().GetString("branch") + key, _ := cmd.Flags().GetString("key") + order, _ := cmd.Flags().GetString("order") + sort, _ := cmd.Flags().GetString("sort") + fmt.Println("LIST") + fmt.Println(repo) + fmt.Println(branch) + fmt.Println(key) + fmt.Println(order) + fmt.Println(sort) + }, +} + +func getListHelp() string { + return ` +gh-actions-cache: Works with GitHub Actions Cache. + +USAGE: + gh actions-cache list [flags] + +ARGUMENTS: + No Arguments + +FLAGS: + -R, --repo <[HOST/]owner/repo> Select another repository using the [HOST/]OWNER/REPO format + -B, --branch Filter by branch + --key Filter by key + --order Order of caches returned (asc/desc) + --sort Sort fetched caches (used/size/created) + +INHERITED FLAGS + --help Show help for command + +EXAMPLES: + $ gh actions-cache list + $ gh actions-cache list --limit 100 + $ gh actions-cache list --order desc +` +} diff --git a/cmd/root.go b/cmd/root.go new file mode 100644 index 0000000..eb3344b --- /dev/null +++ b/cmd/root.go @@ -0,0 +1,47 @@ +package cmd + +import ( + "os" + + "github.com/spf13/cobra" +) + +var rootCmd = &cobra.Command{ + Use: "gh-actions-cache", + Short: "Works with GitHub Actions Cache. ", + Long: `Works with GitHub Actions Cache.`, + // Run: func(cmd *cobra.Command, args []string) {}, +} + +func Execute() { + err := rootCmd.Execute() + if err != nil { + os.Exit(1) + } +} + +func init() { + rootCmd.SetHelpTemplate(getRootHelp()) +} + +func getRootHelp() string { + return ` +gh-actions-cache: Works with GitHub Actions Cache. + +USAGE: + gh actions-cache [flags] + +CORE COMMANDS: + list: list caches with result length cap of 100 + delete: delete caches with a key + +INHERITED FLAGS + --help Show help for command + +EXAMPLES: + $ gh actions-cache list + $ gh actions-cache list --limit 100 + $ gh actions-cache list --order desc + $ gh actions-cache delete Linux-node-f5dbf39c9d11eba80242ac13 +` +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..bcc2aad --- /dev/null +++ b/go.mod @@ -0,0 +1,16 @@ +module github.com/actions/gh-actions-cache + +go 1.18 + +require github.com/cli/go-gh v0.0.3 + +require ( + github.com/cli/safeexec v1.0.0 // indirect + github.com/cli/shurcooL-graphql v0.0.1 // indirect + github.com/henvic/httpretty v0.0.6 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/spf13/cobra v1.4.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..a19d32a --- /dev/null +++ b/go.sum @@ -0,0 +1,44 @@ +github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= +github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= +github.com/cli/go-gh v0.0.3 h1:GcVgUa7q0SeauIRbch3VSUXVij6+c49jtAHv7WuWj5c= +github.com/cli/go-gh v0.0.3/go.mod h1:J1eNgrPJYAUy7TwPKj7GW1ibqI+WCiMndtyzrCyZIiQ= +github.com/cli/safeexec v1.0.0 h1:0VngyaIyqACHdcMNWfo6+KdUYnqEr2Sg+bSP1pdF+dI= +github.com/cli/safeexec v1.0.0/go.mod h1:Z/D4tTN8Vs5gXYHDCbaM1S/anmEDnJb1iW0+EJ5zx3Q= +github.com/cli/shurcooL-graphql v0.0.1 h1:/9J3t9O6p1B8zdBBtQighq5g7DQRItBwuwGh3SocsKM= +github.com/cli/shurcooL-graphql v0.0.1/go.mod h1:U7gCSuMZP/Qy7kbqkk5PrqXEeDgtfG5K+W+u8weorps= +github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/henvic/httpretty v0.0.6 h1:JdzGzKZBajBfnvlMALXXMVQWxWMF/ofTy8C3/OSUTxs= +github.com/henvic/httpretty v0.0.6/go.mod h1:X38wLjWXHkXT7r2+uK8LjCMne9rsuNaBLJ+5cU2/Pmo= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= +github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/main.go b/main.go new file mode 100644 index 0000000..997da92 --- /dev/null +++ b/main.go @@ -0,0 +1,7 @@ +package main + +import "github.com/actions/gh-actions-cache/cmd" + +func main() { + cmd.Execute() +}