github.com/criteo/command-launcher@v0.0.0-20230407142452-fb616f546e98/internal/config/dirs.go (about)

     1  package config
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"path/filepath"
     7  
     8  	"github.com/criteo/command-launcher/internal/context"
     9  	log "github.com/sirupsen/logrus"
    10  )
    11  
    12  func AppDir() string {
    13  	ctx, err := context.AppContext()
    14  	if err != nil {
    15  		log.Fatal(err)
    16  	}
    17  
    18  	appDir := os.Getenv(ctx.AppHomeEnvVar())
    19  	if appDir != "" {
    20  		log.Tracef("Use app home dir from environment variable, %s: %s", ctx.AppHomeEnvVar(), appDir)
    21  		return appDir
    22  	}
    23  
    24  	home, err := os.UserHomeDir()
    25  	if err != nil {
    26  		log.Fatal(err)
    27  	}
    28  	log.Tracef("User home dir: %s", home)
    29  
    30  	return filepath.Join(home, ctx.AppDirname())
    31  }
    32  
    33  func LogsDir() string {
    34  	return filepath.Join(AppDir(), "logs")
    35  }
    36  
    37  func createLogsDir() error {
    38  	err := maybeCreateDir(LogsDir())
    39  	if err != nil {
    40  		return fmt.Errorf("cannot create the LOGS folder %s, err=%v", LogsDir(), err)
    41  	}
    42  	log.Tracef("LOGS folder: %s", LogsDir())
    43  
    44  	return nil
    45  }
    46  
    47  func createAppDir() {
    48  	err := maybeCreateDir(AppDir())
    49  	if err != nil {
    50  		log.Fatalf("cannot create the App folder %s, err=%v", AppDir(), err)
    51  	}
    52  	log.Infof("App folder: %s", AppDir())
    53  }
    54  
    55  func maybeCreateDir(path string) error {
    56  	_, err := os.Stat(path)
    57  	if os.IsNotExist(err) {
    58  		return os.MkdirAll(path, 0755)
    59  	}
    60  
    61  	return nil
    62  }