mirror of
https://github.com/junegunn/fzf.git
synced 2025-11-18 08:13:40 -05:00
Refactor the code so that fzf can be used as a library (#3769)
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"os"
|
||||
"sync"
|
||||
)
|
||||
|
||||
@@ -25,14 +24,5 @@ func RunAtExitFuncs() {
|
||||
for i := len(fns) - 1; i >= 0; i-- {
|
||||
fns[i]()
|
||||
}
|
||||
}
|
||||
|
||||
// Exit executes any functions registered with AtExit() then exits the program
|
||||
// with os.Exit(code).
|
||||
//
|
||||
// NOTE: It must be used instead of os.Exit() since calling os.Exit() terminates
|
||||
// the program before any of the AtExit functions can run.
|
||||
func Exit(code int) {
|
||||
defer os.Exit(code)
|
||||
RunAtExitFuncs()
|
||||
atExitFuncs = nil
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ func (x *Executor) Become(stdin *os.File, environ []string, command string) {
|
||||
shellPath, err := exec.LookPath(x.shell)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "fzf (become): %s\n", err.Error())
|
||||
Exit(127)
|
||||
os.Exit(127)
|
||||
}
|
||||
args := append([]string{shellPath}, append(x.args, command)...)
|
||||
SetStdin(stdin)
|
||||
|
||||
@@ -97,15 +97,15 @@ func (x *Executor) Become(stdin *os.File, environ []string, command string) {
|
||||
err := cmd.Start()
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "fzf (become): %s\n", err.Error())
|
||||
Exit(127)
|
||||
os.Exit(127)
|
||||
}
|
||||
err = cmd.Wait()
|
||||
if err != nil {
|
||||
if exitError, ok := err.(*exec.ExitError); ok {
|
||||
Exit(exitError.ExitCode())
|
||||
os.Exit(exitError.ExitCode())
|
||||
}
|
||||
}
|
||||
Exit(0)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
func escapeArg(s string) string {
|
||||
|
||||
Reference in New Issue
Block a user