You've already forked golang-saas-starter-kit
mirror of
https://github.com/raseels-repos/golang-saas-starter-kit.git
synced 2025-07-15 01:34:32 +02:00
use .git/config for remote url
This commit is contained in:
@ -3,12 +3,13 @@ package config
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
||||
"geeks-accelerator/oss/saas-starter-kit/internal/schema"
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||
@ -96,7 +97,7 @@ func (cfgCtx *ConfigContext) Config(log *log.Logger) (*devdeploy.Config, error)
|
||||
// Get the current working directory. This should be somewhere contained within the project.
|
||||
workDir, err := os.Getwd()
|
||||
if err != nil {
|
||||
return cfg, errors.WithMessage(err, "Failed to get current working directory.")
|
||||
return cfg, errors.Wrap(err, "Failed to get current working directory.")
|
||||
}
|
||||
|
||||
// Set the project root directory and project name. This is current set by finding the go.mod file for the project
|
||||
@ -116,9 +117,11 @@ func (cfgCtx *ConfigContext) Config(log *log.Logger) (*devdeploy.Config, error)
|
||||
// their name is calculated with the go.mod path. Since the name-scope of AWS resources is region/global scope,
|
||||
// it will fail to create appropriate resources for the account of the forked user.
|
||||
if cfg.ProjectName == "saas-starter-kit" {
|
||||
|
||||
// Replace the prefix 'saas' with the parent directory name, hopefully the gitlab group/username.
|
||||
cfg.ProjectName = filepath.Base(filepath.Dir(cfg.ProjectRoot)) + "-starter-kit"
|
||||
// Its a true fork from the origin repo.
|
||||
if gitRemoteUser( modDetails.ProjectRoot) != "geeks-accelerator" {
|
||||
// Replace the prefix 'saas' with the parent directory name, hopefully the gitlab group/username.
|
||||
cfg.ProjectName = filepath.Base(filepath.Dir(cfg.ProjectRoot)) + "-starter-kit"
|
||||
}
|
||||
}
|
||||
|
||||
// Set default AWS ECR Repository Name.
|
||||
@ -404,13 +407,7 @@ func (cfgCtx *ConfigContext) Config(log *log.Logger) (*devdeploy.Config, error)
|
||||
|
||||
return nil
|
||||
},
|
||||
AfterCreate: func(res *rds.DBCluster, dbInfo *devdeploy.DBConnInfo) error {
|
||||
masterDb, err := sqlx.Open(dbInfo.Driver, dbInfo.URL())
|
||||
if err != nil {
|
||||
return errors.WithMessage(err, "Failed to connect to db for schema migration.")
|
||||
}
|
||||
defer masterDb.Close()
|
||||
|
||||
AfterCreate: func(res *rds.DBCluster, dbInfo *devdeploy.DBConnInfo, masterDb *sqlx.DB) error {
|
||||
return schema.Migrate(context.Background(), cfg.Env, masterDb, log, false)
|
||||
},
|
||||
}
|
||||
@ -432,13 +429,7 @@ func (cfgCtx *ConfigContext) Config(log *log.Logger) (*devdeploy.Config, error)
|
||||
{Key: devdeploy.AwsTagNameProject, Value: cfg.ProjectName},
|
||||
{Key: devdeploy.AwsTagNameEnv, Value: cfg.Env},
|
||||
},
|
||||
AfterCreate: func(res *rds.DBInstance, dbInfo *devdeploy.DBConnInfo) error {
|
||||
masterDb, err := sqlx.Open(dbInfo.Driver, dbInfo.URL())
|
||||
if err != nil {
|
||||
return errors.WithMessage(err, "Failed to connect to db for schema migration.")
|
||||
}
|
||||
defer masterDb.Close()
|
||||
|
||||
AfterCreate: func(res *rds.DBInstance, dbInfo *devdeploy.DBConnInfo, masterDb *sqlx.DB) error {
|
||||
return schema.Migrate(context.Background(), cfg.Env, masterDb, log, false)
|
||||
},
|
||||
}
|
||||
@ -577,3 +568,34 @@ func getCommitRef() string {
|
||||
|
||||
return commitRef
|
||||
}
|
||||
|
||||
// gitRemoteUser returns the git username/organization for the git repo
|
||||
func gitRemoteUser(projectRoot string) string {
|
||||
dat, err := ioutil.ReadFile(filepath.Join(projectRoot, ".git/config"))
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
|
||||
var remoteUrl string
|
||||
lines := strings.Split(string(dat), "\n")
|
||||
for _, l := range lines {
|
||||
l = strings.TrimSpace(l)
|
||||
if strings.HasPrefix(l, "url =") {
|
||||
remoteUrl = l
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if remoteUrl == "" {
|
||||
return ""
|
||||
}
|
||||
remoteUrl = strings.TrimSpace(strings.Split(remoteUrl, "=")[1])
|
||||
|
||||
if !strings.Contains(remoteUrl, ":") {
|
||||
return ""
|
||||
}
|
||||
remoteUser := strings.Split(remoteUrl, ":")[1]
|
||||
remoteUser = strings.Split(remoteUser, "/")[0]
|
||||
|
||||
return remoteUser
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ func RunSchemaMigrationsForTargetEnv(log *log.Logger, awsCredentials devdeploy.A
|
||||
|
||||
masterDb, err := sqlx.Open(cfg.DBConnInfo.Driver, cfg.DBConnInfo.URL())
|
||||
if err != nil {
|
||||
return errors.WithMessage(err, "Failed to connect to db for schema migration.")
|
||||
return errors.Wrap(err, "Failed to connect to db for schema migration.")
|
||||
}
|
||||
defer masterDb.Close()
|
||||
|
||||
|
2
go.mod
2
go.mod
@ -39,7 +39,7 @@ require (
|
||||
github.com/tinylib/msgp v1.1.0 // indirect
|
||||
github.com/urfave/cli v1.21.0
|
||||
github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2
|
||||
gitlab.com/geeks-accelerator/oss/devops v1.0.7
|
||||
gitlab.com/geeks-accelerator/oss/devops v1.0.8
|
||||
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4
|
||||
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 // indirect
|
||||
|
2
go.sum
2
go.sum
@ -214,6 +214,8 @@ gitlab.com/geeks-accelerator/oss/devops v1.0.3 h1:SE2ZD4Csvmm3t/50RoJkVLjDcwXKHa
|
||||
gitlab.com/geeks-accelerator/oss/devops v1.0.3/go.mod h1:rvI71qNJyNiO99ZgGnv/PmJCVrjJjupsXBmfYFXdjGM=
|
||||
gitlab.com/geeks-accelerator/oss/devops v1.0.7 h1:ZlQufuVnRN3DwJ0I5c5KA5edhQs7OstXc0uUZ9V0ixI=
|
||||
gitlab.com/geeks-accelerator/oss/devops v1.0.7/go.mod h1:JEl0T87/zftowrIzY1D+rhDMhG0AxnghuZB+VzEWuqM=
|
||||
gitlab.com/geeks-accelerator/oss/devops v1.0.8 h1:ql2Ii6CuW+k9X0SM0sVSzwYWDdiVdoX2xuGg9ADlj+Y=
|
||||
gitlab.com/geeks-accelerator/oss/devops v1.0.8/go.mod h1:JEl0T87/zftowrIzY1D+rhDMhG0AxnghuZB+VzEWuqM=
|
||||
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
|
@ -169,7 +169,7 @@ func New() *Test {
|
||||
ctx := context.WithValue(context.Background(), webcontext.KeyValues, &v)
|
||||
|
||||
// Execute the migrations
|
||||
if err = schema.Migrate(ctx, masterDB, log, true); err != nil {
|
||||
if err = schema.Migrate(ctx, v.Env, masterDB, log, true); err != nil {
|
||||
log.Fatalf("main : Migrate : %v", err)
|
||||
}
|
||||
log.Printf("main : Migrate : Completed")
|
||||
|
Reference in New Issue
Block a user