New gh-action that auto generates default configuration from config package

This commit is contained in:
aditya-K2
2023-04-20 09:19:24 +05:30
parent 15b56321b3
commit 6e42fb25d3
4 changed files with 113 additions and 2 deletions

30
.github/workflows/workflow.yaml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: Generate CONFIG.md
on:
push:
branches: [ "master" ]
paths:
- config/**
workflow_dispatch:
jobs:
default_conf:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.19
- name: Clean up previous CONFIG.md
run: rm extras/CONFIG.md
- name: Generate CONFIG.md
run: go run extras/generate.go
- name: Commit CONFIG.md
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Auto-generated CONFIG.md

81
extras/generate.go Normal file
View File

@@ -0,0 +1,81 @@
package main
import (
"fmt"
"os"
"strings"
"github.com/aditya-K2/gspt/config"
"github.com/gdamore/tcell/v2"
"gopkg.in/yaml.v2"
)
var (
fileName = "extras/CONFIG.md"
f, oerr = os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY, 0644)
)
func write(body string) {
if oerr != nil {
panic(oerr)
}
if _, err := f.Write([]byte(body)); err != nil {
panic(err)
}
}
func runes() string {
_s := ""
for k := range config.RuneKeys {
_s += fmt.Sprintf("%c, ", k)
}
return strings.TrimSuffix(_s, ", ")
}
func main() {
// Ready
_m := map[tcell.Key]string{}
_ma := []string{"a-z", "A-Z", "ctrl-a - ctrl-z", "0-9", runes()}
for k, v := range config.M {
_m[v] = k
if !strings.HasPrefix(k, "ctrl-") {
_ma = append(_ma, k)
}
}
config.Config.CacheDir = "$XDG_CACHE_HOME"
c, err := yaml.Marshal(config.Config)
if err != nil {
panic(err)
}
s := ""
for k, v := range config.DefaultMappings {
s += fmt.Sprintf(" %s:\n", k)
for x, y := range v {
if x.R != 0 {
s += fmt.Sprintf(" %s: \"%s\"\n", y, string(x.R))
} else {
s += fmt.Sprintf(" %s: \"%s\"\n", y, _m[x.K])
}
}
}
_s := "|||\n|--|--|\n"
for k := 0; k < len(_ma)-1; k++ {
if k != len(_ma)-1 {
_s += "|" + _ma[k]
k++
_s += "|" + _ma[k] + "|\n"
}
}
// Write
write("***Auto generated*** (If you find any bugs please open an issue)\n")
write("# Default Configuration\n```yml\n" + string(c) + "mappings:\n" + s + "```\n")
write("# Available Keys\n" + _s)
fmt.Println("GENERATED CONFIG.MD")
}

1
go.mod
View File

@@ -12,6 +12,7 @@ require (
github.com/zmb3/spotify/v2 v2.3.1
gitlab.com/diamondburned/ueberzug-go v0.0.0-20190521043425-7c15a5f63b06
golang.org/x/oauth2 v0.4.0
gopkg.in/yaml.v2 v2.2.2
)
require (

3
go.sum
View File

@@ -47,8 +47,6 @@ github.com/BurntSushi/xgb v0.0.0-20210121224620-deaf085860bc/go.mod h1:IVnqGOEym
github.com/BurntSushi/xgbutil v0.0.0-20160919175755-f7c97cef3b4e/go.mod h1:uw9h2sd4WWHOPdJ13MQpwK5qYWKYDumDqxWWIknEQ+k=
github.com/BurntSushi/xgbutil v0.0.0-20190907113008-ad855c713046 h1:O/r2Sj+8QcMF7V5IcmiE2sMFV2q3J47BEirxbXJAdzA=
github.com/BurntSushi/xgbutil v0.0.0-20190907113008-ad855c713046/go.mod h1:uw9h2sd4WWHOPdJ13MQpwK5qYWKYDumDqxWWIknEQ+k=
github.com/aditya-K2/tview v0.0.0-20230417172428-943cc9d29a97 h1:IKjmchC4CMzAM+vVIqqoqB4KTMzrcef2c+uSmemdOis=
github.com/aditya-K2/tview v0.0.0-20230417172428-943cc9d29a97/go.mod h1:4mQQQ0q5F3GvKXtwNkViuvng/bNxt3Y3c95rGlULlv4=
github.com/aditya-K2/tview v0.0.0-20230417172909-ddde9f885af5 h1:TrvopcMV90y1ztRNsmGsglbHeBQB/w2+FWG0r1A8xR4=
github.com/aditya-K2/tview v0.0.0-20230417172909-ddde9f885af5/go.mod h1:4mQQQ0q5F3GvKXtwNkViuvng/bNxt3Y3c95rGlULlv4=
github.com/aditya-K2/utils v0.0.0-20230416002345-2f8487d8c111 h1:nRszo2Av5WTgmZa3TX86Ohs3Fi73YOgMEKbmTZ3CJoE=
@@ -527,6 +525,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=