This commit is contained in:
parent
90d17515c3
commit
ae9abd50c8
11
cmd/.env.dev
11
cmd/.env.dev
|
|
@ -1,11 +0,0 @@
|
||||||
CLOUD_BASE_URL = 'http://82.151.222.22:7000'
|
|
||||||
CLOUD_USER = 'naudachu'
|
|
||||||
CLOUD_PASS = '123456'
|
|
||||||
|
|
||||||
GIT_BASE_URL = 'http://82.151.222.22:7001/api/v3'
|
|
||||||
GIT_TOKEN = '7bd9d60cf7b9e78a4f2f1aea4734fbfa1052e419'
|
|
||||||
|
|
||||||
YT_URL = 'https://marlerino.youtrack.cloud/api'
|
|
||||||
YT_TOKEN = 'perm:bmF1ZGFjaHU=.NTYtMQ==.4TVHQx65u4EKnCGjadeMB1NMAmSHSL'
|
|
||||||
|
|
||||||
TG_API = '6002875059:AAFp1ZR9Y68oaqSL6vTNQdhrVgcM_yHouCY'
|
|
||||||
91
cmd/main.go
91
cmd/main.go
|
|
@ -39,16 +39,6 @@ func env(envFilePath string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func answer(name string) string {
|
|
||||||
return tg.HTML.Text(
|
|
||||||
tg.HTML.Line(
|
|
||||||
"🤘 Ticket ",
|
|
||||||
tg.HTML.Link(name, fmt.Sprintf("https://marlerino.youtrack.cloud/issue/%s", name)),
|
|
||||||
"has been created!",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func errorAnswer(errorMsg string) string {
|
func errorAnswer(errorMsg string) string {
|
||||||
return tg.HTML.Text(
|
return tg.HTML.Text(
|
||||||
tg.HTML.Line(
|
tg.HTML.Line(
|
||||||
|
|
@ -61,7 +51,17 @@ func run(ctx context.Context) error {
|
||||||
client := tg.New(os.Getenv("TG_API"))
|
client := tg.New(os.Getenv("TG_API"))
|
||||||
|
|
||||||
router := tgb.NewRouter().
|
router := tgb.NewRouter().
|
||||||
Message(func(ctx context.Context, mu *tgb.MessageUpdate) error {
|
Message(newTicketHandler, tgb.TextHasPrefix("/new")).
|
||||||
|
Message(pingHandler, tgb.Command("ping")).
|
||||||
|
Message(newRepoHandler, tgb.TextHasPrefix("/repo"))
|
||||||
|
|
||||||
|
return tgb.NewPoller(
|
||||||
|
router,
|
||||||
|
client,
|
||||||
|
).Run(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
func newTicketHandler(ctx context.Context, mu *tgb.MessageUpdate) error {
|
||||||
|
|
||||||
str := strings.Replace(mu.Text, "/new", "", 1)
|
str := strings.Replace(mu.Text, "/new", "", 1)
|
||||||
if str == "" {
|
if str == "" {
|
||||||
|
|
@ -72,16 +72,44 @@ func run(ctx context.Context) error {
|
||||||
return mu.Answer(errorAnswer(err.Error())).ParseMode(tg.HTML).DoVoid(ctx)
|
return mu.Answer(errorAnswer(err.Error())).ParseMode(tg.HTML).DoVoid(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
return mu.Answer(answer(issueKeyStr)).ParseMode(tg.HTML).DoVoid(ctx)
|
return mu.Answer(newTicketAnswer(issueKeyStr)).ParseMode(tg.HTML).DoVoid(ctx)
|
||||||
}, tgb.TextHasPrefix("/new")).
|
}
|
||||||
Message(func(ctx context.Context, mu *tgb.MessageUpdate) error {
|
|
||||||
return mu.Answer("pong").DoVoid(ctx)
|
|
||||||
}, tgb.Command("ping"))
|
|
||||||
|
|
||||||
return tgb.NewPoller(
|
func newTicketAnswer(name string) string {
|
||||||
router,
|
return tg.HTML.Text(
|
||||||
client,
|
tg.HTML.Line(
|
||||||
).Run(ctx)
|
"🤘 Ticket ",
|
||||||
|
tg.HTML.Link(name, fmt.Sprintf("https://marlerino.youtrack.cloud/issue/%s", name)),
|
||||||
|
"has been created!",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func newRepoHandler(ctx context.Context, mu *tgb.MessageUpdate) error {
|
||||||
|
|
||||||
|
str := strings.Replace(mu.Text, "/newrepo", "", 1)
|
||||||
|
if str == "" {
|
||||||
|
return errors.New("empty command provided")
|
||||||
|
}
|
||||||
|
repoStr, err := createRepo(str, 0)
|
||||||
|
if err != nil {
|
||||||
|
return mu.Answer(errorAnswer(err.Error())).ParseMode(tg.HTML).DoVoid(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
return mu.Answer(newRepoAnswer(repoStr)).ParseMode(tg.HTML).DoVoid(ctx)
|
||||||
|
}
|
||||||
|
func newRepoAnswer(name string) string {
|
||||||
|
return tg.HTML.Text(
|
||||||
|
tg.HTML.Line(
|
||||||
|
"Repo ",
|
||||||
|
name,
|
||||||
|
"has been created!",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func pingHandler(ctx context.Context, mu *tgb.MessageUpdate) error {
|
||||||
|
return mu.Answer("pong").DoVoid(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
func workflow(name string) (string, error) {
|
func workflow(name string) (string, error) {
|
||||||
|
|
@ -106,12 +134,12 @@ func workflow(name string) (string, error) {
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
git = createRepo(issue.Key, 0)
|
git, _ = createRepo(issue.Key, 0)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
gitBuild = createRepo(issue.Key+"-build", 1)
|
gitBuild, _ = createRepo(issue.Key+"-build", 1)
|
||||||
}()
|
}()
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
@ -119,25 +147,32 @@ func workflow(name string) (string, error) {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|
||||||
yt.UpdateIssue(issue, folder, git, gitBuild)
|
yt.UpdateIssue(issue, folder, git, gitBuild)
|
||||||
}
|
}
|
||||||
return issue.Key, nil
|
return issue.Key, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createRepo(name string, param uint) string {
|
func createRepo(name string, param uint) (string, error) {
|
||||||
gb := domain.NewGitBucket(os.Getenv("GIT_BASE_URL"), os.Getenv("GIT_TOKEN"))
|
gb := domain.NewGitBucket(os.Getenv("GIT_BASE_URL"), os.Getenv("GIT_TOKEN"))
|
||||||
repo, _ := gb.NewRepo(name)
|
repo, err := gb.NewRepo(name)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Result string formatting:
|
||||||
if repo != nil {
|
if repo != nil {
|
||||||
switch param {
|
switch param {
|
||||||
case 0:
|
case 0:
|
||||||
return repo.HtmlUrl
|
return repo.HtmlUrl, nil
|
||||||
case 1:
|
case 1:
|
||||||
return fmt.Sprintf("ssh://%s/%s.git", repo.SshUrl, repo.FullName)
|
return fmt.Sprintf("ssh://%s/%s.git", repo.SshUrl, repo.FullName), nil
|
||||||
default:
|
default:
|
||||||
return repo.CloneUrl
|
return repo.CloneUrl, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "no-repo"
|
|
||||||
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
func createFolder(name string) string {
|
func createFolder(name string) string {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package domain
|
package domain
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"log"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/imroc/req/v3"
|
"github.com/imroc/req/v3"
|
||||||
|
|
@ -51,12 +52,13 @@ func (gb *gitbucket) NewRepo(name string) (*Repo, error) {
|
||||||
|
|
||||||
var git Repo
|
var git Repo
|
||||||
|
|
||||||
_, err := gb.R().
|
resp, err := gb.R().
|
||||||
SetBody(&payload).
|
SetBody(&payload).
|
||||||
SetSuccessResult(&git).
|
SetSuccessResult(&git).
|
||||||
Post("/user/repos")
|
Post("/user/repos")
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Print(resp)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue