initial.go 778 B

1234567891011121314151617181920212223242526272829303132
  1. package config
  2. import (
  3. "fmt"
  4. "os"
  5. C "github.com/metacubex/mihomo/constant"
  6. "github.com/metacubex/mihomo/log"
  7. )
  8. // Init prepare necessary files
  9. func Init(dir string) error {
  10. // initial homedir
  11. if _, err := os.Stat(dir); os.IsNotExist(err) {
  12. if err := os.MkdirAll(dir, 0o777); err != nil {
  13. return fmt.Errorf("can't create config directory %s: %s", dir, err.Error())
  14. }
  15. }
  16. // initial config.yaml
  17. if _, err := os.Stat(C.Path.Config()); os.IsNotExist(err) {
  18. log.Infoln("Can't find config, create a initial config file")
  19. f, err := os.OpenFile(C.Path.Config(), os.O_CREATE|os.O_WRONLY, 0o644)
  20. if err != nil {
  21. return fmt.Errorf("can't create file %s: %s", C.Path.Config(), err.Error())
  22. }
  23. f.Write([]byte(`mixed-port: 7890`))
  24. f.Close()
  25. }
  26. return nil
  27. }