func tryLocal(ctx context.Context) (Shell, error) { repoPath, err := getRepoPath() if err != nil { return nil, err } node, err := embedded.NewDefaultNodeWithFSRepo(ctx, repoPath) if err != nil { return nil, fmt.Errorf("couldn't get embedded shell: %s", err) } return embedded.NewShell(node), nil }
func NewEmbeddedShell() (Shell, error) { ctx, cancel := context.WithCancel(context.Background()) // Cancel the ipfs node context if the process gets interrupted or killed. // TODO(noffle): is this needed? go func() { interrupts := make(chan os.Signal, 1) signal.Notify(interrupts, os.Interrupt, os.Kill) <-interrupts cancel() }() shell, err := tryLocal(ctx) if err == nil { return shell, nil } node, err := embedded.NewTmpDirNode(ctx) if err != nil { return nil, err } return embedded.NewShell(node), nil }