# Copyright 2024 The Outline Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. version: '3' set: [pipefail] run: when_changed vars: REPO_ROOT: "{{.ROOT_DIR}}" BUILD_ROOT: "{{.ROOT_DIR}}/build" DOCKER: '{{.DOCKER | default "docker"}}' includes: metrics_server: taskfile: ./src/metrics_server/Taskfile.yml vars: {OUTPUT_BASE: '{{joinPath .BUILD_ROOT "metrics_server"}}'} sentry_webhook: taskfile: ./src/sentry_webhook/Taskfile.yml vars: {OUTPUT_BASE: '{{joinPath .BUILD_ROOT "sentry_webhook"}}'} shadowbox: taskfile: ./src/shadowbox/Taskfile.yml vars: {OUTPUT_BASE: '{{joinPath .BUILD_ROOT "shadowbox"}}'} third_party: taskfile: ./third_party/Taskfile.yml vars: {OUTPUT_BASE: '{{joinPath .BUILD_ROOT "third_party"}}'} tasks: clean: desc: Clean output files cmds: - rm -rf .task task src/*/node_modules/ build/ node_modules/ third_party/shellcheck/download/ third_party/*/bin format: desc: Format staged files cmds: ['npx pretty-quick --staged --pattern "**/*.{cjs,html,js,json,md,ts}"'] format:all: desc: Format all files in the repository cmds: ['npx prettier --write "**/*.{cjs,html,js,json,md,ts}"'] lint: desc: Lint all files deps: [lint:sh, lint:ts] lint:sh: desc: Lint all shell files cmds: [bash ./scripts/shellcheck.sh] lint:ts: desc: Lint all .ts and .js files cmds: ['npx eslint "**/*.{js,ts}"'] test: desc: Run all the repository tests deps: [lint, metrics_server:test, sentry_webhook:test, shadowbox:test]