diff --git a/Makefile b/Makefile index 33f213dbbaf4a..e8ea137460d65 100644 --- a/Makefile +++ b/Makefile @@ -387,14 +387,24 @@ $(foreach chart,$(charts),build/$(chart)_helm_$(VERSION).tgz): build/%_helm_$(VE --chart $* \ --output "$@" -site/out/index.html: site/package.json $(shell find ./site $(FIND_EXCLUSIONS) -type f \( -name '*.ts' -o -name '*.tsx' \)) +node_modules/.installed: package.json + ./scripts/pnpm_install.sh + +offlinedocs/node_modules/.installed: offlinedocs/package.json + cd offlinedocs + ../scripts/pnpm_install.sh + +site/node_modules/.installed: site/package.json + cd site + ../scripts/pnpm_install.sh + +site/out/index.html: site/node_modules/.installed $(shell find ./site $(FIND_EXCLUSIONS) -type f \( -name '*.ts' -o -name '*.tsx' \)) cd site # prevents this directory from getting to big, and causing "too much data" errors rm -rf out/assets/ - ../scripts/pnpm_install.sh pnpm build -offlinedocs/out/index.html: $(shell find ./offlinedocs $(FIND_EXCLUSIONS) -type f) $(shell find ./docs $(FIND_EXCLUSIONS) -type f | sed 's: :\\ :g') +offlinedocs/out/index.html: offlinedocs/node_modules/.installed $(shell find ./offlinedocs $(FIND_EXCLUSIONS) -type f) $(shell find ./docs $(FIND_EXCLUSIONS) -type f | sed 's: :\\ :g') cd offlinedocs ../scripts/pnpm_install.sh pnpm export @@ -427,7 +437,7 @@ fmt/go: xargs -0 go run mvdan.cc/gofumpt@v0.4.0 -w -l .PHONY: fmt/go -fmt/ts: +fmt/ts: site/node_modules/.installed echo "$(GREEN)==>$(RESET) $(BOLD)fmt/ts$(RESET)" cd site # Avoid writing files in CI to reduce file write activity @@ -438,7 +448,7 @@ else endif .PHONY: fmt/ts -fmt/biome: +fmt/biome: site/node_modules/.installed echo "$(GREEN)==>$(RESET) $(BOLD)fmt/biome$(RESET)" cd site # Avoid writing files in CI to reduce file write activity @@ -464,9 +474,8 @@ else endif .PHONY: fmt/shfmt -fmt/markdown: +fmt/markdown: node_modules/.installed echo "$(GREEN)==>$(RESET) $(BOLD)fmt/markdown$(RESET)" - ./scripts/pnpm_install.sh pnpm format-docs .PHONY: fmt/markdown @@ -477,7 +486,7 @@ lint/site-icons: ./scripts/check_site_icons.sh .PHONY: lint/site-icons -lint/ts: +lint/ts: site/node_modules/.installed cd site pnpm lint .PHONY: lint/ts @@ -504,8 +513,7 @@ lint/helm: make lint .PHONY: lint/helm -lint/markdown: - ./scripts/pnpm_install.sh +lint/markdown: node_modules/.installed pnpm lint-docs .PHONY: lint/markdown @@ -653,22 +661,19 @@ vpn/vpn.pb.go: vpn/vpn.proto --go_opt=paths=source_relative \ ./vpn/vpn.proto -site/src/api/typesGenerated.ts: $(wildcard scripts/apitypings/*) $(shell find ./codersdk $(FIND_EXCLUSIONS) -type f -name '*.go') +site/src/api/typesGenerated.ts: site/node_modules/.installed $(wildcard scripts/apitypings/*) $(shell find ./codersdk $(FIND_EXCLUSIONS) -type f -name '*.go') # -C sets the directory for the go run command go run -C ./scripts/apitypings main.go > $@ cd site - ../scripts/pnpm_install.sh pnpm exec biome format --write src/api/typesGenerated.ts -site/e2e/provisionerGenerated.ts: provisionerd/proto/provisionerd.pb.go provisionersdk/proto/provisioner.pb.go +site/e2e/provisionerGenerated.ts: site/node_modules/.installed provisionerd/proto/provisionerd.pb.go provisionersdk/proto/provisioner.pb.go cd site - ../scripts/pnpm_install.sh pnpm run gen:provisioner -site/src/theme/icons.json: $(wildcard scripts/gensite/*) $(wildcard site/static/icon/*) +site/src/theme/icons.json: site/node_modules/.installed $(wildcard scripts/gensite/*) $(wildcard site/static/icon/*) go run ./scripts/gensite/ -icons "$@" cd site - ../scripts/pnpm_install.sh pnpm exec biome format --write src/theme/icons.json examples/examples.gen.json: scripts/examplegen/main.go examples/examples.go $(shell find ./examples/templates) @@ -686,46 +691,38 @@ codersdk/rbacresources_gen.go: scripts/typegen/codersdk.gotmpl scripts/typegen/m go run scripts/typegen/main.go rbac codersdk > /tmp/rbacresources_gen.go mv /tmp/rbacresources_gen.go codersdk/rbacresources_gen.go -site/src/api/rbacresourcesGenerated.ts: scripts/typegen/codersdk.gotmpl scripts/typegen/main.go coderd/rbac/object.go coderd/rbac/policy/policy.go +site/src/api/rbacresourcesGenerated.ts: site/node_modules/.installed scripts/typegen/codersdk.gotmpl scripts/typegen/main.go coderd/rbac/object.go coderd/rbac/policy/policy.go go run scripts/typegen/main.go rbac typescript > "$@" cd site - ../scripts/pnpm_install.sh pnpm exec biome format --write src/api/rbacresourcesGenerated.ts -site/src/api/countriesGenerated.ts: scripts/typegen/countries.tstmpl scripts/typegen/main.go codersdk/countries.go +site/src/api/countriesGenerated.ts: site/node_modules/.installed scripts/typegen/countries.tstmpl scripts/typegen/main.go codersdk/countries.go go run scripts/typegen/main.go countries > "$@" cd site - ../scripts/pnpm_install.sh pnpm exec biome format --write src/api/countriesGenerated.ts -docs/admin/integrations/prometheus.md: scripts/metricsdocgen/main.go scripts/metricsdocgen/metrics +docs/admin/integrations/prometheus.md: node_modules/.installed scripts/metricsdocgen/main.go scripts/metricsdocgen/metrics go run scripts/metricsdocgen/main.go - ./scripts/pnpm_install.sh pnpm exec markdownlint-cli2 --fix ./docs/admin/integrations/prometheus.md pnpm exec markdown-table-formatter ./docs/admin/integrations/prometheus.md -docs/reference/cli/index.md: scripts/clidocgen/main.go examples/examples.gen.json $(GO_SRC_FILES) +docs/reference/cli/index.md: node_modules/.installed site/node_modules/.installed scripts/clidocgen/main.go examples/examples.gen.json $(GO_SRC_FILES) CI=true BASE_PATH="." go run ./scripts/clidocgen - ./scripts/pnpm_install.sh pnpm exec markdownlint-cli2 --fix ./docs/reference/cli/*.md pnpm exec markdown-table-formatter ./docs/reference/cli/*.md cd site - ../scripts/pnpm_install.sh pnpm exec biome format --write ../docs/manifest.json -docs/admin/security/audit-logs.md: coderd/database/querier.go scripts/auditdocgen/main.go enterprise/audit/table.go coderd/rbac/object_gen.go +docs/admin/security/audit-logs.md: node_modules/.installed coderd/database/querier.go scripts/auditdocgen/main.go enterprise/audit/table.go coderd/rbac/object_gen.go go run scripts/auditdocgen/main.go - ./scripts/pnpm_install.sh pnpm exec markdownlint-cli2 --fix ./docs/admin/security/audit-logs.md pnpm exec markdown-table-formatter ./docs/admin/security/audit-logs.md -coderd/apidoc/swagger.json: $(shell find ./scripts/apidocgen $(FIND_EXCLUSIONS) -type f) $(wildcard coderd/*.go) $(wildcard enterprise/coderd/*.go) $(wildcard codersdk/*.go) $(wildcard enterprise/wsproxy/wsproxysdk/*.go) $(DB_GEN_FILES) .swaggo docs/manifest.json coderd/rbac/object_gen.go +coderd/apidoc/swagger.json: node_modules/.installed site/node_modules/.installed $(shell find ./scripts/apidocgen $(FIND_EXCLUSIONS) -type f) $(wildcard coderd/*.go) $(wildcard enterprise/coderd/*.go) $(wildcard codersdk/*.go) $(wildcard enterprise/wsproxy/wsproxysdk/*.go) $(DB_GEN_FILES) .swaggo docs/manifest.json coderd/rbac/object_gen.go ./scripts/apidocgen/generate.sh - ./scripts/pnpm_install.sh pnpm exec markdownlint-cli2 --fix ./docs/reference/api/*.md pnpm exec markdown-table-formatter ./docs/reference/api/*.md cd site - ../scripts/pnpm_install.sh pnpm exec biome format --write ../docs/manifest.json ../coderd/apidoc/swagger.json update-golden-files: \ @@ -909,5 +906,5 @@ test-clean: .PHONY: test-clean .PHONY: test-e2e -test-e2e: +test-e2e: site/node_modules/.installed cd ./site && DEBUG=pw:api pnpm playwright:test --forbid-only --workers 1 diff --git a/scripts/pnpm_install.sh b/scripts/pnpm_install.sh index 0316c8cd8359c..b5a05bfc83e75 100755 --- a/scripts/pnpm_install.sh +++ b/scripts/pnpm_install.sh @@ -33,3 +33,6 @@ pnpm_flags+=("$@") echo "+ pnpm install ${pnpm_flags[*]}" pnpm install "${pnpm_flags[@]}" + +# Used for Makefile optimizations +touch node_modules/.installed