Skip to content

Commit 49f9d2e

Browse files
committed
Gracefully handle environments without native binaries
Signed-off-by: Thomas Stromberg <[email protected]>
1 parent 9b6f0db commit 49f9d2e

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

Makefile

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@ SHELLCHECK_VERSION ?= v0.8.0
2424
SHELLCHECK_BIN := out/linters/shellcheck-$(SHELLCHECK_VERSION)-$(LINT_ARCH)
2525
$(SHELLCHECK_BIN):
2626
mkdir -p out/linters
27-
rm -rf out/linters/shellcheck-*
28-
curl -sSfL https://github.com/koalaman/shellcheck/releases/download/$(SHELLCHECK_VERSION)/shellcheck-$(SHELLCHECK_VERSION).$(LINT_OS_LOWER).$(LINT_ARCH).tar.xz | tar -C out/linters -xJf -
29-
mv out/linters/shellcheck-$(SHELLCHECK_VERSION)/shellcheck $@
30-
rm -rf out/linters/shellcheck-$(SHELLCHECK_VERSION)/shellcheck
27+
curl -sSfL -o $@.tar.xz https://github.com/koalaman/shellcheck/releases/download/$(SHELLCHECK_VERSION)/shellcheck-$(SHELLCHECK_VERSION).$(LINT_OS_LOWER).$(LINT_ARCH).tar.xz \
28+
|| echo "Unable to fetch shellcheck for $(LINT_OS)/$(LINT_ARCH): falling back to locally install"
29+
test -f $@.tar.xz \
30+
&& tar -C out/linters -xJf $@.tar.xz \
31+
&& mv out/linters/shellcheck-$(SHELLCHECK_VERSION)/shellcheck $@ \
32+
|| printf "#!/usr/bin/env shellcheck\n" > $@
33+
chmod u+x $@
3134

3235
LINTERS += shellcheck-lint
3336
shellcheck-lint: $(SHELLCHECK_BIN)
@@ -41,8 +44,9 @@ HADOLINT_VERSION ?= v2.8.0
4144
HADOLINT_BIN := out/linters/hadolint-$(HADOLINT_VERSION)-$(LINT_ARCH)
4245
$(HADOLINT_BIN):
4346
mkdir -p out/linters
44-
rm -rf out/linters/hadolint-*
45-
curl -sfL https://github.com/hadolint/hadolint/releases/download/v2.6.1/hadolint-$(LINT_OS)-$(LINT_ARCH) > $@
47+
curl -o $@.dl -sfL https://github.com/hadolint/hadolint/releases/download/$(HADOLINT_VERSION)/hadolint-$(LINT_OS)-$(LINT_ARCH) \
48+
|| echo "Unable to fetch hadolint for $(LINT_OS)/$(LINT_ARCH), falling back to local install"
49+
test -f $@.dl && mv $(HADOLINT_BIN).dl $@ || printf "#!/usr/bin/env hadolint\n" > $@
4650
chmod u+x $@
4751

4852
LINTERS += hadolint-lint
@@ -73,7 +77,7 @@ $(YAMLLINT_BIN):
7377
mkdir -p out/linters
7478
rm -rf out/linters/yamllint-*
7579
curl -sSfL https://github.com/adrienverge/yamllint/archive/refs/tags/v$(YAMLLINT_VERSION).tar.gz | tar -C out/linters -zxf -
76-
cd $(YAMLLINT_ROOT) && pip3 install --target dist .
80+
cd $(YAMLLINT_ROOT) && pip3 install --target dist . || pip install --target dist .
7781

7882
LINTERS += yamllint-lint
7983
yamllint-lint: $(YAMLLINT_BIN)

Makefile.tmpl

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,13 @@ SHELLCHECK_VERSION ?= v0.8.0
2525
SHELLCHECK_BIN := out/linters/shellcheck-$(SHELLCHECK_VERSION)-$(LINT_ARCH)
2626
$(SHELLCHECK_BIN):
2727
mkdir -p out/linters
28-
rm -rf out/linters/shellcheck-*
29-
curl -sSfL https://github.com/koalaman/shellcheck/releases/download/$(SHELLCHECK_VERSION)/shellcheck-$(SHELLCHECK_VERSION).$(LINT_OS_LOWER).$(LINT_ARCH).tar.xz | tar -C out/linters -xJf -
30-
mv out/linters/shellcheck-$(SHELLCHECK_VERSION)/shellcheck $@
31-
rm -rf out/linters/shellcheck-$(SHELLCHECK_VERSION)/shellcheck
28+
curl -sSfL -o [email protected] https://github.com/koalaman/shellcheck/releases/download/$(SHELLCHECK_VERSION)/shellcheck-$(SHELLCHECK_VERSION).$(LINT_OS_LOWER).$(LINT_ARCH).tar.xz \
29+
|| echo "Unable to fetch shellcheck for $(LINT_OS)/$(LINT_ARCH): falling back to locally install"
30+
31+
&& tar -C out/linters -xJf [email protected] \
32+
&& mv out/linters/shellcheck-$(SHELLCHECK_VERSION)/shellcheck $@ \
33+
|| printf "#!/usr/bin/env shellcheck\n" > $@
34+
chmod u+x $@
3235

3336
LINTERS += shellcheck-lint
3437
shellcheck-lint: $(SHELLCHECK_BIN)
@@ -45,8 +48,9 @@ HADOLINT_VERSION ?= v2.8.0
4548
HADOLINT_BIN := out/linters/hadolint-$(HADOLINT_VERSION)-$(LINT_ARCH)
4649
$(HADOLINT_BIN):
4750
mkdir -p out/linters
48-
rm -rf out/linters/hadolint-*
49-
curl -sfL https://github.com/hadolint/hadolint/releases/download/v2.6.1/hadolint-$(LINT_OS)-$(LINT_ARCH) > $@
51+
curl -o [email protected] -sfL https://github.com/hadolint/hadolint/releases/download/$(HADOLINT_VERSION)/hadolint-$(LINT_OS)-$(LINT_ARCH) \
52+
|| echo "Unable to fetch hadolint for $(LINT_OS)/$(LINT_ARCH), falling back to local install"
53+
test -f [email protected] && mv $(HADOLINT_BIN).dl $@ || printf "#!/usr/bin/env hadolint\n" > $@
5054
chmod u+x $@
5155

5256
LINTERS += hadolint-lint
@@ -83,7 +87,7 @@ $(YAMLLINT_BIN):
8387
mkdir -p out/linters
8488
rm -rf out/linters/yamllint-*
8589
curl -sSfL https://github.com/adrienverge/yamllint/archive/refs/tags/v$(YAMLLINT_VERSION).tar.gz | tar -C out/linters -zxf -
86-
cd $(YAMLLINT_ROOT) && pip3 install --target dist .
90+
cd $(YAMLLINT_ROOT) && pip3 install --target dist . || pip install --target dist .
8791

8892
LINTERS += yamllint-lint
8993
yamllint-lint: $(YAMLLINT_BIN)

0 commit comments

Comments
 (0)