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  }