package main import ( "isle/bootstrap" "errors" "fmt" "io/fs" "os" "path/filepath" ) func loadHostBootstrap() (bootstrap.Bootstrap, error) { dataDirPath := bootstrap.DataDirPath(envDataDirPath) hostBootstrap, err := bootstrap.FromFile(dataDirPath) if errors.Is(err, fs.ErrNotExist) { return bootstrap.Bootstrap{}, errors.New("%q not found, has the daemon ever been run?") } else if err != nil { return bootstrap.Bootstrap{}, fmt.Errorf("loading %q: %w", dataDirPath, err) } return hostBootstrap, nil } func writeBootstrapToDataDir(hostBootstrap bootstrap.Bootstrap) error { path := bootstrap.DataDirPath(envDataDirPath) dirPath := filepath.Dir(path) if err := os.MkdirAll(dirPath, 0700); err != nil { return fmt.Errorf("creating directory %q: %w", dirPath, err) } f, err := os.Create(path) if err != nil { return fmt.Errorf("creating file %q: %w", path, err) } defer f.Close() return hostBootstrap.WriteTo(f) }