Restructuring: main package in project root
This commit is contained in:
parent
159f30b37f
commit
8bbf9335e1
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,5 +1,5 @@
|
|||||||
bin
|
bin/fzf
|
||||||
src/fzf/fzf-*
|
target
|
||||||
pkg
|
pkg
|
||||||
Gemfile.lock
|
Gemfile.lock
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
11
.travis.yml
11
.travis.yml
@ -16,13 +16,6 @@ install:
|
|||||||
- sudo apt-get install -y zsh fish
|
- sudo apt-get install -y zsh fish
|
||||||
|
|
||||||
script: |
|
script: |
|
||||||
export GOPATH=~/go
|
make test install &&
|
||||||
export FZF_BASE=$GOPATH/src/github.com/junegunn/fzf
|
./install --all &&
|
||||||
|
|
||||||
mkdir -p $GOPATH/src/github.com/junegunn
|
|
||||||
ln -s $(pwd) $FZF_BASE
|
|
||||||
|
|
||||||
cd $FZF_BASE/src && make test fzf/fzf-linux_amd64 install &&
|
|
||||||
cd $FZF_BASE/bin && ln -sf fzf-linux_amd64 fzf-$(./fzf --version)-linux_amd64 &&
|
|
||||||
cd $FZF_BASE && yes | ./install && rm -f fzf &&
|
|
||||||
tmux new "ruby test/test_go.rb > out && touch ok" && cat out && [ -e ok ]
|
tmux new "ruby test/test_go.rb > out && touch ok" && cat out && [ -e ok ]
|
||||||
|
13
BUILD.md
13
BUILD.md
@ -10,20 +10,19 @@ Build instructions
|
|||||||
|
|
||||||
### Using Makefile
|
### Using Makefile
|
||||||
|
|
||||||
```sh
|
Makefile will set up and use its own `$GOPATH` under the project root.
|
||||||
# Source files are located in src directory
|
|
||||||
cd src
|
|
||||||
|
|
||||||
# Build fzf binary for your platform in src/fzf
|
```sh
|
||||||
|
# Build fzf binary for your platform in target
|
||||||
make
|
make
|
||||||
|
|
||||||
# Build fzf binary and copy it to bin directory
|
# Build fzf binary and copy it to bin directory
|
||||||
make install
|
make install
|
||||||
|
|
||||||
# Build 32-bit and 64-bit executables and tarballs
|
# Build 32-bit and 64-bit executables and tarballs in target
|
||||||
make release
|
make release
|
||||||
|
|
||||||
# Make release archives for all supported platforms
|
# Make release archives for all supported platforms in target
|
||||||
make release-all
|
make release-all
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -33,7 +32,7 @@ Alternatively, you can build fzf directly with `go get` command without
|
|||||||
manually cloning the repository.
|
manually cloning the repository.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
go get -u github.com/junegunn/fzf/src/fzf
|
go get -u github.com/junegunn/fzf
|
||||||
```
|
```
|
||||||
|
|
||||||
Third-party libraries used
|
Third-party libraries used
|
||||||
|
134
Makefile
Normal file
134
Makefile
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
ifndef GOOS
|
||||||
|
UNAME_S := $(shell uname -s)
|
||||||
|
ifeq ($(UNAME_S),Darwin)
|
||||||
|
GOOS := darwin
|
||||||
|
else ifeq ($(UNAME_S),Linux)
|
||||||
|
GOOS := linux
|
||||||
|
else
|
||||||
|
$(error "$$GOOS is not defined.")
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
||||||
|
GOPATH := $(ROOT_DIR)/gopath
|
||||||
|
SRC_LINK := $(GOPATH)/src/github.com/junegunn/fzf/src
|
||||||
|
VENDOR_LINK := $(GOPATH)/src/github.com/junegunn/fzf/vendor
|
||||||
|
|
||||||
|
GLIDE_YAML := glide.yaml
|
||||||
|
GLIDE_LOCK := glide.lock
|
||||||
|
SOURCES := $(wildcard *.go src/*.go src/*/*.go) $(SRC_LINK) $(VENDOR_LINK) $(GLIDE_LOCK)
|
||||||
|
|
||||||
|
BINARY32 := fzf-$(GOOS)_386
|
||||||
|
BINARY64 := fzf-$(GOOS)_amd64
|
||||||
|
BINARYARM5 := fzf-$(GOOS)_arm5
|
||||||
|
BINARYARM6 := fzf-$(GOOS)_arm6
|
||||||
|
BINARYARM7 := fzf-$(GOOS)_arm7
|
||||||
|
BINARYARM8 := fzf-$(GOOS)_arm8
|
||||||
|
VERSION := $(shell awk -F= '/version =/ {print $$2}' src/constants.go | tr -d "\" ")
|
||||||
|
RELEASE32 := fzf-$(VERSION)-$(GOOS)_386
|
||||||
|
RELEASE64 := fzf-$(VERSION)-$(GOOS)_amd64
|
||||||
|
RELEASEARM5 := fzf-$(VERSION)-$(GOOS)_arm5
|
||||||
|
RELEASEARM6 := fzf-$(VERSION)-$(GOOS)_arm6
|
||||||
|
RELEASEARM7 := fzf-$(VERSION)-$(GOOS)_arm7
|
||||||
|
RELEASEARM8 := fzf-$(VERSION)-$(GOOS)_arm8
|
||||||
|
export GOPATH
|
||||||
|
|
||||||
|
# https://en.wikipedia.org/wiki/Uname
|
||||||
|
UNAME_M := $(shell uname -m)
|
||||||
|
ifeq ($(UNAME_M),x86_64)
|
||||||
|
BINARY := $(BINARY64)
|
||||||
|
else ifeq ($(UNAME_M),amd64)
|
||||||
|
BINARY := $(BINARY64)
|
||||||
|
else ifeq ($(UNAME_M),i686)
|
||||||
|
BINARY := $(BINARY32)
|
||||||
|
else ifeq ($(UNAME_M),i386)
|
||||||
|
BINARY := $(BINARY32)
|
||||||
|
else ifeq ($(UNAME_M),armv5l)
|
||||||
|
BINARY := $(BINARYARM5)
|
||||||
|
else ifeq ($(UNAME_M),armv6l)
|
||||||
|
BINARY := $(BINARYARM6)
|
||||||
|
else ifeq ($(UNAME_M),armv7l)
|
||||||
|
BINARY := $(BINARYARM7)
|
||||||
|
else
|
||||||
|
$(error "Build on $(UNAME_M) is not supported, yet.")
|
||||||
|
endif
|
||||||
|
|
||||||
|
all: target/$(BINARY)
|
||||||
|
|
||||||
|
target:
|
||||||
|
mkdir -p $@
|
||||||
|
|
||||||
|
ifeq ($(GOOS),windows)
|
||||||
|
release: target/$(BINARY32) target/$(BINARY64)
|
||||||
|
cd target && cp -f $(BINARY32) fzf.exe && zip $(RELEASE32).zip bin/fzf.exe
|
||||||
|
cd target && cp -f $(BINARY64) fzf.exe && zip $(RELEASE64).zip bin/fzf.exe
|
||||||
|
cd target && rm -f fzf.exe
|
||||||
|
else ifeq ($(GOOS),linux)
|
||||||
|
release: target/$(BINARY32) target/$(BINARY64) target/$(BINARYARM5) target/$(BINARYARM6) target/$(BINARYARM7) target/$(BINARYARM8)
|
||||||
|
cd target && cp -f $(BINARY32) fzf && tar -czf $(RELEASE32).tgz fzf
|
||||||
|
cd target && cp -f $(BINARY64) fzf && tar -czf $(RELEASE64).tgz fzf
|
||||||
|
cd target && cp -f $(BINARYARM5) fzf && tar -czf $(RELEASEARM5).tgz fzf
|
||||||
|
cd target && cp -f $(BINARYARM6) fzf && tar -czf $(RELEASEARM6).tgz fzf
|
||||||
|
cd target && cp -f $(BINARYARM7) fzf && tar -czf $(RELEASEARM7).tgz fzf
|
||||||
|
cd target && cp -f $(BINARYARM8) fzf && tar -czf $(RELEASEARM8).tgz fzf
|
||||||
|
cd target && rm -f fzf
|
||||||
|
else
|
||||||
|
release: target/$(BINARY32) target/$(BINARY64)
|
||||||
|
cd target && cp -f $(BINARY32) fzf && tar -czf $(RELEASE32).tgz fzf
|
||||||
|
cd target && cp -f $(BINARY64) fzf && tar -czf $(RELEASE64).tgz fzf
|
||||||
|
cd target && rm -f fzf
|
||||||
|
endif
|
||||||
|
|
||||||
|
release-all: clean test
|
||||||
|
GOOS=darwin make release
|
||||||
|
GOOS=linux make release
|
||||||
|
GOOS=freebsd make release
|
||||||
|
GOOS=openbsd make release
|
||||||
|
GOOS=windows make release
|
||||||
|
|
||||||
|
$(SRC_LINK):
|
||||||
|
mkdir -p $(shell dirname $(SRC_LINK))
|
||||||
|
ln -s $(ROOT_DIR)/src $(SRC_LINK)
|
||||||
|
|
||||||
|
$(VENDOR_LINK):
|
||||||
|
mkdir -p $(shell dirname $(VENDOR_LINK))
|
||||||
|
ln -s $(ROOT_DIR)/vendor $(VENDOR_LINK)
|
||||||
|
|
||||||
|
$(GLIDE_LOCK): $(GLIDE_YAML)
|
||||||
|
go get -u github.com/Masterminds/glide && $(GOPATH)/bin/glide install && touch $@
|
||||||
|
|
||||||
|
test: $(SOURCES)
|
||||||
|
SHELL=/bin/sh GOOS= go test -v -tags "$(TAGS)" \
|
||||||
|
github.com/junegunn/fzf/src \
|
||||||
|
github.com/junegunn/fzf/src/algo \
|
||||||
|
github.com/junegunn/fzf/src/tui \
|
||||||
|
github.com/junegunn/fzf/src/util
|
||||||
|
|
||||||
|
install: bin/fzf
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf target
|
||||||
|
|
||||||
|
target/$(BINARY32): $(SOURCES)
|
||||||
|
GOARCH=386 go build -a -ldflags "-w -extldflags=$(LDFLAGS)" -tags "$(TAGS)" -o $@
|
||||||
|
|
||||||
|
target/$(BINARY64): $(SOURCES)
|
||||||
|
GOARCH=amd64 go build -a -ldflags "-w -extldflags=$(LDFLAGS)" -tags "$(TAGS)" -o $@
|
||||||
|
|
||||||
|
# https://github.com/golang/go/wiki/GoArm
|
||||||
|
target/$(BINARYARM5): $(SOURCES)
|
||||||
|
GOARCH=arm GOARM=5 go build -a -ldflags "-w -extldflags=$(LDFLAGS)" -tags "$(TAGS)" -o $@
|
||||||
|
|
||||||
|
target/$(BINARYARM6): $(SOURCES)
|
||||||
|
GOARCH=arm GOARM=6 go build -a -ldflags "-w -extldflags=$(LDFLAGS)" -tags "$(TAGS)" -o $@
|
||||||
|
|
||||||
|
target/$(BINARYARM7): $(SOURCES)
|
||||||
|
GOARCH=arm GOARM=7 go build -a -ldflags "-w -extldflags=$(LDFLAGS)" -tags "$(TAGS)" -o $@
|
||||||
|
|
||||||
|
target/$(BINARYARM8): $(SOURCES)
|
||||||
|
GOARCH=arm64 go build -a -ldflags "-w -extldflags=$(LDFLAGS)" -tags "$(TAGS)" -o $@
|
||||||
|
|
||||||
|
bin/fzf: target/$(BINARY) | bin
|
||||||
|
cp -f target/$(BINARY) bin/fzf
|
||||||
|
|
||||||
|
.PHONY: all release release-all test install clean
|
119
src/Makefile
119
src/Makefile
@ -1,119 +0,0 @@
|
|||||||
ifndef GOOS
|
|
||||||
UNAME_S := $(shell uname -s)
|
|
||||||
ifeq ($(UNAME_S),Darwin)
|
|
||||||
GOOS := darwin
|
|
||||||
else ifeq ($(UNAME_S),Linux)
|
|
||||||
GOOS := linux
|
|
||||||
else
|
|
||||||
$(error "$$GOOS is not defined.")
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
SOURCES := $(wildcard *.go */*.go)
|
|
||||||
ROOTDIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
|
||||||
BINDIR := $(shell dirname $(ROOTDIR))/bin
|
|
||||||
BINARY32 := fzf-$(GOOS)_386
|
|
||||||
BINARY64 := fzf-$(GOOS)_amd64
|
|
||||||
BINARYARM5 := fzf-$(GOOS)_arm5
|
|
||||||
BINARYARM6 := fzf-$(GOOS)_arm6
|
|
||||||
BINARYARM7 := fzf-$(GOOS)_arm7
|
|
||||||
BINARYARM8 := fzf-$(GOOS)_arm8
|
|
||||||
VERSION := $(shell awk -F= '/version =/ {print $$2}' constants.go | tr -d "\" ")
|
|
||||||
RELEASE32 := fzf-$(VERSION)-$(GOOS)_386
|
|
||||||
RELEASE64 := fzf-$(VERSION)-$(GOOS)_amd64
|
|
||||||
RELEASEARM5 := fzf-$(VERSION)-$(GOOS)_arm5
|
|
||||||
RELEASEARM6 := fzf-$(VERSION)-$(GOOS)_arm6
|
|
||||||
RELEASEARM7 := fzf-$(VERSION)-$(GOOS)_arm7
|
|
||||||
RELEASEARM8 := fzf-$(VERSION)-$(GOOS)_arm8
|
|
||||||
|
|
||||||
# https://en.wikipedia.org/wiki/Uname
|
|
||||||
UNAME_M := $(shell uname -m)
|
|
||||||
ifeq ($(UNAME_M),x86_64)
|
|
||||||
BINARY := $(BINARY64)
|
|
||||||
else ifeq ($(UNAME_M),amd64)
|
|
||||||
BINARY := $(BINARY64)
|
|
||||||
else ifeq ($(UNAME_M),i686)
|
|
||||||
BINARY := $(BINARY32)
|
|
||||||
else ifeq ($(UNAME_M),i386)
|
|
||||||
BINARY := $(BINARY32)
|
|
||||||
else ifeq ($(UNAME_M),armv5l)
|
|
||||||
BINARY := $(BINARYARM5)
|
|
||||||
else ifeq ($(UNAME_M),armv6l)
|
|
||||||
BINARY := $(BINARYARM6)
|
|
||||||
else ifeq ($(UNAME_M),armv7l)
|
|
||||||
BINARY := $(BINARYARM7)
|
|
||||||
else
|
|
||||||
$(error "Build on $(UNAME_M) is not supported, yet.")
|
|
||||||
endif
|
|
||||||
|
|
||||||
all: fzf/$(BINARY)
|
|
||||||
|
|
||||||
ifeq ($(GOOS),windows)
|
|
||||||
release: fzf/$(BINARY32) fzf/$(BINARY64)
|
|
||||||
cd fzf && cp -f $(BINARY32) fzf.exe && zip $(RELEASE32).zip fzf.exe
|
|
||||||
cd fzf && cp -f $(BINARY64) fzf.exe && zip $(RELEASE64).zip fzf.exe
|
|
||||||
cd fzf && rm -f fzf.exe
|
|
||||||
else ifeq ($(GOOS),linux)
|
|
||||||
release: fzf/$(BINARY32) fzf/$(BINARY64) fzf/$(BINARYARM5) fzf/$(BINARYARM6) fzf/$(BINARYARM7) fzf/$(BINARYARM8)
|
|
||||||
cd fzf && cp -f $(BINARY32) fzf && tar -czf $(RELEASE32).tgz fzf
|
|
||||||
cd fzf && cp -f $(BINARY64) fzf && tar -czf $(RELEASE64).tgz fzf
|
|
||||||
cd fzf && cp -f $(BINARYARM5) fzf && tar -czf $(RELEASEARM5).tgz fzf
|
|
||||||
cd fzf && cp -f $(BINARYARM6) fzf && tar -czf $(RELEASEARM6).tgz fzf
|
|
||||||
cd fzf && cp -f $(BINARYARM7) fzf && tar -czf $(RELEASEARM7).tgz fzf
|
|
||||||
cd fzf && cp -f $(BINARYARM8) fzf && tar -czf $(RELEASEARM8).tgz fzf
|
|
||||||
cd fzf && rm -f fzf
|
|
||||||
else
|
|
||||||
release: fzf/$(BINARY32) fzf/$(BINARY64)
|
|
||||||
cd fzf && cp -f $(BINARY32) fzf && tar -czf $(RELEASE32).tgz fzf
|
|
||||||
cd fzf && cp -f $(BINARY64) fzf && tar -czf $(RELEASE64).tgz fzf
|
|
||||||
cd fzf && rm -f fzf
|
|
||||||
endif
|
|
||||||
|
|
||||||
release-all: clean test
|
|
||||||
GOOS=darwin make release
|
|
||||||
GOOS=linux make release
|
|
||||||
GOOS=freebsd make release
|
|
||||||
GOOS=openbsd make release
|
|
||||||
GOOS=windows make release
|
|
||||||
|
|
||||||
deps: $(SOURCES)
|
|
||||||
cd .. && go get -u github.com/Masterminds/glide && $(GOPATH)/bin/glide install
|
|
||||||
|
|
||||||
test: deps
|
|
||||||
SHELL=/bin/sh GOOS= go test -v -tags "$(TAGS)" ./...
|
|
||||||
|
|
||||||
install: $(BINDIR)/fzf
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
rm -f $(BINDIR)/fzf $(BINDIR)/$(BINARY)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
cd fzf && rm -f fzf-*
|
|
||||||
|
|
||||||
fzf/$(BINARY32): deps
|
|
||||||
cd fzf && GOARCH=386 go build -a -ldflags "-w -extldflags=$(LDFLAGS)" -tags "$(TAGS)" -o $(BINARY32)
|
|
||||||
|
|
||||||
fzf/$(BINARY64): deps
|
|
||||||
cd fzf && GOARCH=amd64 go build -a -ldflags "-w -extldflags=$(LDFLAGS)" -tags "$(TAGS)" -o $(BINARY64)
|
|
||||||
|
|
||||||
# https://github.com/golang/go/wiki/GoArm
|
|
||||||
fzf/$(BINARYARM5): deps
|
|
||||||
cd fzf && GOARCH=arm GOARM=5 go build -a -ldflags "-w -extldflags=$(LDFLAGS)" -tags "$(TAGS)" -o $(BINARYARM5)
|
|
||||||
|
|
||||||
fzf/$(BINARYARM6): deps
|
|
||||||
cd fzf && GOARCH=arm GOARM=6 go build -a -ldflags "-w -extldflags=$(LDFLAGS)" -tags "$(TAGS)" -o $(BINARYARM6)
|
|
||||||
|
|
||||||
fzf/$(BINARYARM7): deps
|
|
||||||
cd fzf && GOARCH=arm GOARM=7 go build -a -ldflags "-w -extldflags=$(LDFLAGS)" -tags "$(TAGS)" -o $(BINARYARM7)
|
|
||||||
|
|
||||||
fzf/$(BINARYARM8): deps
|
|
||||||
cd fzf && GOARCH=arm64 go build -a -ldflags "-w -extldflags=$(LDFLAGS)" -tags "$(TAGS)" -o $(BINARYARM8)
|
|
||||||
|
|
||||||
$(BINDIR)/fzf: fzf/$(BINARY) | $(BINDIR)
|
|
||||||
cp -f fzf/$(BINARY) $(BINDIR)
|
|
||||||
cd $(BINDIR) && ln -sf $(BINARY) fzf
|
|
||||||
|
|
||||||
$(BINDIR):
|
|
||||||
mkdir -p $@
|
|
||||||
|
|
||||||
.PHONY: all deps release release-all test install uninstall clean
|
|
106
src/README.md
106
src/README.md
@ -1,106 +0,0 @@
|
|||||||
fzf in Go
|
|
||||||
=========
|
|
||||||
|
|
||||||
<img src="https://cloud.githubusercontent.com/assets/700826/5725028/028ea834-9b93-11e4-9198-43088c3f295d.gif" height="463" alt="fzf in go">
|
|
||||||
|
|
||||||
This directory contains the source code for the new fzf implementation in
|
|
||||||
[Go][go].
|
|
||||||
|
|
||||||
Upgrade from Ruby version
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
The install script has been updated to download the right binary for your
|
|
||||||
system. If you already have installed fzf, simply git-pull the repository and
|
|
||||||
rerun the install script.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cd ~/.fzf
|
|
||||||
git pull
|
|
||||||
./install
|
|
||||||
```
|
|
||||||
|
|
||||||
Otherwise, follow [the instruction][install] as before. You can also install
|
|
||||||
fzf using Homebrew if you prefer that way.
|
|
||||||
|
|
||||||
Motivations
|
|
||||||
-----------
|
|
||||||
|
|
||||||
### No Ruby dependency
|
|
||||||
|
|
||||||
There have always been complaints about fzf being a Ruby script. To make
|
|
||||||
matters worse, Ruby 2.1 removed ncurses binding from its standard libary.
|
|
||||||
Because of the change, users running Ruby 2.1 or above are forced to build C
|
|
||||||
extensions of curses gem to meet the requirement of fzf. The new Go version
|
|
||||||
will be distributed as an executable binary so it will be much more accessible
|
|
||||||
and should be easier to setup.
|
|
||||||
|
|
||||||
### Performance
|
|
||||||
|
|
||||||
Many people have been surprised to see how fast fzf is even when it was
|
|
||||||
written in Ruby. It stays quite responsive even for 100k+ lines, which is
|
|
||||||
well above the size of the usual input.
|
|
||||||
|
|
||||||
The new Go version, of course, is significantly faster than that. It has all
|
|
||||||
the performance optimization techniques used in Ruby implementation and more.
|
|
||||||
It also doesn't suffer from [GIL][gil], so the search performance scales
|
|
||||||
proportional to the number of CPU cores. On my MacBook Pro (Mid 2012), the new
|
|
||||||
version was shown to be an order of magnitude faster on certain cases. It also
|
|
||||||
starts much faster though the difference may not be noticeable.
|
|
||||||
|
|
||||||
Build
|
|
||||||
-----
|
|
||||||
|
|
||||||
See [BUILD.md](../BUILD.md)
|
|
||||||
|
|
||||||
Test
|
|
||||||
----
|
|
||||||
|
|
||||||
Unit tests can be run with `make test`. Integration tests are written in Ruby
|
|
||||||
script that should be run on tmux.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cd src
|
|
||||||
|
|
||||||
# Unit tests
|
|
||||||
make test
|
|
||||||
|
|
||||||
# Integration tests
|
|
||||||
ruby ../test/test_go.rb
|
|
||||||
|
|
||||||
# Build binary for the platform
|
|
||||||
make
|
|
||||||
|
|
||||||
# Install the executable to ../bin directory
|
|
||||||
make install
|
|
||||||
|
|
||||||
# Make release archives
|
|
||||||
make release
|
|
||||||
|
|
||||||
# Make release archives for all supported platforms
|
|
||||||
make release-all
|
|
||||||
```
|
|
||||||
|
|
||||||
Third-party libraries used
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
- ~[ncurses][ncurses]~
|
|
||||||
- [mattn/go-runewidth](https://github.com/mattn/go-runewidth)
|
|
||||||
- Licensed under [MIT](http://mattn.mit-license.org)
|
|
||||||
- [mattn/go-shellwords](https://github.com/mattn/go-shellwords)
|
|
||||||
- Licensed under [MIT](http://mattn.mit-license.org)
|
|
||||||
- [mattn/go-isatty](https://github.com/mattn/go-isatty)
|
|
||||||
- Licensed under [MIT](http://mattn.mit-license.org)
|
|
||||||
- [tcell](https://github.com/gdamore/tcell)
|
|
||||||
- Licensed under [Apache License 2.0](https://github.com/gdamore/tcell/blob/master/LICENSE)
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
[MIT](LICENSE)
|
|
||||||
|
|
||||||
[install]: https://github.com/junegunn/fzf#installation
|
|
||||||
[go]: https://golang.org/
|
|
||||||
[gil]: http://en.wikipedia.org/wiki/Global_Interpreter_Lock
|
|
||||||
[ncurses]: https://www.gnu.org/software/ncurses/
|
|
||||||
[req]: http://golang.org/doc/install
|
|
||||||
[tcell]: https://github.com/gdamore/tcell
|
|
Loading…
Reference in New Issue
Block a user