Skip to content

Commit 091b082

Browse files
author
Maxim Shpak
committed
Implement BASH completion
Known limitations: 1. Does not work correctly if there is 2 (or more) tags with spaces in them and the parts before the spaces match (e.g. "space tag1" and "space tag2"); 2. Subcommand 'tag' is not completed correctly if options '-f/--from/-t/--tags/-w/--where' are not last; 3. Subcommand 'untag' is not completed correctly if option '-t/--tags' is not last; 4. Completion of subcommands 'files' and 'tag' (which can use queries) does not show operators in queries because some of them are not completed correctly (or at all) so they should be entered by hand.
1 parent 1e6dab9 commit 091b082

File tree

2 files changed

+874
-88
lines changed

2 files changed

+874
-88
lines changed

Makefile

+94-88
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,94 @@
1-
# installation paths
2-
INSTALL_DIR=$(DESTDIR)/usr/bin
3-
MOUNT_INSTALL_DIR=$(DESTDIR)/usr/sbin
4-
MAN_INSTALL_DIR=$(DESTDIR)/usr/share/man/man1
5-
ZSH_COMP_INSTALL_DIR=$(DESTDIR)/usr/share/zsh/site-functions
6-
7-
# other vars
8-
VER=$(shell grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+" src/github.com/oniony/TMSU/version/version.go)
9-
SHELL=/bin/sh
10-
ARCH=$(shell uname -m)
11-
DIST_NAME=tmsu-$(ARCH)-$(VER)
12-
DIST_DIR=$(DIST_NAME)
13-
DIST_FILE=$(DIST_NAME).tgz
14-
15-
export GOPATH ?= /usr/lib/go:/usr/share/gocode
16-
export GOPATH := $(CURDIR):$(GOPATH)
17-
18-
all: clean compile dist test
19-
20-
clean:
21-
@echo
22-
@echo "CLEANING"
23-
@echo
24-
go clean github.com/oniony/TMSU
25-
rm -Rf bin
26-
rm -Rf $(DIST_DIR)
27-
rm -f $(DIST_FILE)
28-
29-
compile:
30-
@echo
31-
@echo "COMPILING"
32-
@echo
33-
@mkdir -p bin
34-
go build -o bin/tmsu github.com/oniony/TMSU
35-
36-
test: unit-test integration-test
37-
38-
unit-test: compile
39-
@echo
40-
@echo "RUNNING UNIT TESTS"
41-
@echo
42-
go test github.com/oniony/TMSU/...
43-
44-
integration-test: compile
45-
@echo
46-
@echo "RUNNING INTEGRATION TESTS"
47-
@echo
48-
@cd tests && ./runall
49-
50-
dist: compile
51-
@echo
52-
@echo "PACKAGING DISTRIBUTABLE"
53-
@echo
54-
@mkdir -p $(DIST_DIR)
55-
@mkdir -p $(DIST_DIR)/bin
56-
@mkdir -p $(DIST_DIR)/man
57-
@mkdir -p $(DIST_DIR)/misc/zsh
58-
cp -R bin -t $(DIST_DIR)
59-
cp README.md -t $(DIST_DIR)
60-
cp COPYING.md -t $(DIST_DIR)
61-
cp misc/bin/* -t $(DIST_DIR)/bin/
62-
gzip -fc misc/man/tmsu.1 >$(DIST_DIR)/man/tmsu.1.gz
63-
cp misc/zsh/_tmsu -t $(DIST_DIR)/misc/zsh/
64-
tar czf $(DIST_FILE) $(DIST_DIR)
65-
66-
install:
67-
@echo
68-
@echo "INSTALLING"
69-
@echo
70-
mkdir -p $(INSTALL_DIR)
71-
mkdir -p $(MOUNT_INSTALL_DIR)
72-
mkdir -p $(MAN_INSTALL_DIR)
73-
mkdir -p $(ZSH_COMP_INSTALL_DIR)
74-
cp bin/tmsu -t $(INSTALL_DIR)
75-
cp misc/bin/mount.tmsu -t $(MOUNT_INSTALL_DIR)
76-
cp misc/bin/tmsu-* -t $(INSTALL_DIR)
77-
gzip -fc misc/man/tmsu.1 >$(MAN_INSTALL_DIR)/tmsu.1.gz
78-
cp misc/zsh/_tmsu -t $(ZSH_COMP_INSTALL_DIR)
79-
80-
uninstall:
81-
@echo "UNINSTALLING"
82-
rm $(INSTALL_DIR)/tmsu
83-
rm $(MOUNT_INSTALL_DIR)/mount.tmsu
84-
rm $(INSTALL_DIR)/tmsu-*
85-
rm $(MAN_INSTALL_DIR)/tmsu.1.gz
86-
rm $(ZSH_COMP_INSTALL_DIR)/_tmsu
87-
88-
.PHONY: all clean compile test unit-test integration-test dist install uninstall
1+
# installation paths
2+
INSTALL_DIR=$(DESTDIR)/usr/bin
3+
MOUNT_INSTALL_DIR=$(DESTDIR)/usr/sbin
4+
MAN_INSTALL_DIR=$(DESTDIR)/usr/share/man/man1
5+
ZSH_COMP_INSTALL_DIR=$(DESTDIR)/usr/share/zsh/site-functions
6+
BASH_COMP_INSTALL_DIR=$(DESTDIR)/etc/bash_completion.d
7+
8+
# other vars
9+
VER=$(shell grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+" src/github.com/oniony/TMSU/version/version.go)
10+
SHELL=/bin/sh
11+
ARCH=$(shell uname -m)
12+
DIST_NAME=tmsu-$(ARCH)-$(VER)
13+
DIST_DIR=$(DIST_NAME)
14+
DIST_FILE=$(DIST_NAME).tgz
15+
16+
export GOPATH ?= /usr/lib/go:/usr/share/gocode
17+
export GOPATH := $(CURDIR):$(GOPATH)
18+
19+
all: clean compile dist test
20+
21+
clean:
22+
@echo
23+
@echo "CLEANING"
24+
@echo
25+
go clean github.com/oniony/TMSU
26+
rm -Rf bin
27+
rm -Rf $(DIST_DIR)
28+
rm -f $(DIST_FILE)
29+
30+
compile:
31+
@echo
32+
@echo "COMPILING"
33+
@echo
34+
@mkdir -p bin
35+
go build -o bin/tmsu github.com/oniony/TMSU
36+
37+
test: unit-test integration-test
38+
39+
unit-test: compile
40+
@echo
41+
@echo "RUNNING UNIT TESTS"
42+
@echo
43+
go test github.com/oniony/TMSU/...
44+
45+
integration-test: compile
46+
@echo
47+
@echo "RUNNING INTEGRATION TESTS"
48+
@echo
49+
@cd tests && ./runall
50+
51+
dist: compile
52+
@echo
53+
@echo "PACKAGING DISTRIBUTABLE"
54+
@echo
55+
@mkdir -p $(DIST_DIR)
56+
@mkdir -p $(DIST_DIR)/bin
57+
@mkdir -p $(DIST_DIR)/man
58+
@mkdir -p $(DIST_DIR)/misc/zsh
59+
@mkdir -p $(DIST_DIR)/misc/bash
60+
cp -R bin -t $(DIST_DIR)
61+
cp README.md -t $(DIST_DIR)
62+
cp COPYING.md -t $(DIST_DIR)
63+
cp misc/bin/* -t $(DIST_DIR)/bin/
64+
gzip -fc misc/man/tmsu.1 >$(DIST_DIR)/man/tmsu.1.gz
65+
cp misc/zsh/_tmsu -t $(DIST_DIR)/misc/zsh/
66+
cp misc/bash/tmsu -t $(DIST_DIR)/misc/bash/
67+
tar czf $(DIST_FILE) $(DIST_DIR)
68+
69+
install:
70+
@echo
71+
@echo "INSTALLING"
72+
@echo
73+
mkdir -p $(INSTALL_DIR)
74+
mkdir -p $(MOUNT_INSTALL_DIR)
75+
mkdir -p $(MAN_INSTALL_DIR)
76+
mkdir -p $(ZSH_COMP_INSTALL_DIR)
77+
mkdir -p $(BASH_COMP_INSTALL_DIR)
78+
cp bin/tmsu -t $(INSTALL_DIR)
79+
cp misc/bin/mount.tmsu -t $(MOUNT_INSTALL_DIR)
80+
cp misc/bin/tmsu-* -t $(INSTALL_DIR)
81+
gzip -fc misc/man/tmsu.1 >$(MAN_INSTALL_DIR)/tmsu.1.gz
82+
cp misc/zsh/_tmsu -t $(ZSH_COMP_INSTALL_DIR)
83+
cp misc/bash/tmsu -t $(BASH_COMP_INSTALL_DIR)
84+
85+
uninstall:
86+
@echo "UNINSTALLING"
87+
rm $(INSTALL_DIR)/tmsu
88+
rm $(MOUNT_INSTALL_DIR)/mount.tmsu
89+
rm $(INSTALL_DIR)/tmsu-*
90+
rm $(MAN_INSTALL_DIR)/tmsu.1.gz
91+
rm $(ZSH_COMP_INSTALL_DIR)/_tmsu
92+
rm $(BASH_COMP_INSTALL_DIR)/tmsu
93+
94+
.PHONY: all clean compile test unit-test integration-test dist install uninstall

0 commit comments

Comments
 (0)