github.com/getgauge/gauge@v1.6.9/skel/gen.go (about) 1 /*---------------------------------------------------------------- 2 * Copyright (c) ThoughtWorks, Inc. 3 * Licensed under the Apache License, Version 2.0 4 * See LICENSE in the project root for license information. 5 *----------------------------------------------------------------*/ 6 7 package skel 8 9 import ( 10 "os" 11 "path/filepath" 12 13 "github.com/getgauge/common" 14 "github.com/getgauge/gauge/config" 15 "github.com/getgauge/gauge/logger" 16 "github.com/getgauge/gauge/template" 17 ) 18 19 func CreateSkelFilesIfRequired() { 20 p, err := common.GetConfigurationDir() 21 if err != nil { 22 logger.Debugf(true, "Unable to get path to config. Error: %s", err.Error()) 23 return 24 } 25 if _, err := os.Stat(p); os.IsNotExist(err) { 26 err = os.MkdirAll(p, common.NewDirectoryPermissions) 27 if err != nil { 28 logger.Debugf(true, "Unable to create config path dir `%s`. Error: %s", p, err.Error()) 29 return 30 } 31 } 32 err = config.Merge() 33 if err != nil { 34 logger.Debugf(true, "Unable to create gauge.properties. Error: %s", err.Error()) 35 } 36 37 err = template.Generate() 38 if err != nil { 39 logger.Debugf(true, "Unable to create tempate.properties. Error: %s", err.Error()) 40 } 41 writeFile(filepath.Join(p, "notice.md"), Notice, true) 42 writeFile(filepath.Join(p, "skel", "example.spec"), ExampleSpec, false) 43 writeFile(filepath.Join(p, "skel", "env", "default.properties"), DefaultProperties, false) 44 writeFile(filepath.Join(p, "skel", ".gitignore"), Gitignore, false) 45 } 46 47 func writeFile(path, text string, overwrite bool) { 48 dirPath := filepath.Dir(path) 49 if !common.DirExists(dirPath) { 50 err := os.MkdirAll(dirPath, common.NewDirectoryPermissions) 51 if err != nil { 52 logger.Debugf(true, "Unable to create dir `%s`. Error: %s", dirPath, err.Error()) 53 return 54 } 55 } 56 if !common.FileExists(path) || overwrite { 57 err := os.WriteFile(path, []byte(text), common.NewFilePermissions) 58 if err != nil { 59 logger.Debugf(true, "Unable to create file `%s`. Error: %s", path, err.Error()) 60 } 61 } 62 }