diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2017-06-02 16:32:15 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2017-06-02 17:59:01 +0900 |
commit | 8bbf9335e13f4d56fd7008757d4a9ead34e6381c (patch) | |
tree | 23fd133228c0edd817e06db1345248ef4f88ec23 /src | |
parent | 159f30b37fb40f391cd97110cef943a290a471ab (diff) |
Restructuring: main package in project root
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile | 119 | ||||
-rw-r--r-- | src/README.md | 106 | ||||
-rw-r--r-- | src/fzf/main.go | 7 |
3 files changed, 0 insertions, 232 deletions
diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index 5205b1c1..00000000 --- a/src/Makefile +++ /dev/null @@ -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 diff --git a/src/README.md b/src/README.md deleted file mode 100644 index ec88ca23..00000000 --- a/src/README.md +++ /dev/null @@ -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 diff --git a/src/fzf/main.go b/src/fzf/main.go deleted file mode 100644 index 29d4767c..00000000 --- a/src/fzf/main.go +++ /dev/null @@ -1,7 +0,0 @@ -package main - -import "github.com/junegunn/fzf/src" - -func main() { - fzf.Run(fzf.ParseOptions()) -} |