-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprettier.mk
More file actions
102 lines (83 loc) · 3.93 KB
/
prettier.mk
File metadata and controls
102 lines (83 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
SHELL := /bin/bash -euo pipefail
define PRETTIER_HELP
REQUIREMENTS:
- prettier : `prettier` command must be available.
- npm : `npm` command must be available for `prettier-install`.
TARGETS:
- prettier-help : show help message.
- prettier-install : install prettier using `npm -g`.
- prettier : run prettier command with given args.
- prettier-run : run prettier.
VARIABLES [default value]:
- PRETTIER_CMD : prettier binary path. [prettier]
- PRETTIER_VERSION : prettier version to install. [latest]
- PRETTIER_TARGET : target of prettier. ["**/*.{md,yaml,yml,json,xml,toml,js,jsx,ts,html,css}"]
- PRETTIER_OPTION : prettier command line option. [--write]
REFERENCES:
- https://prettier.io/
- https://github.com/prettier/prettier
- https://www.npmjs.com/package/prettier
IDE INTEGRATIONS:
- VSCode : https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode
- JetBrains : https://plugins.jetbrains.com/plugin/10456-prettier
- Others? : https://prettier.io/docs/editors
PROJECT STRUCTURE:
/ |-- Project
├─ _scripts/ |-- Git submodule
│ └─ makefiles/ |
│ └─ prettier.mk |
├─ .prettierrc.yaml |-- Config file
└─ Makefile |-- include _scripts/makefiles/prettier.mk
endef
.PHONY: prettier-help
prettier-help:
$(info $(PRETTIER_HELP))
@echo ""
#├─────────────────────────────────────────────────────────────────────────────┤
PRETTIER_CMD ?= prettier
PRETTIER_VERSION ?= latest
PRETTIER_TARGET ?= "**/*.{md,yaml,yml,json,toml,js,jsx,ts,html,css}"
PRETTIER_OPTION ?= --check
#├─────────────────────────────────────────────────────────────────────────────┤
.PHONY: prettier-install-usage
prettier-install-usage:
# Usage : make prettier-install ARGS=""
# Exec : npm install -g "prettier@$$(PRETTIER_VERSION)"
# Desc : Install prettier using `npm -g`.
# Examples:
# - make prettier-install
# - make prettier-install PRETTIER_VERSION="next"
.PHONY: prettier-install
prettier-install:
ifeq ("prettier-install","$(MAKECMDGOALS)")
npm install -g "prettier@$(PRETTIER_VERSION)"
else
ifeq (,$(shell which $(PRETTIER_CMD) 2>/dev/null))
npm install -g "prettier@$(PRETTIER_VERSION)"
endif
endif
#├─────────────────────────────────────────────────────────────────────────────┤
.PHONY: prettier-usage
prettier-usage:
# Usage : make prettier ARGS=""
# Exec : $$(PRETTIER_CMD) $$(ARGS)
# Desc : Run prettier with given arguments.
# Examples:
# - make prettier ARGS="--version"
# - make prettier ARGS="--help"
.PHONY: prettier
prettier: prettier-install
$(PRETTIER_CMD) $(ARGS)
#├─────────────────────────────────────────────────────────────────────────────┤
.PHONY: prettier-run-usage
prettier-run-usage:
# Usage : make prettier-run ARGS=""
# Exec : $$(PRETTIER_CMD) $$(ARGS) $$(PRETTIER_OPTION) $$(PRETTIER_TARGET)
# Desc : Run prettier for the specified targets.
# Examples:
# - make prettier-run
# - make prettier-run ARGS="--write"
.PHONY: prettier-run
prettier-run: prettier-install
$(PRETTIER_CMD) $(ARGS) $(PRETTIER_OPTION) $(PRETTIER_TARGET)
#├─────────────────────────────────────────────────────────────────────────────┤