mirror of
https://github.com/junegunn/fzf.git
synced 2025-11-08 11:23:47 -05:00
feat: add make fmt for *.sh *.bash
1. add .editorconfig file, add rules for .sh .bash files.
2. add make fmt target, use:
- gofmt *.go.
- shfmt *.sh *.bash, shell/completion.bash, shell/key-bindings.bash
need a left indent due to an outermost if block.
3. add shfmt check for bash scripts in make lint target.
4. install shfmt in actions.
This commit is contained in:
20
.editorconfig
Normal file
20
.editorconfig
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*.{sh,bash}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
simplify = true
|
||||||
|
binary_next_line = true
|
||||||
|
switch_case_indent = true
|
||||||
|
space_redirects = true
|
||||||
|
function_next_line = false
|
||||||
|
|
||||||
|
# also bash scripts.
|
||||||
|
[{install,uninstall,bin/fzf-preview.sh,bin/fzf-tmux}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
simplify = true
|
||||||
|
binary_next_line = true
|
||||||
|
switch_case_indent = true
|
||||||
|
space_redirects = true
|
||||||
|
function_next_line = false
|
||||||
2
.github/workflows/linux.yml
vendored
2
.github/workflows/linux.yml
vendored
@@ -33,7 +33,7 @@ jobs:
|
|||||||
ruby-version: 3.4.1
|
ruby-version: 3.4.1
|
||||||
|
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: sudo apt-get install --yes zsh fish tmux
|
run: sudo apt-get install --yes zsh fish tmux shfmt
|
||||||
|
|
||||||
- name: Install Ruby gems
|
- name: Install Ruby gems
|
||||||
run: bundle install
|
run: bundle install
|
||||||
|
|||||||
2
.github/workflows/macos.yml
vendored
2
.github/workflows/macos.yml
vendored
@@ -30,7 +30,7 @@ jobs:
|
|||||||
ruby-version: 3.0.0
|
ruby-version: 3.0.0
|
||||||
|
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: HOMEBREW_NO_INSTALL_CLEANUP=1 brew install fish zsh tmux
|
run: HOMEBREW_NO_INSTALL_CLEANUP=1 brew install fish zsh tmux shfmt
|
||||||
|
|
||||||
- name: Install Ruby gems
|
- name: Install Ruby gems
|
||||||
run: gem install --no-document minitest:5.14.2 rubocop:1.0.0 rubocop-minitest:0.10.1 rubocop-performance:1.8.1
|
run: gem install --no-document minitest:5.14.2 rubocop:1.0.0 rubocop-minitest:0.10.1 rubocop-performance:1.8.1
|
||||||
|
|||||||
24
Makefile
24
Makefile
@@ -5,6 +5,15 @@ MAKEFILE := $(realpath $(lastword $(MAKEFILE_LIST)))
|
|||||||
ROOT_DIR := $(shell dirname $(MAKEFILE))
|
ROOT_DIR := $(shell dirname $(MAKEFILE))
|
||||||
SOURCES := $(wildcard *.go src/*.go src/*/*.go shell/*sh man/man1/*.1) $(MAKEFILE)
|
SOURCES := $(wildcard *.go src/*.go src/*/*.go shell/*sh man/man1/*.1) $(MAKEFILE)
|
||||||
|
|
||||||
|
BASH_SCRIPTS := $(ROOT_DIR)/bin/fzf-preview.sh \
|
||||||
|
$(ROOT_DIR)/bin/fzf-tmux \
|
||||||
|
$(ROOT_DIR)/install \
|
||||||
|
$(ROOT_DIR)/uninstall \
|
||||||
|
$(ROOT_DIR)/shell/common.sh \
|
||||||
|
$(ROOT_DIR)/shell/update-common.sh
|
||||||
|
BASH_SCRIPTS_INDENT_LEFT := $(ROOT_DIR)/shell/completion.bash \
|
||||||
|
$(ROOT_DIR)/shell/key-bindings.bash
|
||||||
|
|
||||||
ifdef FZF_VERSION
|
ifdef FZF_VERSION
|
||||||
VERSION := $(FZF_VERSION)
|
VERSION := $(FZF_VERSION)
|
||||||
else
|
else
|
||||||
@@ -88,9 +97,20 @@ itest:
|
|||||||
bench:
|
bench:
|
||||||
cd src && SHELL=/bin/sh GOOS= $(GO) test -v -tags "$(TAGS)" -run=Bench -bench=. -benchmem
|
cd src && SHELL=/bin/sh GOOS= $(GO) test -v -tags "$(TAGS)" -run=Bench -bench=. -benchmem
|
||||||
|
|
||||||
lint: $(SOURCES) test/*.rb test/lib/*.rb
|
lint: $(SOURCES) test/*.rb test/lib/*.rb ${BASH_SCRIPTS}
|
||||||
[ -z "$$(gofmt -s -d src)" ] || (gofmt -s -d src; exit 1)
|
[ -z "$$(gofmt -s -d src)" ] || (gofmt -s -d src; exit 1)
|
||||||
bundle exec rubocop -a --require rubocop-minitest --require rubocop-performance
|
bundle exec rubocop -a --require rubocop-minitest --require rubocop-performance
|
||||||
|
[ -z "$$(shfmt -d $(BASH_SCRIPTS))" ] || (echo "format bash files by (make fmt)"; exit 1)
|
||||||
|
|
||||||
|
fmt: $(SOURCES) $(BASH_SCRIPTS) $(BASH_SCRIPTS_INDENT_LEFT)
|
||||||
|
gofmt -s -w src
|
||||||
|
shfmt -w $(BASH_SCRIPTS)
|
||||||
|
# shift left because we have an outermost if block for historical reasons.
|
||||||
|
for f in $(BASH_SCRIPTS_INDENT_LEFT); do \
|
||||||
|
shfmt -w "$$f"; \
|
||||||
|
tmp=$$(mktemp); \
|
||||||
|
sed 's/^ //' "$$f" > "$$tmp" && mv "$$tmp" "$$f"; \
|
||||||
|
done
|
||||||
|
|
||||||
install: bin/fzf
|
install: bin/fzf
|
||||||
|
|
||||||
@@ -189,4 +209,4 @@ update:
|
|||||||
$(GO) get -u
|
$(GO) get -u
|
||||||
$(GO) mod tidy
|
$(GO) mod tidy
|
||||||
|
|
||||||
.PHONY: all generate build release test itest bench lint install clean docker docker-test update
|
.PHONY: all generate build release test itest bench lint install clean docker docker-test update fmt
|
||||||
|
|||||||
Reference in New Issue
Block a user