package daemon import ( "fmt" "isle/bootstrap" "isle/daemon/network" "isle/toolkit" ) func networkStateDir( networksStateDir toolkit.Dir, networkID string, mayExist bool, ) ( toolkit.Dir, error, ) { return networksStateDir.MkChildDir(networkID, mayExist) } func networkRuntimeDir( networksRuntimeDir toolkit.Dir, networkID string, mayExist bool, ) ( toolkit.Dir, error, ) { return networksRuntimeDir.MkChildDir(networkID, mayExist) } func networkDirs( networksStateDir, networksRuntimeDir toolkit.Dir, networkID string, mayExist bool, ) ( stateDir, runtimeDir toolkit.Dir, err error, ) { h := new(toolkit.MkDirHelper) stateDir, _ = h.Maybe( networkStateDir(networksStateDir, networkID, mayExist), ) runtimeDir, _ = h.Maybe( networkRuntimeDir(networksRuntimeDir, networkID, mayExist), ) err = h.Err() return } // LoadableNetworks returns the CreationParams for each Network which is able to // be loaded. func LoadableNetworks( networksStateDir toolkit.Dir, ) ( []bootstrap.CreationParams, error, ) { networkStateDirs, err := networksStateDir.ChildDirs() if err != nil { return nil, fmt.Errorf( "listing children of %q: %w", networksStateDir.Path, err, ) } creationParams := make([]bootstrap.CreationParams, 0, len(networkStateDirs)) for _, networkStateDir := range networkStateDirs { thisCreationParams, err := network.LoadCreationParams(networkStateDir) if err != nil { return nil, fmt.Errorf( "loading creation params from %q: %w", networkStateDir.Path, err, ) } creationParams = append(creationParams, thisCreationParams) } return creationParams, nil }