Skip to content

Commit

Permalink
refactor(scripts): change panic on error
Browse files Browse the repository at this point in the history
  • Loading branch information
bastean committed Jun 26, 2024
1 parent a34ea61 commit 4577790
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 100 deletions.
2 changes: 1 addition & 1 deletion pkg/context/shared/domain/errors/panic.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ import (
)

func Panic(what, where string) {
log.Panicf("(%s): [%s]", where, what)
log.Panicf("(%s): %s", where, what)
}
44 changes: 21 additions & 23 deletions scripts/copydeps/copydeps.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,53 +24,51 @@ const fomanticStaticPath = staticPath + "/fomantic-ui.com"
const lodashSourcePath = "node_modules/lodash"
const lodashStaticPath = staticPath + "/lodash.com"

func Panic(msg string, err error) {
if err != nil {
log.Panicf("%s: [%s]", msg, err)
}
func Panic(who error, what, where string) {
log.Panicf("(%s): %s: [%s]", where, what, who)
}

func createDirectory(path string) {
func CreateDirectory(path string) {
err := os.MkdirAll(path, os.ModePerm)

if err != nil {
Panic(fmt.Sprintf("Failed to create \"%s\"", path), err)
Panic(err, fmt.Sprintf("failed to create \"%s\"", path), "CreateDirectory")
}

log.Printf("Created: \"%s\"", path)
log.Printf("created: \"%s\"", path)
}

func copyFile(filename, sourcePath, targetPath string) {
func CopyFile(filename, sourcePath, targetPath string) {
data, err := os.ReadFile(filepath.Join(sourcePath, filepath.Base(filename)))

if err != nil {
Panic(fmt.Sprintf("Failed to read \"%s\" from \"%s\"", filename, sourcePath), err)
Panic(err, fmt.Sprintf("failed to read \"%s\" from \"%s\"", filename, sourcePath), "CopyFile")
}

err = os.WriteFile(filepath.Join(targetPath, filepath.Base(filename)), data, os.ModePerm)

if err != nil {
Panic(fmt.Sprintf("Failed to write \"%s\" on \"%s\"", filename, targetPath), err)
Panic(err, fmt.Sprintf("failed to write \"%s\" on \"%s\"", filename, targetPath), "CopyFile")
}

log.Printf("Created: \"%s\"", filepath.Join(targetPath, filepath.Base(filename)))
log.Printf("created: \"%s\"", filepath.Join(targetPath, filepath.Base(filename)))
}

func copyDeps(filenames []string, sourcePath, targetPath string) {
func CopyDeps(filenames []string, sourcePath, targetPath string) {
files, err := os.ReadDir(sourcePath)

if err != nil {
Panic(fmt.Sprintf("Failed to copy \"%s\" from \"%s\"", filenames, sourcePath), err)
Panic(err, fmt.Sprintf("failed to copy \"%s\" from \"%s\"", filenames, sourcePath), "CopyDeps")
}

createDirectory(targetPath)
CreateDirectory(targetPath)

if strings.HasPrefix(filenames[0], "^") && strings.HasSuffix(filenames[0], "$") {
isMinFile := regexp.MustCompile(filenames[0]).MatchString

for _, file := range files {
if isMinFile(file.Name()) {
copyFile(file.Name(), sourcePath, targetPath)
CopyFile(file.Name(), sourcePath, targetPath)
}
}

Expand All @@ -80,7 +78,7 @@ func copyDeps(filenames []string, sourcePath, targetPath string) {
for _, filename := range filenames {
for _, file := range files {
if filepath.Base(filename) == file.Name() {
copyFile(filename, sourcePath, targetPath)
CopyFile(filename, sourcePath, targetPath)
}
}
}
Expand All @@ -90,16 +88,16 @@ func main() {
err := os.RemoveAll(staticPath)

if err != nil && !errors.Is(err, os.ErrNotExist) {
Panic(fmt.Sprintf("Failed to remove \"%s\"", staticPath), err)
Panic(err, fmt.Sprintf("failed to remove \"%s\"", staticPath), "main")
}

createDirectory(staticPath)
CreateDirectory(staticPath)

copyDeps([]string{"jquery.min.js"}, jquerySourcePath, jqueryStaticPath)
CopyDeps([]string{"jquery.min.js"}, jquerySourcePath, jqueryStaticPath)

copyDeps([]string{"semantic.min.js", "semantic.min.css"}, fomanticSourcePath, fomanticStaticPath)
copyDeps([]string{regExpEveryMinFile}, filepath.Join(fomanticSourcePath, "components"), filepath.Join(fomanticStaticPath, "components"))
copyDeps([]string{regExpEveryWoff2File}, filepath.Join(fomanticSourcePath, "themes/default/assets/fonts"), filepath.Join(fomanticStaticPath, "themes/default/assets/fonts"))
CopyDeps([]string{"semantic.min.js", "semantic.min.css"}, fomanticSourcePath, fomanticStaticPath)
CopyDeps([]string{regExpEveryMinFile}, filepath.Join(fomanticSourcePath, "components"), filepath.Join(fomanticStaticPath, "components"))
CopyDeps([]string{regExpEveryWoff2File}, filepath.Join(fomanticSourcePath, "themes/default/assets/fonts"), filepath.Join(fomanticStaticPath, "themes/default/assets/fonts"))

copyDeps([]string{"lodash.min.js"}, lodashSourcePath, lodashStaticPath)
CopyDeps([]string{"lodash.min.js"}, lodashSourcePath, lodashStaticPath)
}
101 changes: 50 additions & 51 deletions scripts/syncenv/syncenv.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,74 +17,85 @@ var envFileModel string

var envFileBackupRegex = regexp.MustCompile(`\.env\..*\.tmp`)

func RestoreEnvFilesBackup() {
files, err := os.ReadDir(envFilesDir)

if err != nil {
panic(err)
}

for _, file := range files {
if envFileBackupRegex.Match([]byte(file.Name())) {
renamed, _ := strings.CutSuffix(file.Name(), ".tmp")
os.Rename(filepath.Join(envFilesDir, file.Name()), filepath.Join(envFilesDir, renamed))
}
}
}

func Panic(who error, where string) {
log.Println("Sync .env* failed!")

log.Println("Restoring .env* from backups")
RestoreEnvFilesBackup()

log.Println("Please, check 'Error' or undo changes with: make sync-env-reset")

log.Panicf("Error: (%s): [%s]", where, who)
}

func usage() {
fmt.Printf("Usage: %s [OPTIONS]\n", cli)
fmt.Printf("\nE.g.: %s -dir . -model .env.example\n\n", cli)
flag.PrintDefaults()
}

func backupEnvFiles() {
func BackupEnvFiles() {
files, err := os.ReadDir(envFilesDir)

if err != nil {
panic(err)
Panic(err, "BackupEnvFiles")
}

for _, file := range files {
if strings.Contains(file.Name(), ".env") {
dataBytes, err := os.ReadFile(file.Name())
data, err := os.ReadFile(file.Name())

if err != nil {
panic(err)
Panic(err, "BackupEnvFiles")
}

err = os.WriteFile(file.Name()+".tmp", dataBytes, 0644)
err = os.WriteFile(file.Name()+".tmp", data, 0644)

if err != nil {
panic(err)
Panic(err, "BackupEnvFiles")
}
}
}
}

func restoreEnvFilesBackup() {
files, err := os.ReadDir(envFilesDir)

if err != nil {
panic(err)
}

for _, file := range files {
if envFileBackupRegex.Match([]byte(file.Name())) {
renamed, _ := strings.CutSuffix(file.Name(), ".tmp")
os.Rename(filepath.Join(envFilesDir, file.Name()), filepath.Join(envFilesDir, renamed))
}
}
}

func removeEnvFilesBackup() {
func RemoveEnvFilesBackup() {
files, err := os.ReadDir(envFilesDir)

if err != nil {
panic(err)
Panic(err, "RemoveEnvFilesBackup")
}

for _, file := range files {
if envFileBackupRegex.Match([]byte(file.Name())) {
err = os.Remove(file.Name())

if err != nil {
panic(err)
Panic(err, "RemoveEnvFilesBackup")
}
}
}
}

func getEnvFiles() (envFiles []string) {
func GetEnvFiles() (envFiles []string) {
files, err := os.ReadDir(envFilesDir)

if err != nil {
panic(err)
Panic(err, "GetEnvFiles")
}

for _, file := range files {
Expand All @@ -96,11 +107,11 @@ func getEnvFiles() (envFiles []string) {
return
}

func getEnvFileModelVars() []string {
func GetEnvFileModelVars() []string {
dataBytes, err := os.ReadFile(envFileModel)

if err != nil {
panic(err)
Panic(err, "GetEnvFileModelVars")
}

enVars := strings.Split(string(dataBytes), "\n")
Expand All @@ -112,14 +123,14 @@ func getEnvFileModelVars() []string {
return enVars
}

func syncEnv(envModelVars []string, envFile string) {
dataBytes, err := os.ReadFile(envFile)
func SyncEnv(envModelVars []string, envFile string) {
data, err := os.ReadFile(envFile)

if err != nil {
panic(err)
Panic(err, "SyncEnv")
}

envFileVars := strings.Split(string(dataBytes), "\n")
envFileVars := strings.Split(string(data), "\n")

envFileVarsCleaned := []string{}

Expand Down Expand Up @@ -167,29 +178,17 @@ func syncEnv(envModelVars []string, envFile string) {
file, err := os.Create(envFile)

if err != nil {
panic(err)
Panic(err, "SyncEnv")
}

_, err = file.WriteString(envFileUpdatedVars)

if err != nil {
panic(err)
Panic(err, "SyncEnv")
}
}

func main() {
defer func() {
if r := recover(); r != nil {
log.Println("Sync .env* failed!")

log.Println("Restoring .env* from backups")
restoreEnvFilesBackup()

log.Println("Please, check 'Error' or undo changes with: make sync-env-reset")
log.Println("Error:", r)
}
}()

flag.StringVar(&envFilesDir, "dir", ".", ".env files directory")
flag.StringVar(&envFileModel, "model", ".env.example", ".env file model")

Expand All @@ -198,19 +197,19 @@ func main() {
flag.Parse()

log.Println("Creating .env* backups")
backupEnvFiles()
BackupEnvFiles()

log.Println("Searching .env*")
envFiles := getEnvFiles()
envFileModelVars := getEnvFileModelVars()
envFiles := GetEnvFiles()
envFileModelVars := GetEnvFileModelVars()

log.Println("Syncing .env*")
for _, envFile := range envFiles {
syncEnv(envFileModelVars, envFile)
SyncEnv(envFileModelVars, envFile)
}

log.Println("Removing .env* backups")
removeEnvFilesBackup()
RemoveEnvFilesBackup()

log.Println("Sync .env* completed!")
}
Loading

0 comments on commit 4577790

Please sign in to comment.