package daemon import ( "errors" "fmt" "io/fs" "os" "path/filepath" "isle/bootstrap" ) func loadHostBootstrap(stateDirPath string) (bootstrap.Bootstrap, error) { path := bootstrap.StateDirPath(stateDirPath) hostBootstrap, err := bootstrap.FromFile(path) if errors.Is(err, fs.ErrNotExist) { return bootstrap.Bootstrap{}, fmt.Errorf( "%q not found, has the daemon ever been run?", stateDirPath, ) } else if err != nil { return bootstrap.Bootstrap{}, fmt.Errorf("loading %q: %w", stateDirPath, err) } return hostBootstrap, nil } func writeBootstrapToStateDir( stateDirPath string, hostBootstrap bootstrap.Bootstrap, ) error { var ( path = bootstrap.StateDirPath(stateDirPath) 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) }