Skip to content

Commit 37e271c

Browse files
committed
chore: improve DevX
Signed-off-by: Emilien Escalle <emilien.escalle@escemi.com>
1 parent 995c73c commit 37e271c

4 files changed

Lines changed: 256 additions & 164 deletions

File tree

.devcontainer/devcontainer.json

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
{
2+
"name": "Debian",
3+
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
4+
"features": {
5+
"ghcr.io/devcontainers/features/node:1": {},
6+
"ghcr.io/devcontainers/features/docker-in-docker:2": {},
7+
"ghcr.io/devcontainers/features/github-cli:1": {}
8+
},
9+
"forwardPorts": [
10+
4321
11+
],
12+
"secrets": {},
13+
"remoteEnv": {
14+
"GITHUB_TOKEN": "${localEnv:GITHUB_TOKEN}"
15+
},
16+
"customizations": {
17+
"vscode": {
18+
"extensions": [
19+
"eamodio.gitlens",
20+
"github.copilot",
21+
"github.copilot-chat",
22+
"github.vscode-github-actions",
23+
"ms-vscode.makefile-tools",
24+
"astro-build.astro-vscode",
25+
"dbaeumer.vscode-eslint",
26+
"esbenp.prettier-vscode",
27+
"bradlc.vscode-tailwindcss"
28+
],
29+
"settings": {
30+
"terminal.integrated.defaultProfile.linux": "zsh"
31+
},
32+
"mcp": {
33+
"servers": {
34+
"playwright": {
35+
"command": "npx",
36+
"args": [
37+
"@playwright/mcp@latest"
38+
]
39+
},
40+
"lighthouse": {
41+
"command": "npx",
42+
"args": [
43+
"lighthouse-mcp"
44+
]
45+
}
46+
}
47+
}
48+
}
49+
}
50+
}

Dockerfile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
FROM ghcr.io/super-linter/super-linter:slim-v8.0.0
2+
3+
HEALTHCHECK --interval=5m --timeout=10s --start-period=30s --retries=3 CMD ["/bin/sh","-c","test -d /github/home"]
4+
ARG UID=1000
5+
ARG GID=1000
6+
RUN chown -R ${UID}:${GID} /github/home
7+
USER ${UID}:${GID}
8+
9+
ENV RUN_LOCAL=true
10+
ENV USE_FIND_ALGORITHM=false
11+
ENV IGNORE_GITIGNORED_FILES=true
12+
ENV LOG_LEVEL=WARN
13+
ENV LOG_FILE="/github/home/logs"
14+
ENV DEFAULT_BRANCH=main

Makefile

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
.PHONY: help
2+
3+
MAKEFLAGS += --silent
4+
.DEFAULT_GOAL := help
5+
6+
help: ## Show help message
7+
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[$$()% a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
8+
9+
include .env
10+
11+
setup: ## Prepare stack to run
12+
cd application && npm install
13+
cd .github/actions/generate-blog-post && npm install
14+
cd .github/actions/generate-brand-content && npm install
15+
cd .github/actions/validate-manifest && npm install
16+
17+
start: ## Start application in dev mode
18+
cd application && npm run start
19+
20+
lint: ## Run linters
21+
cd application && npm run lint -- $(filter-out $@,$(MAKECMDGOALS))
22+
$(call run_linter,)
23+
24+
lint-fix: ## Run linters
25+
cd application && npm audit --omit=dev
26+
cd application && npm run humanize:fix
27+
cd application && npm run lint:fix
28+
$(MAKE) linter-fix
29+
30+
build: ## Build libs and applications
31+
cd application && npm run build
32+
33+
test: ## Run tests
34+
cd application && npm run test:ci
35+
cd .github/actions/generate-blog-post && npm run test:ci
36+
cd .github/actions/generate-brand-content && npm run test:ci
37+
cd .github/actions/validate-manifest && npm run test:ci
38+
39+
ci: ## Run tests in CI mode
40+
$(MAKE) lint-fix
41+
$(MAKE) build
42+
$(MAKE) test
43+
44+
linter-fix: ## Execute linting and fix
45+
$(call run_linter, \
46+
-e FIX_CSS_PRETTIER=true \
47+
-e FIX_JSON_PRETTIER=true \
48+
-e FIX_JAVASCRIPT_PRETTIER=true \
49+
-e FIX_YAML_PRETTIER=true \
50+
-e FIX_MARKDOWN=true \
51+
-e FIX_MARKDOWN_PRETTIER=true \
52+
-e FIX_NATURAL_LANGUAGE=true)
53+
54+
define run_linter
55+
DEFAULT_WORKSPACE="$(CURDIR)"; \
56+
LINTER_IMAGE="linter:latest"; \
57+
VOLUME="$$DEFAULT_WORKSPACE:$$DEFAULT_WORKSPACE"; \
58+
docker build --build-arg UID=$(shell id -u) --build-arg GID=$(shell id -g) --tag $$LINTER_IMAGE .; \
59+
docker run \
60+
-v $$VOLUME \
61+
--rm \
62+
-w "$$DEFAULT_WORKSPACE" \
63+
-e DEFAULT_WORKSPACE="$$DEFAULT_WORKSPACE" \
64+
-e GITHUB_WORKSPACE="$$DEFAULT_WORKSPACE" \
65+
-e FILTER_REGEX_INCLUDE="$(filter-out $@,$(MAKECMDGOALS))" \
66+
-e VALIDATE_TYPESCRIPT_PRETTIER=false \
67+
-e VALIDATE_TYPESCRIPT_ES=false \
68+
-e VALIDATE_CSS=false \
69+
$(1) \
70+
$$LINTER_IMAGE
71+
endef
72+
73+
define docker-compose
74+
COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose -f docker-compose.yml -f docker-compose.local.yml -f docker-compose.$(1).yml $(2)
75+
endef
76+
77+
define open-in-browser
78+
@if command -v x-www-browser &> /dev/null ; then x-www-browser $(1); \
79+
elif command -v xdg-open &> /dev/null ; then xdg-open $(1); \
80+
elif command -v open &> /dev/null ; then open $(1); \
81+
elif command -v start &> /dev/null ; then start $(1); fi;
82+
endef
83+
84+
#############################
85+
# Argument fix workaround
86+
#############################
87+
%:
88+
@:

0 commit comments

Comments
 (0)