diff --git a/.github/workflows/arch-linux-package.yml b/.github/workflows/arch-linux-package.yml
deleted file mode 100644
index c58eb4772b..0000000000
--- a/.github/workflows/arch-linux-package.yml
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: Arch Linux package
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- build-arch-linux-pkg:
- name: build Arch Linux .pkg
- runs-on: ubuntu-latest
- container: archlinux:base
- steps:
- - name: install dependencies
- run: pacman -Syyuu --noconfirm base-devel git namcap
-
- # HACK(strager): Work around the following error from
- # 'git remote add origin ...':
- #
- # fatal: unsafe repository ('/__w/quick-lint-js/quick-lint-js' is owned by someone else)
- #
- # See also: https://github.com/actions/checkout/issues/760
- - name: work around permission issue
- run: git config --global --add safe.directory /__w/quick-lint-js/quick-lint-js
-
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- with:
- fetch-depth: 0 # Needed to determine package version.
-
- - name: set up arch-builder user
- run: |
- useradd arch-builder
- printf 'arch-builder ALL=(ALL) NOPASSWD: ALL\n' >/etc/sudoers.d/arch-builder
- printf 'Set disable_coredump false\n' >> /etc/sudo.conf
- chown -R arch-builder .
-
- # If we are releasing a new version, we won't have a Git tag yet.
- # However, the 'version' file will be updated. Create a tag based on
- # 'version' if such a tag doesn't already exist. This will make the
- # package's version info correctly state the new quick-lint-js version
- # number.
- #
- # If we are not releasing a new version, a tag will already exist, so
- # the 'git tag' command will fail. We ignore such failures.
- - name: set up tags
- run: |
- git tag -- "$(head -n1 version)" || :
-
- - name: build PKGBUILD-dev
- run: |
- cd dist/arch/
- sudo -u arch-builder makepkg --syncdeps --cleanbuild -p PKGBUILD-dev --noconfirm
-
- - name: lint package
- run: ./dist/arch/lint.sh
-
- - name: upload build to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: quick-lint-js-arch-${{ github.sha }}
- path: dist/arch/quick-lint-js-*.pkg.tar.zst
- - name: upload build to long-term storage
- if: ${{ github.event_name == 'push' && github.repository_owner == 'quick-lint' != null }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: dist/arch/quick-lint-js-*.pkg.tar.zst
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/arch/
- user: ${{ secrets.artifacts_user }}
-
- test-arch-linux-pkg:
- name: test on Arch Linux
- needs: build-arch-linux-pkg
- runs-on: ubuntu-latest
- container: archlinux:base
- steps:
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-arch-${{ github.sha }}
-
- - name: install dependencies
- run: pacman -Syyuu --noconfirm
-
- - name: install quick-lint-js
- run: pacman -U ./quick-lint-js-*.pkg.tar.zst --noconfirm
- - name: test quick-lint-js
- run: quick-lint-js --version
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/build-and-test-dev-env-nix.yml b/.github/workflows/build-and-test-dev-env-nix.yml
deleted file mode 100644
index 81f7e1bfac..0000000000
--- a/.github/workflows/build-and-test-dev-env-nix.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: build test dev env nix
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- build:
- name: build and test dev env nix
- runs-on: ubuntu-latest
- # TODO(strager): Use a stable Docker image.
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: install nix
- uses: quick-lint/install-nix-action@29bd9290ef037a3ecbdafe83cbd2185e9dd0fa0a # v20
- with:
- nix_path: nixpkgs=channel:nixpkgs-unstable
-
- # We can't split this up into multiple actions because
- # nix-shell is quit after the action is done. We want
- # all commands be executed in the context of the shell.
- - name: configure, build, test, and run in nix-shell
- run: >
- nix-shell dist/nix/shell.nix --command
- "cmakeConfigurePhase &&
- ninjaBuildPhase &&
- ./test/quick-lint-js-test &&
- ./quick-lint-js --help"
- - name: run executable without nix-shell
- run: ./build/quick-lint-js --help
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/build-and-test-dev.yml b/.github/workflows/build-and-test-dev.yml
deleted file mode 100644
index 59598be8b4..0000000000
--- a/.github/workflows/build-and-test-dev.yml
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: build and test Linux Ninja developer instructions
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-# Based on website/public/contribute/build-from-source/.
-jobs:
- build:
- name: ${{ matrix.toolchain.name }}
- strategy:
- fail-fast: false
- matrix:
- toolchain:
- - {docker_container: "archlinux:base", name: "Arch Linux", install_dependencies_script: "pacman -Syyuu --noconfirm cmake gcc ninja", extra_environment: ""}
- - {docker_container: "debian:bullseye", name: "Debian 11 Bullseye", install_dependencies_script: "apt-get update && apt-get install -y cmake g++ ninja-build", extra_environment: ""}
- - {docker_container: "debian:buster", name: "Debian 10 Buster", install_dependencies_script: "apt-get update && apt-get install -y cmake g++ ninja-build", extra_environment: ""}
- - {docker_container: "fedora:38", name: "Fedora 38", install_dependencies_script: "dnf install -y cmake gcc-c++ ninja-build", extra_environment: ""}
- - {docker_container: "ubuntu:20.04", name: "Ubuntu 20.04 LTS Focal", install_dependencies_script: "apt-get update && apt-get install -y cmake g++ ninja-build", extra_environment: ""}
- - {docker_container: "ubuntu:22.04", name: "Ubuntu 22.04 LTS Jammy", install_dependencies_script: "apt-get update && apt-get install -y cmake g++ ninja-build", extra_environment: ""}
- runs-on: ubuntu-latest
- container:
- image: ${{ matrix.toolchain.docker_container }}
-
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: 0. Install build dependencies
- run: ${{ matrix.toolchain.install_dependencies_script }}
-
- - name: 1. Configure with CMake
- run: |
- mkdir build ; cd build ; ${{ matrix.toolchain.extra_environment }} cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug .. ; cd "$OLDPWD"
- if ! [ -f docs/FUZZING.md ]; then
- printf 'error: cwd changed unexpectedly\n' >&2
- exit 1
- fi
-
- - name: 2. Build
- run: |
- ninja -C build
- ninja -C build quick-lint-js
- ninja -C build quick-lint-js-test
-
- - name: 3. Run
- run: |
- ./build/test/quick-lint-js-test
- ./build/quick-lint-js --help
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/build-and-test-plugin-vscode.yml b/.github/workflows/build-and-test-plugin-vscode.yml
deleted file mode 100644
index 54390521f3..0000000000
--- a/.github/workflows/build-and-test-plugin-vscode.yml
+++ /dev/null
@@ -1,239 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: build and test VS Code extension
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- build:
- name: build ${{ matrix.os.name }}
- strategy:
- fail-fast: false
- matrix:
- os:
- - {runs_on: macos-12, name: "macOS x86_64", platform_arch: "darwin-x64", test: true, CC: /usr/local/opt/llvm@15/bin/clang, CXX: /usr/local/opt/llvm@15/bin/clang++, CFLAGS: "-isystem /usr/local/opt/llvm@15/include -isystem /usr/local/opt/llvm@15/include/c++/v1 -mmacosx-version-min=10.9 -D_LIBCPP_DISABLE_AVAILABILITY", LDFLAGS: "-L/usr/local/opt/llvm@15/lib -mlinker-version=278 -nostdlib++ /usr/local/opt/llvm@15/lib/c++/libc++.a /usr/local/opt/llvm@15/lib/c++/libc++abi.a", CMAKE_FLAGS: "-G Ninja", homebrew_packages: "ninja"}
- - {runs_on: stracle-macos-aarch64, name: "macOS AArch64", platform_arch: "darwin-arm64", test: true, CFLAGS: "-mmacosx-version-min=11.0", CMAKE_FLAGS: "-G Ninja"}
- - {runs_on: ubuntu-latest, name: "Linux x86_64", platform_arch: "linux-x64", test: false, docker_container: "ghcr.io/quick-lint/quick-lint-js-github-baseline-builder:v1", LDFLAGS: "-static-libgcc -static-libstdc++", CMAKE_FLAGS: "-G Ninja"}
- - {runs_on: ubuntu-latest, name: "Linux ARM", platform_arch: "linux-arm", test: false, docker_container: "ghcr.io/quick-lint/quick-lint-js-github-cross-builder:v3", cross_compiling: true, CMAKE_FLAGS: "-DCMAKE_TOOLCHAIN_FILE=.github/toolchain-linux-armhf.cmake -G Ninja", LDFLAGS: "-static-libgcc -static-libstdc++"}
- - {runs_on: ubuntu-latest, name: "Linux AArch64", platform_arch: "linux-arm64", test: false, docker_container: "ghcr.io/quick-lint/quick-lint-js-github-cross-builder:v3", cross_compiling: true, CMAKE_FLAGS: "-DCMAKE_TOOLCHAIN_FILE=.github/toolchain-linux-aarch64.cmake -G Ninja", LDFLAGS: "-static-libgcc -static-libstdc++"}
- - {runs_on: windows-2022, name: "Windows x86", platform_arch: "win32-ia32", test: true, CC: "c:/msys64/mingw32/bin/gcc.exe", CXX: "c:/msys64/mingw32/bin/g++.exe", CMAKE_FLAGS: "-G Ninja", chocolatey_packages: "ninja", msys2_packages: "mingw-w64-i686-gcc ninja", LDFLAGS: "-static"}
- - {runs_on: windows-2022, name: "Windows x64", platform_arch: "win32-x64", test: true, CC: "c:/msys64/ucrt64/bin/gcc.exe", CXX: "c:/msys64/ucrt64/bin/g++.exe", CMAKE_FLAGS: "-G Ninja", chocolatey_packages: "ninja", msys2_packages: "mingw-w64-ucrt-x86_64-gcc ninja", LDFLAGS: "-static"}
- - {runs_on: ubuntu-latest, name: "Windows ARM", platform_arch: "win32-arm", test: false, docker_container: "ghcr.io/quick-lint/quick-lint-js-github-mingw-builder:v3", cross_compiling: true, CMAKE_FLAGS: "-DCMAKE_TOOLCHAIN_FILE=.github/toolchain-mingw-armv7.cmake -G Ninja", LDFLAGS: "-static"}
- - {runs_on: ubuntu-latest, name: "Windows ARM64", platform_arch: "win32-arm64", test: false, docker_container: "ghcr.io/quick-lint/quick-lint-js-github-mingw-builder:v3", cross_compiling: true, CMAKE_FLAGS: "-DCMAKE_TOOLCHAIN_FILE=.github/toolchain-mingw-aarch64.cmake -G Ninja", LDFLAGS: "-static"}
- runs-on: ${{ matrix.os.runs_on }}
- container: ${{ matrix.os.docker_container }}
- env:
- CMAKE_CXX_COMPILER: ${{ matrix.os.CXX }}
- CMAKE_CXX_FLAGS: ${{ matrix.os.CFLAGS }}
- CMAKE_C_COMPILER: ${{ matrix.os.CC }}
- CMAKE_C_FLAGS: ${{ matrix.os.CFLAGS }}
- CMAKE_EXE_LINKER_FLAGS: ${{ matrix.os.LDFLAGS }}
- CMAKE_EXTRA_FLAGS: ${{ matrix.os.CMAKE_FLAGS }}
- CMAKE_SHARED_LINKER_FLAGS: ${{ matrix.os.LDFLAGS }}
- QLJS_COLLECT_COPYRIGHT_NO_WARNINGS: 1
-
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: update $PATH
- if: ${{ matrix.os.msys2_packages }}
- run: |
- # For DLLs needed by GCC:
- echo "c:/msys64/mingw32/bin" >>"${GITHUB_PATH}"
- echo "c:/msys64/ucrt64/bin" >>"${GITHUB_PATH}"
- shell: bash
-
- - name: install dependencies (Chocolatey)
- if: ${{ matrix.os.chocolatey_packages }}
- run: choco install --yes ${{ matrix.os.chocolatey_packages }}
- shell: powershell
- - name: install dependencies (Homebrew)
- if: ${{ matrix.os.homebrew_packages }}
- run: brew install ${{ matrix.os.homebrew_packages }}
- - name: install dependencies (MSYS2)
- if: ${{ matrix.os.msys2_packages }}
- run: c:/msys64/usr/bin/pacman.exe --sync --noconfirm ${{ matrix.os.msys2_packages }}
-
- - name: build tools for cross compilation
- if: ${{ matrix.os.cross_compiling }}
- run: |
- unset CC CXX
- cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=OFF -S . -B build-tools -G Ninja
- cmake --build build-tools --config Debug --target quick-lint-js-build-tools
-
- - name: C++ configure
- run: |
- env | grep '^CMAKE\|^QUICK_LINT_JS' | sort
- cmake ${CMAKE_C_COMPILER:+-DCMAKE_C_COMPILER="${CMAKE_C_COMPILER}"} ${CMAKE_CXX_COMPILER:+-DCMAKE_CXX_COMPILER="${CMAKE_CXX_COMPILER}"} -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=NO -DCMAKE_C_FLAGS="${CMAKE_C_FLAGS}" -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS}" -DQUICK_LINT_JS_ENABLE_VSCODE=YES -DCMAKE_POSITION_INDEPENDENT_CODE=YES -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=YES ${{ fromJSON('["", "-DQUICK_LINT_JS_USE_BUILD_TOOLS=${PWD}/build-tools"]')[matrix.os.cross_compiling] }} ${CMAKE_EXTRA_FLAGS} -S . -B build
- shell: bash
- - name: C++ build
- run: cmake --build build --config Release --target quick-lint-js-vscode-node quick-lint-js-vscode-node-licenses
- - name: C++ install
- run: cmake --install build --component vscode-node --prefix plugin/vscode --strip
-
- - name: upload build to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: vscode-dist-${{ matrix.os.platform_arch }}
- path: plugin/vscode/dist/
-
- test:
- name: test ${{ matrix.os.name }}
- needs: build
- strategy:
- fail-fast: false
- matrix:
- os:
- - {runs_on: macos-12, name: "macOS x86_64", platform_arch: "darwin-x64"}
- - {runs_on: stracle-macos-aarch64, name: "macOS AArch64", platform_arch: "darwin-arm64"}
- # FIXME(strager): For some reason, tests fail with the a Docker
- # container.
- - {runs_on: ubuntu-latest, name: "Linux x86_64", platform_arch: "linux-x64", xvfb: true}
- - {runs_on: windows-2022, name: "Windows x86", platform_arch: "win32-ia32"}
- - {runs_on: windows-2022, name: "Windows x64", platform_arch: "win32-x64"}
- # TODO(strager): Also test Linux x86 32-bit.
- # TODO(strager): Also test Linux ARM (32-bit and 64-bit).
- # TODO(strager): Also test Windows ARM (32-bit and 64-bit).
- runs-on: ${{ matrix.os.runs_on }}
- container: ${{ matrix.os.docker_container }}
-
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-linux-x64
- path: ./plugin/vscode/dist/
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-darwin-arm64
- path: ./plugin/vscode/dist/
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-darwin-x64
- path: ./plugin/vscode/dist/
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-win32-ia32
- path: ./plugin/vscode/dist/
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-win32-x64
- path: ./plugin/vscode/dist/
-
- - name: configure
- run: cd plugin/vscode && yarn
- - name: test
- shell: bash
- run: |
- run_xvfb=${{ fromJSON('[0, 1]')[matrix.os.xvfb] }}
- if [ "${run_xvfb}" -ne 0 ]; then
- DISPLAY=:1
- export DISPLAY
-
- type Xvfb # Ensure Xvfb is installed.
- Xvfb "${DISPLAY}" -screen 0 1024x768x24 &
- sleep 0.1 # Wait for Xvfb to start.
- printf 'Started Xvfb\n' >&2
- fi
-
- cd plugin/vscode
- yarn test --target ${{ matrix.os.platform_arch }}
-
- if [ "${run_xvfb}" -ne 0 ]; then
- kill %1
- wait || :
- fi
-
- vsix:
- name: VS Code .vsix
- needs: build
- runs-on: ubuntu-latest
- # TODO(strager): Use a stable Docker image.
- env:
- QLJS_COLLECT_COPYRIGHT_NO_WARNINGS: 1
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-linux-x64
- path: ./plugin/vscode/dist/
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-linux-arm
- path: ./plugin/vscode/dist/
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-linux-arm64
- path: ./plugin/vscode/dist/
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-darwin-arm64
- path: ./plugin/vscode/dist/
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-darwin-x64
- path: ./plugin/vscode/dist/
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-win32-ia32
- path: ./plugin/vscode/dist/
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-win32-x64
- path: ./plugin/vscode/dist/
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-win32-arm
- path: ./plugin/vscode/dist/
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: vscode-dist-win32-arm64
- path: ./plugin/vscode/dist/
-
- - name: configure
- run: cd plugin/vscode && yarn
- - name: create extension
- run: cd plugin/vscode && ./node_modules/.bin/vsce package --baseImagesUrl https://raw.githubusercontent.com/quick-lint/quick-lint-js/master/plugin/vscode/
-
- - name: upload build to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: plugin-vscode-${{ github.sha }}
- path: plugin/vscode/*.vsix
- - name: upload build to long-term storage
- if: ${{ github.event_name == 'push' && github.repository_owner == 'quick-lint' != null }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: plugin/vscode/*.vsix
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/vscode/
- user: ${{ secrets.artifacts_user }}
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml
deleted file mode 100644
index dc40e35c26..0000000000
--- a/.github/workflows/build-and-test.yml
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: build and test
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- build:
- name: ${{ matrix.toolchain.name }}
- strategy:
- fail-fast: false
- matrix:
- toolchain:
- - {runs_on: macos-12, name: "macOS Clang", CC: clang, CXX: clang++, CFLAGS: "", CMAKE_BUILD_TYPE: "Debug", WARNINGS: "-Werror;{1}", CMAKE_FLAGS: "-G Ninja", homebrew_packages: "ninja"}
- - {runs_on: ubuntu-latest, name: "Clang 13 libc++", container: "ghcr.io/quick-lint/quick-lint-js-github-clang:v1", CC: clang-13, CXX: clang++-13, CFLAGS: "-stdlib=libc++", CMAKE_BUILD_TYPE: "Debug", WARNINGS: "-Werror;{1}", CMAKE_FLAGS: "-G Ninja"}
- - {runs_on: ubuntu-latest, name: "Clang 13 libstdc++", container: "ghcr.io/quick-lint/quick-lint-js-github-clang:v1", CC: clang-13, CXX: clang++-13, CFLAGS: "-stdlib=libstdc++", CMAKE_BUILD_TYPE: "Debug", WARNINGS: "-Werror;{1}", CMAKE_FLAGS: "-G Ninja"}
- - {runs_on: ubuntu-latest, name: "Clang 13 ASAN+UBSAN libstdc++", container: "ghcr.io/quick-lint/quick-lint-js-github-clang:v1", CC: clang-13, CXX: clang++-13, CFLAGS: "-fsanitize=address,undefined -fsanitize-address-use-after-scope -fno-sanitize-recover=address,undefined -stdlib=libstdc++", CMAKE_BUILD_TYPE: "Debug", WARNINGS: "-Werror;{1}", ASAN_OPTIONS: "strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1", CMAKE_FLAGS: "-G Ninja"}
- - {runs_on: ubuntu-latest, name: "Clang 13 Release libstdc++", container: "ghcr.io/quick-lint/quick-lint-js-github-clang:v1", CC: clang-13, CXX: clang++-13, CFLAGS: "-stdlib=libstdc++", CMAKE_BUILD_TYPE: "Release", WARNINGS: "-Werror;{1}", CMAKE_FLAGS: "-G Ninja"}
- - {runs_on: ubuntu-latest, name: "GCC 10", container: "ghcr.io/quick-lint/quick-lint-js-github-gcc:v1", CC: gcc-10, CXX: g++-10, CFLAGS: "", CMAKE_BUILD_TYPE: "Debug", WARNINGS: "-Werror;{0}", CMAKE_FLAGS: "-G Ninja"}
- - {runs_on: ubuntu-latest, name: "GCC 10 ASAN+UBSAN", container: "ghcr.io/quick-lint/quick-lint-js-github-gcc:v1", CC: gcc-10, CXX: g++-10, CFLAGS: "-fsanitize=address,undefined -fsanitize-address-use-after-scope -fno-sanitize-recover=address,undefined -fuse-ld=gold", CMAKE_BUILD_TYPE: "Debug", WARNINGS: "-Werror;{0}", CMAKE_FLAGS: "-G Ninja", ASAN_OPTIONS: "strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1"}
- - {runs_on: ubuntu-latest, name: "GCC 10 Release", container: "ghcr.io/quick-lint/quick-lint-js-github-gcc:v1", CC: gcc-10, CXX: g++-10, CFLAGS: "", CMAKE_BUILD_TYPE: "Release", WARNINGS: "-Werror;{0}"}
- # TODO(strager): Enable Ninja for this job.
- - {runs_on: ubuntu-latest, name: "GCC 10 dev", container: "ghcr.io/quick-lint/quick-lint-js-github-gcc:v1", CC: gcc-10, CXX: g++-10, CFLAGS: "", CMAKE_BUILD_TYPE: "Debug", WARNINGS: "-Werror;{0}", CMAKE_FLAGS: "-DQUICK_LINT_JS_FEATURE_DEBUG_SERVER=ON -DQUICK_LINT_JS_FEATURE_EXTRA_DEBUG=ON -DQUICK_LINT_JS_FEATURE_VECTOR_PROFILING=ON"}
- # TODO(strager): Also test MinGW-based builds.
- - {runs_on: windows-latest, name: "MSVC", CFLAGS: "", CMAKE_BUILD_TYPE: "Debug", WARNINGS: ""}
- - {runs_on: windows-latest, name: "MSVC Release", CFLAGS: "", CMAKE_BUILD_TYPE: "Release", WARNINGS: ""}
- runs-on: ${{ matrix.toolchain.runs_on }}
- container: ${{ matrix.toolchain.container }}
- env:
- ASAN_OPTIONS: ${{ matrix.toolchain.ASAN_OPTIONS }}
- CMAKE_BUILD_TYPE: ${{ matrix.toolchain.CMAKE_BUILD_TYPE }}
- CMAKE_C_COMPILER: ${{ matrix.toolchain.CC }}
- CMAKE_C_FLAGS: ${{ matrix.toolchain.CFLAGS }}
- CMAKE_CXX_COMPILER: ${{ matrix.toolchain.CXX }}
- CMAKE_CXX_FLAGS: ${{ matrix.toolchain.CFLAGS }}
- CMAKE_EXE_LINKER_FLAGS: ${{ matrix.toolchain.CFLAGS }}
- CMAKE_EXTRA_FLAGS: ${{ matrix.toolchain.CMAKE_FLAGS }}
- CMAKE_SHARED_LINKER_FLAGS: ${{ matrix.toolchain.CFLAGS }}
-
- # Format of WARNINGS:
- # {0} GCC warnings
- # {1} Clang warnings
- QUICK_LINT_JS_CXX_COMPILER_OPTIONS: |-
- ${{ format(matrix.toolchain.WARNINGS,
- '-Waddress;-Waggressive-loop-optimizations;-Wall;-Walloc-zero;-Walloca;-Warray-bounds;-Wattributes;-Wbool-compare;-Wbool-operation;-Wbuiltin-declaration-mismatch;-Wbuiltin-macro-redefined;-Wcast-align;-Wcast-qual;-Wchar-subscripts;-Wclobbered;-Wcomment;-Wcomments;-Wconditionally-supported;-Wconversion;-Wconversion-null;-Wcoverage-mismatch;-Wcpp;-Wctor-dtor-privacy;-Wdangling-else;-Wdate-time;-Wdelete-incomplete;-Wdelete-non-virtual-dtor;-Wdeprecated;-Wdeprecated-declarations;-Wdisabled-optimization;-Wdiv-by-zero;-Wdouble-promotion;-Wduplicated-branches;-Wduplicated-cond;-Wempty-body;-Wendif-labels;-Wenum-compare;-Wexpansion-to-defined;-Wextra;-Wfloat-conversion;-Wfloat-equal;-Wformat;-Wformat-contains-nul;-Wformat-extra-args;-Wformat-nonliteral;-Wformat-security;-Wformat-signedness;-Wformat-truncation;-Wformat-y2k;-Wformat-zero-length;-Wframe-address;-Wfree-nonheap-object;-Whsa;-Wignored-attributes;-Wignored-qualifiers;-Wimplicit-fallthrough;-Winherited-variadic-ctor;-Winit-self;-Wint-in-bool-context;-Wint-to-pointer-cast;-Winvalid-memory-model;-Winvalid-offsetof;-Winvalid-pch;-Wliteral-suffix;-Wlogical-not-parentheses;-Wlogical-op;-Wlto-type-mismatch;-Wmain;-Wmaybe-uninitialized;-Wmemset-elt-size;-Wmemset-transposed-args;-Wmisleading-indentation;-Wmissing-declarations;-Wmissing-field-initializers;-Wmissing-format-attribute;-Wmissing-include-dirs;-Wmissing-noreturn;-Wmultichar;-Wnarrowing;-Wnoexcept-type;-Wnon-template-friend;-Wnonnull;-Wnonnull-compare;-Wnormalized;-Wnull-dereference;-Wodr;-Wold-style-cast;-Wopenmp-simd;-Woverflow;-Woverloaded-virtual;-Wpacked;-Wpacked-bitfield-compat;-Wparentheses;-Wpedantic;-Wplacement-new;-Wpmf-conversions;-Wno-overlength-strings;-Wpointer-arith;-Wpointer-compare;-Wpragmas;-Wpsabi;-Wredundant-decls;-Wregister;-Wreorder;-Wrestrict;-Wreturn-local-addr;-Wreturn-type;-Wscalar-storage-order;-Wsequence-point;-Wshadow=local;-Wshift-count-negative;-Wshift-count-overflow;-Wshift-negative-value;-Wshift-overflow;-Wsign-compare;-Wsign-conversion;-Wsign-promo;-Wsized-deallocation;-Wsizeof-array-argument;-Wsizeof-pointer-memaccess;-Wstack-protector;-Wstrict-aliasing;-Wstrict-null-sentinel;-Wstrict-overflow;-Wstringop-overflow;-Wsubobject-linkage;-Wsuggest-final-methods;-Wsuggest-final-types;-Wsuggest-override;-Wswitch;-Wswitch-bool;-Wswitch-unreachable;-Wsync-nand;-Wsynth;-Wtautological-compare;-Wterminate;-Wtrampolines;-Wtrigraphs;-Wtype-limits;-Wundef;-Wuninitialized;-Wunknown-pragmas;-Wunreachable-code;-Wunsafe-loop-optimizations;-Wunused;-Wunused-but-set-parameter;-Wunused-but-set-variable;-Wunused-const-variable;-Wunused-function;-Wunused-label;-Wunused-local-typedefs;-Wunused-macros;-Wunused-parameter;-Wunused-result;-Wunused-value;-Wunused-variable;-Wuseless-cast;-Wvarargs;-Wvariadic-macros;-Wvector-operation-performance;-Wvirtual-inheritance;-Wvirtual-move-assign;-Wvla;-Wvolatile-register-var;-Wwrite-strings;-Wzero-as-null-pointer-constant',
- '-W#pragma-messages;-W#warnings;-WCFString-literal;-WCL4;-WIndependentClass-attribute;-WNSObject-attribute;-Wabi;-Wabsolute-value;-Wabstract-final-class;-Wabstract-vbase-init;-Waddress;-Waddress-of-packed-member;-Waddress-of-temporary;-Waggregate-return;-Wall;-Wambiguous-delete;-Wambiguous-ellipsis;-Wambiguous-macro;-Wambiguous-member-template;-Wanalyzer-incompatible-plugin;-Wanonymous-pack-parens;-Warc;-Warc-bridge-casts-disallowed-in-nonarc;-Warc-maybe-repeated-use-of-weak;-Warc-non-pod-memaccess;-Warc-performSelector-leaks;-Warc-repeated-use-of-weak;-Warc-retain-cycles;-Warc-unsafe-retained-assign;-Wargument-outside-range;-Warray-bounds;-Warray-bounds-pointer-arithmetic;-Wasm;-Wasm-operand-widths;-Wassign-enum;-Wassume;-Wat-protocol;-Watimport-in-framework-header;-Watomic-alignment;-Watomic-implicit-seq-cst;-Watomic-memory-ordering;-Watomic-properties;-Watomic-property-with-user-defined-accessor;-Wattribute-packed-for-bitfield;-Wattributes;-Wauto-disable-vptr-sanitizer;-Wauto-import;-Wauto-storage-class;-Wauto-var-id;-Wavailability;-Wavr-rtlib-linking-quirks;-Wbackend-plugin;-Wbackslash-newline-escape;-Wbad-function-cast;-Wbinding-in-condition;-Wbitfield-constant-conversion;-Wbitfield-enum-conversion;-Wbitfield-width;-Wbitwise-op-parentheses;-Wblock-capture-autoreleasing;-Wbool-conversion;-Wbool-conversions;-Wbraced-scalar-init;-Wbridge-cast;-Wbuiltin-macro-redefined;-Wbuiltin-memcpy-chk-size;-Wbuiltin-requires-header;-Wc++17-compat-mangling;-Wc++17-extensions;-Wcall-to-pure-virtual-from-ctor-dtor;-Wcast-align;-Wcast-calling-convention;-Wcast-of-sel-type;-Wcast-qual;-Wcast-qual-unrelated;-Wchar-align;-Wchar-subscripts;-Wclang-cl-pch;-Wclass-varargs;-Wcomma;-Wcomment;-Wcomments;-Wcompare-distinct-pointer-types;-Wcomplex-component-init;-Wconditional-type-mismatch;-Wconditional-uninitialized;-Wconfig-macros;-Wconstant-conversion;-Wconstant-logical-operand;-Wconstexpr-not-const;-Wconsumed;-Wconversion;-Wconversion-null;-Wcoroutine;-Wcoroutine-missing-unhandled-exception;-Wcovered-switch-default;-Wcpp;-Wcstring-format-directive;-Wctor-dtor-privacy;-Wctu;-Wcustom-atomic-properties;-Wdangling;-Wdangling-else;-Wdangling-field;-Wdangling-initializer-list;-Wdarwin-sdk-settings;-Wdate-time;-Wdealloc-in-category;-Wdebug-compression-unavailable;-Wdeclaration-after-statement;-Wdefaulted-function-deleted;-Wdelegating-ctor-cycles;-Wdelete-abstract-non-virtual-dtor;-Wdelete-incomplete;-Wdelete-non-abstract-non-virtual-dtor;-Wdelete-non-virtual-dtor;-Wdeprecated;-Wdeprecated-attributes;-Wdeprecated-declarations;-Wdeprecated-implementations;-Wdeprecated-increment-bool;-Wdeprecated-objc-isa-usage;-Wdeprecated-objc-pointer-introspection;-Wdeprecated-objc-pointer-introspection-performSelector;-Wdeprecated-register;-Wdeprecated-this-capture;-Wdeprecated-writable-strings;-Wdirect-ivar-access;-Wdisabled-optimization;-Wdiscard-qual;-Wdistributed-object-modifiers;-Wdiv-by-zero;-Wdivision-by-zero;-Wdll-attribute-on-redeclaration;-Wdllexport-explicit-instantiation-decl;-Wdllimport-static-field-def;-Wdocumentation-deprecated-sync;-Wdocumentation-html;-Wdollar-in-identifier-extension;-Wdouble-promotion;-Wduplicate-decl-specifier;-Wduplicate-enum;-Wduplicate-method-arg;-Wduplicate-method-match;-Wduplicate-protocol;-Wdynamic-class-memaccess;-Wdynamic-exception-spec;-Weffc++;-Wembedded-directive;-Wempty-body;-Wempty-decomposition;-Wempty-init-stmt;-Wempty-translation-unit;-Wencode-type;-Wendif-labels;-Wenum-compare;-Wenum-compare-switch;-Wenum-conversion;-Wenum-too-large;-Wexceptions;-Wexpansion-to-defined;-Wexplicit-initialize-call;-Wexplicit-ownership-type;-Wexport-unnamed;-Wexport-using-directive;-Wextern-c-compat;-Wextern-initializer;-Wextra;-Wextra-qualification;-Wextra-semi;-Wextra-semi-stmt;-Wextra-tokens;-Wfixed-enum-extension;-Wflag-enum;-Wflexible-array-extensions;-Wfloat-conversion;-Wfloat-equal;-Wfloat-overflow-conversion;-Wfloat-zero-conversion;-Wfor-loop-analysis;-Wformat;-Wformat-extra-args;-Wformat-invalid-specifier;-Wformat-non-iso;-Wformat-nonliteral;-Wformat-pedantic;-Wformat-security;-Wformat-y2k;-Wformat-zero-length;-Wformat=2;-Wfortify-source;-Wfour-char-constants;-Wframework-include-private-from-public;-Wfunction-def-in-objc-container;-Wfunction-multiversion;-Wfuture-compat;-Wgcc-compat;-Wgnu;-Wgnu-alignof-expression;-Wgnu-anonymous-struct;-Wgnu-array-member-paren-init;-Wgnu-auto-type;-Wgnu-binary-literal;-Wgnu-case-range;-Wgnu-complex-integer;-Wgnu-compound-literal-initializer;-Wgnu-conditional-omitted-operand;-Wgnu-designator;-Wgnu-empty-initializer;-Wgnu-empty-struct;-Wgnu-flexible-array-initializer;-Wgnu-flexible-array-union-member;-Wgnu-folding-constant;-Wgnu-imaginary-constant;-Wgnu-include-next;-Wgnu-label-as-value;-Wgnu-redeclared-enum;-Wgnu-statement-expression;-Wgnu-static-float-init;-Wgnu-string-literal-operator-template;-Wgnu-union-cast;-Wgnu-variable-sized-type-not-at-end;-Wgnu-zero-line-directive;-Wgnu-zero-variadic-macro-arguments;-Wheader-guard;-Wheader-hygiene;-Widiomatic-parentheses;-Wignored-attributes;-Wignored-optimization-argument;-Wignored-pragma-intrinsic;-Wignored-pragma-optimize;-Wignored-pragmas;-Wignored-qualifiers;-Wimplicit;-Wimplicit-atomic-properties;-Wimplicit-conversion-floating-point-to-bool;-Wimplicit-exception-spec-mismatch;-Wimplicit-fallthrough;-Wimplicit-fallthrough-per-function;-Wimplicit-fixed-point-conversion;-Wimplicit-float-conversion;-Wimplicit-function-declaration;-Wimplicit-int;-Wimplicit-int-conversion;-Wimplicit-retain-self;-Wimplicitly-unsigned-literal;-Wimport;-Wimport-preprocessor-directive-pedantic;-Winaccessible-base;-Winclude-next-absolute-path;-Winclude-next-outside-header;-Wincompatible-exception-spec;-Wincompatible-function-pointer-types;-Wincompatible-library-redeclaration;-Wincompatible-ms-struct;-Wincompatible-pointer-types;-Wincompatible-pointer-types-discards-qualifiers;-Wincompatible-property-type;-Wincompatible-sysroot;-Wincomplete-framework-module-declaration;-Wincomplete-implementation;-Wincomplete-module;-Wincomplete-umbrella;-Winconsistent-dllimport;-Winconsistent-missing-destructor-override;-Winconsistent-missing-override;-Wincrement-bool;-Winfinite-recursion;-Winit-self;-Winitializer-overrides;-Winjected-class-name;-Winline;-Winline-asm;-Winline-new-delete;-Winstantiation-after-specialization;-Wint-conversion;-Wint-conversions;-Wint-to-pointer-cast;-Wint-to-void-pointer-cast;-Winteger-overflow;-Winvalid-command-line-argument;-Winvalid-constexpr;-Winvalid-iboutlet;-Winvalid-initializer-from-system-header;-Winvalid-ios-deployment-target;-Winvalid-noreturn;-Winvalid-offsetof;-Winvalid-or-nonexistent-directory;-Winvalid-partial-specialization;-Winvalid-pch;-Winvalid-pp-token;-Winvalid-source-encoding;-Winvalid-token-paste;-Wjump-seh-finally;-Wkeyword-compat;-Wkeyword-macro;-Wknr-promoted-parameter;-Wlanguage-extension-token;-Wlarge-by-value-copy;-Wliblto;-Wliteral-conversion;-Wliteral-range;-Wlogical-not-parentheses;-Wlogical-op-parentheses;-Wlong-long;-Wloop-analysis;-Wmacro-redefined;-Wmain;-Wmain-return-type;-Wmalformed-warning-check;-Wmany-braces-around-scalar-init;-Wmax-unsigned-zero;-Wmemset-transposed-args;-Wmemsize-comparison;-Wmethod-signatures;-Wmicrosoft;-Wmicrosoft-anon-tag;-Wmicrosoft-cast;-Wmicrosoft-charize;-Wmicrosoft-comment-paste;-Wmicrosoft-const-init;-Wmicrosoft-cpp-macro;-Wmicrosoft-default-arg-redefinition;-Wmicrosoft-end-of-file;-Wmicrosoft-enum-forward-reference;-Wmicrosoft-enum-value;-Wmicrosoft-exception-spec;-Wmicrosoft-exists;-Wmicrosoft-explicit-constructor-call;-Wmicrosoft-extra-qualification;-Wmicrosoft-fixed-enum;-Wmicrosoft-flexible-array;-Wmicrosoft-goto;-Wmicrosoft-inaccessible-base;-Wmicrosoft-include;-Wmicrosoft-mutable-reference;-Wmicrosoft-pure-definition;-Wmicrosoft-redeclare-static;-Wmicrosoft-sealed;-Wmicrosoft-template;-Wmicrosoft-union-member-reference;-Wmicrosoft-unqualified-friend;-Wmicrosoft-using-decl;-Wmicrosoft-void-pseudo-dtor;-Wmismatched-new-delete;-Wmismatched-parameter-types;-Wmismatched-return-types;-Wmismatched-tags;-Wmissing-braces;-Wmissing-declarations;-Wmissing-exception-spec;-Wmissing-field-initializers;-Wmissing-format-attribute;-Wmissing-include-dirs;-Wmissing-method-return-type;-Wmissing-noescape;-Wmissing-noreturn;-Wmissing-prototype-for-cc;-Wmissing-prototypes;-Wmissing-selector-name;-Wmissing-sysroot;-Wmissing-variable-declarations;-Wmodule-conflict;-Wmodule-file-config-mismatch;-Wmodule-file-extension;-Wmodule-import-in-extern-c;-Wmodules-ambiguous-internal-linkage;-Wmodules-import-nested-redundant;-Wmost;-Wmove;-Wmsvc-include;-Wmsvc-not-found;-Wmultichar;-Wmultiple-move-vbase;-Wnarrowing;-Wnested-anon-types;-Wnested-externs;-Wnew-returns-null;-Wnewline-eof;-Wnoderef;-Wnoexcept-type;-Wnon-gcc;-Wnon-literal-null-conversion;-Wnon-modular-include-in-framework-module;-Wnon-modular-include-in-module;-Wnon-pod-varargs;-Wnonnull;-Wnonportable-include-path;-Wnonportable-system-include-path;-Wnonportable-vector-initialization;-Wnontrivial-memaccess;-Wnsconsumed-mismatch;-Wnsreturns-mismatch;-Wnull-arithmetic;-Wnull-character;-Wnull-conversion;-Wnull-dereference;-Wnull-pointer-arithmetic;-Wnullability;-Wnullability-completeness;-Wnullability-completeness-on-arrays;-Wnullability-declspec;-Wnullability-extension;-Wnullability-inferred-on-nested-type;-Wnullable-to-nonnull-conversion;-Wobjc-autosynthesis-property-ivar-name-match;-Wobjc-bool-constant-conversion;-Wobjc-boxing;-Wobjc-circular-container;-Wobjc-cocoa-api;-Wobjc-designated-initializers;-Wobjc-flexible-array;-Wobjc-forward-class-redefinition;-Wobjc-interface-ivars;-Wobjc-literal-compare;-Wobjc-literal-conversion;-Wobjc-macro-redefinition;-Wobjc-messaging-id;-Wobjc-method-access;-Wobjc-missing-property-synthesis;-Wobjc-missing-super-calls;-Wobjc-multiple-method-names;-Wobjc-noncopy-retain-block-property;-Wobjc-nonunified-exceptions;-Wobjc-property-assign-on-object-type;-Wobjc-property-implementation;-Wobjc-property-implicit-mismatch;-Wobjc-property-matches-cocoa-ownership-rule;-Wobjc-property-no-attribute;-Wobjc-property-synthesis;-Wobjc-protocol-method-implementation;-Wobjc-protocol-property-synthesis;-Wobjc-protocol-qualifiers;-Wobjc-readonly-with-setter-property;-Wobjc-redundant-api-use;-Wobjc-redundant-literal-use;-Wobjc-root-class;-Wobjc-string-compare;-Wobjc-string-concatenation;-Wobjc-unsafe-perform-selector;-Wodr;-Wold-style-cast;-Wold-style-definition;-Wopencl-unsupported-rgba;-Woption-ignored;-Wordered-compare-function-pointers;-Wout-of-line-declaration;-Wout-of-scope-function;-Wover-aligned;-Woverflow;-Woverloaded-shift-op-parentheses;-Woverloaded-virtual;-Woverride-init;-Woverride-module;-Woverriding-method-mismatch;-Woverriding-t-option;-Wpacked;-Wparentheses;-Wparentheses-equality;-Wpartial-availability;-Wpass-failed;-Wpch-date-time;-Wpedantic;-Wpedantic-core-features;-Wno-overlength-strings;-Wpessimizing-move;-Wpointer-arith;-Wpointer-bool-conversion;-Wpointer-integer-compare;-Wpointer-sign;-Wpointer-to-int-cast;-Wpointer-to-int-cast;-Wpointer-type-mismatch;-Wpotentially-evaluated-expression;-Wpragma-clang-attribute;-Wpragma-once-outside-header;-Wpragma-pack;-Wpragma-pack-suspicious-include;-Wpragma-system-header-outside-header;-Wpragmas;-Wpredefined-identifier-outside-function;-Wprivate-extern;-Wprivate-header;-Wprivate-module;-Wprofile-instr-missing;-Wprofile-instr-out-of-date;-Wprofile-instr-unprofiled;-Wproperty-access-dot-syntax;-Wproperty-attribute-mismatch;-Wprotocol;-Wprotocol-property-synthesis-ambiguity;-Wqualified-void-return-type;-Wquoted-include-in-framework-header;-Wrange-loop-analysis;-Wreadonly-iboutlet-property;-Wreceiver-expr;-Wreceiver-forward-class;-Wredeclared-class-member;-Wredundant-decls;-Wredundant-move;-Wredundant-parens;-Wregister;-Wreinterpret-base-class;-Wreorder;-Wrequires-super-attribute;-Wreserved-user-defined-literal;-Wretained-language-linkage;-Wreturn-stack-address;-Wreturn-std-move;-Wreturn-type;-Wreturn-type-c-linkage;-Wsection;-Wselector;-Wselector-type-mismatch;-Wself-assign;-Wself-assign-field;-Wself-assign-overloaded;-Wself-move;-Wsemicolon-before-method-body;-Wsentinel;-Wsequence-point;-Wserialized-diagnostics;-Wshadow-field;-Wshadow-field-in-constructor-modified;-Wshadow-ivar;-Wshadow-uncaptured-local;-Wshift-count-negative;-Wshift-count-overflow;-Wshift-negative-value;-Wshift-op-parentheses;-Wshift-overflow;-Wshift-sign-overflow;-Wshorten-64-to-32;-Wsign-compare;-Wsign-conversion;-Wsign-promo;-Wsigned-enum-bitfield;-Wsizeof-array-argument;-Wsizeof-array-decay;-Wsizeof-pointer-div;-Wsizeof-pointer-memaccess;-Wslash-u-filename;-Wsometimes-uninitialized;-Wsource-uses-openmp;-Wstack-protector;-Wstack-protector;-Wstatic-float-init;-Wstatic-in-inline;-Wstatic-inline-explicit-instantiation;-Wstatic-local-in-inline;-Wstatic-self-init;-Wstdlibcxx-not-found;-Wstrict-aliasing;-Wstrict-aliasing=0;-Wstrict-aliasing=1;-Wstrict-aliasing=2;-Wstrict-overflow;-Wstrict-overflow=0;-Wstrict-overflow=1;-Wstrict-overflow=2;-Wstrict-overflow=3;-Wstrict-overflow=4;-Wstrict-overflow=5;-Wstrict-prototypes;-Wstrict-prototypes;-Wstrict-selector-match;-Wstring-compare;-Wstring-conversion;-Wstring-plus-char;-Wstring-plus-int;-Wstrlcpy-strlcat-size;-Wstrncat-size;-Wsuper-class-method-mismatch;-Wsuspicious-bzero;-Wsuspicious-memaccess;-Wswitch;-Wswitch-bool;-Wswitch-default;-Wsync-fetch-and-nand-semantics-changed;-Wsynth;-Wtautological-compare;-Wtautological-constant-compare;-Wtautological-constant-in-range-compare;-Wtautological-constant-out-of-range-compare;-Wtautological-objc-bool-compare;-Wtautological-overlap-compare;-Wtautological-pointer-compare;-Wtautological-type-limit-compare;-Wtautological-undefined-compare;-Wtautological-unsigned-enum-zero-compare;-Wtautological-unsigned-zero-compare;-Wtentative-definition-incomplete-type;-Wthread-safety;-Wthread-safety-analysis;-Wthread-safety-attributes;-Wthread-safety-beta;-Wthread-safety-negative;-Wthread-safety-precise;-Wthread-safety-reference;-Wthread-safety-verbose;-Wtrigraphs;-Wtype-limits;-Wtype-safety;-Wtypedef-redefinition;-Wtypename-missing;-Wunable-to-open-stats-file;-Wunavailable-declarations;-Wundeclared-selector;-Wundef;-Wundefined-bool-conversion;-Wundefined-func-template;-Wundefined-inline;-Wundefined-internal;-Wundefined-internal-type;-Wundefined-reinterpret-cast;-Wundefined-var-template;-Wunderaligned-exception-object;-Wunevaluated-expression;-Wunguarded-availability;-Wunguarded-availability-new;-Wunicode;-Wunicode-homoglyph;-Wunicode-whitespace;-Wunicode-zero-width;-Wuninitialized;-Wunknown-argument;-Wunknown-attributes;-Wunknown-escape-sequence;-Wunknown-pragmas;-Wunknown-sanitizers;-Wunknown-warning-option;-Wunneeded-internal-declaration;-Wunneeded-member-function;-Wunreachable-code;-Wunreachable-code-loop-increment;-Wunreachable-code-return;-Wunsequenced;-Wunsupported-abs;-Wunsupported-availability-guard;-Wunsupported-cb;-Wunsupported-dll-base-class-template;-Wunsupported-friend;-Wunsupported-gpopt;-Wunsupported-nan;-Wunsupported-target-opt;-Wunsupported-visibility;-Wunusable-partial-specialization;-Wunused;-Wunused-argument;-Wunused-command-line-argument;-Wunused-comparison;-Wunused-const-variable;-Wunused-exception-parameter;-Wunused-function;-Wunused-getter-return-value;-Wunused-label;-Wunused-lambda-capture;-Wunused-local-typedef;-Wunused-local-typedefs;-Wunused-macros;-Wunused-member-function;-Wunused-parameter;-Wunused-private-field;-Wunused-property-ivar;-Wunused-result;-Wunused-template;-Wunused-value;-Wunused-variable;-Wunused-volatile-lvalue;-Wuser-defined-literals;-Wuser-defined-warnings;-Wvarargs;-Wvariadic-macros;-Wvec-elem-size;-Wvector-conversion;-Wvector-conversions;-Wvexing-parse;-Wvisibility;-Wvla;-Wvla-extension;-Wvoid-ptr-dereference;-Wvolatile-register-var;-Wweak-template-vtables;-Wwritable-strings;-Wwrite-strings;-Wzero-as-null-pointer-constant;-Wzero-length-array;-Wno-c99-extensions;-Wno-deprecated-dynamic-exception-spec;-Wno-non-virtual-dtor'
- ) }}
-
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: install dependencies (Homebrew)
- if: ${{ matrix.toolchain.homebrew_packages }}
- run: brew install ${{ matrix.toolchain.homebrew_packages }}
-
- - name: configure
- run: |
- env | grep '^ASAN_OPTIONS\|^CMAKE\|^QUICK_LINT_JS' | sort
- cmake -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" -DQUICK_LINT_JS_ENABLE_BENCHMARKS=YES -DBUILD_TESTING=YES ${CMAKE_C_COMPILER+-DCMAKE_C_COMPILER="${CMAKE_C_COMPILER}"} ${CMAKE_CXX_COMPILER+-DCMAKE_CXX_COMPILER="${CMAKE_CXX_COMPILER}"} -DCMAKE_C_FLAGS="${CMAKE_C_FLAGS}" -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS}" -DQUICK_LINT_JS_CXX_COMPILER_OPTIONS="${QUICK_LINT_JS_CXX_COMPILER_OPTIONS}" ${CMAKE_EXTRA_FLAGS} -S . -B .
- shell: bash
- - name: build
- run: cmake --build . --config Debug
- - name: test
- run: ctest --build-config Debug --verbose
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/build-fuzzer.yml b/.github/workflows/build-fuzzer.yml
new file mode 100644
index 0000000000..e405cb8038
--- /dev/null
+++ b/.github/workflows/build-fuzzer.yml
@@ -0,0 +1,88 @@
+# Copyright (C) 2020 Matthew Glazar
+# See end of file for extended copyright information.
+
+name: build the fuzzers
+on:
+ push:
+ pull_request:
+ types: [opened, synchronize]
+
+jobs:
+ build:
+ name: "Clang 13 Release libstdc++"
+ runs-on: ubuntu-latest
+ container: "ghcr.io/quick-lint/quick-lint-js-github-clang:v1"
+ env:
+ CMAKE_BUILD_TYPE: "Release"
+ CMAKE_C_COMPILER: "clang-13"
+ CMAKE_C_FLAGS: "-fsanitize=address,undefined,fuzzer-no-link -stdlib=libstdc++"
+ CMAKE_CXX_COMPILER: "clang++-13"
+ CMAKE_CXX_FLAGS: "-fsanitize=address,undefined,fuzzer-no-link"
+ ARTIFACT_PREFIX: "artifacts-"
+ LIBFUZZ_FALGS: "-max_total_time=5 -verbosity=0 -reload=0 -jobs=5 -workers=1"
+ steps:
+ - name: checkout
+ uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
+
+ - name: configure
+ run: |
+ env | grep '^ASAN_OPTIONS\|^CMAKE\|^QUICK_LINT_JS' | sort
+ mkdir build
+ cd build
+ CC=$CMAKE_C_COMPILER CXX=$CMAKE_CXX_COMPILER CFLAGS=$CMAKE_C_FLAGS CXXFLAGS=$CMAKE_CXX_FLAGS cmake -G Ninja -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DBUILD_TESTING=NO -DQUICK_LINT_JS_ENABLE_LLVM_LIBFUZZER_TESTS=ON ..
+ shell: bash
+
+ - name: build
+ run: ninja -C build
+
+ # TODO: should we keep the corpus between runs???
+ # - name: setup cache
+ # id: cache-corpus
+ # uses: actions/cache@v4
+ # with:
+ # path: corpus
+ # key: fuzz-corpus-${{ github.run_number }}
+ # restore-keys: |
+ # fuzz-corpus
+
+ - name: run
+ run: |
+ # for FILE in build/fuzz/quick-lint-js-fuzz-*; do echo running: $FILE; $FILE fuzz-tmp -runs=100 || exit 1; done
+ for FILE in build/fuzz/quick-lint-js-fuzz-*;
+ do
+ NAME=$(basename ${FILE})
+ echo running: $FILE;
+ mkdir -p corpus/$NAME
+ ./build/fuzz/$NAME corpus/$NAME -artifact_prefix=$ARTIFACT_PREFIX$NAME- $LIBFUZZ_FLAGS || echo "fuzzer $NAME found something!";
+ done
+
+ - name: move artifacts & logs
+ # if: failure()
+ run: |
+ mkdir -p artifact-upload
+ cp $ARTIFACT_PREFIX* artifact-upload/ || :
+ cp fuzz-* artifact-upload/ || :
+
+ - name: save artifacts
+ # if: failure()
+ uses: actions/upload-artifact@v3
+ with:
+ name: fuzz-artifacts-${{ github.run_number }}
+ path: artifact-upload
+# quick-lint-js finds bugs in JavaScript programs.
+# Copyright (C) 2020 Matthew Glazar
+#
+# This file is part of quick-lint-js.
+#
+# quick-lint-js is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# quick-lint-js is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/build-static.yml b/.github/workflows/build-static.yml
deleted file mode 100644
index 124cc8478f..0000000000
--- a/.github/workflows/build-static.yml
+++ /dev/null
@@ -1,463 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: build static
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- build:
- name: ${{ matrix.toolchain.name }}
- strategy:
- fail-fast: false
- matrix:
- toolchain:
- - {runs_on: macos-12, name: "macOS x86_64", archive_name: "macos", archive_extension: ".tar.gz", test: true, CC: /usr/local/opt/llvm@15/bin/clang, CXX: /usr/local/opt/llvm@15/bin/clang++, CFLAGS: "-isystem /usr/local/opt/llvm@15/include -isystem /usr/local/opt/llvm@15/include/c++/v1 -mmacosx-version-min=10.9 -D_LIBCPP_DISABLE_AVAILABILITY", LDFLAGS: "-L/usr/local/opt/llvm@15/lib -mlinker-version=278 -nostdlib++ /usr/local/opt/llvm@15/lib/c++/libc++.a /usr/local/opt/llvm@15/lib/c++/libc++abi.a", CMAKE_FLAGS: "-G Ninja", homebrew_packages: "ninja"}
- - {runs_on: stracle-macos-aarch64, name: "macOS AArch64", archive_name: "macos-aarch64", archive_extension: ".tar.gz", test: true, CFLAGS: "-mmacosx-version-min=11.0", CMAKE_FLAGS: "-G Ninja"}
- - {runs_on: ubuntu-latest, name: "Linux x86_64", archive_name: "linux", archive_extension: ".tar.gz", docker_container: "ghcr.io/quick-lint/quick-lint-js-github-baseline-builder:v1", test: true, LDFLAGS: "-static-libgcc -static-libstdc++", CMAKE_FLAGS: "-G Ninja"}
- - {runs_on: ubuntu-latest, name: "Linux ARM", archive_name: "linux-armhf", archive_extension: ".tar.gz", docker_container: "ghcr.io/quick-lint/quick-lint-js-github-cross-builder:v3", test: false, cross_compiling: true, CMAKE_FLAGS: "-DCMAKE_TOOLCHAIN_FILE=.github/toolchain-linux-armhf.cmake -G Ninja", LDFLAGS: "-static-libgcc -static-libstdc++"}
- - {runs_on: ubuntu-latest, name: "Linux AArch64", archive_name: "linux-aarch64", archive_extension: ".tar.gz", docker_container: "ghcr.io/quick-lint/quick-lint-js-github-cross-builder:v3", test: false, cross_compiling: true, CMAKE_FLAGS: "-DCMAKE_TOOLCHAIN_FILE=.github/toolchain-linux-aarch64.cmake -G Ninja", LDFLAGS: "-static-libgcc -static-libstdc++"}
- # HACK(strager): -Wl,-allow-multiple-definition works around a GCC bug: https://sourceware.org/bugzilla/show_bug.cgi?id=12762
- - {runs_on: windows-2022, name: "Windows x86", archive_name: "windows-x86", archive_extension: ".zip", test: true, CC: "c:/msys64/mingw32/bin/gcc.exe", CXX: "c:/msys64/mingw32/bin/g++.exe", CMAKE_FLAGS: "-G Ninja", chocolatey_packages: "ninja", msys2_packages: "mingw-w64-i686-gcc ninja", LDFLAGS: "-static -Wl,-allow-multiple-definition"}
- - {runs_on: windows-2022, name: "Windows x64", archive_name: "windows", archive_extension: ".zip", test: true, CC: "c:/msys64/ucrt64/bin/gcc.exe", CXX: "c:/msys64/ucrt64/bin/g++.exe", CMAKE_FLAGS: "-G Ninja", chocolatey_packages: "ninja", msys2_packages: "mingw-w64-ucrt-x86_64-gcc ninja", LDFLAGS: "-static"}
- - {runs_on: ubuntu-latest, name: "Windows ARM", archive_name: "windows-arm", archive_extension: ".zip", docker_container: "ghcr.io/quick-lint/quick-lint-js-github-mingw-builder:v3", test: false, cross_compiling: true, CMAKE_FLAGS: "-DCMAKE_TOOLCHAIN_FILE=.github/toolchain-mingw-armv7.cmake -G Ninja", LDFLAGS: "-static -Wl,-allow-multiple-definition"}
- - {runs_on: ubuntu-latest, name: "Windows ARM64", archive_name: "windows-arm64", archive_extension: ".zip", docker_container: "ghcr.io/quick-lint/quick-lint-js-github-mingw-builder:v3", test: false, cross_compiling: true, CMAKE_FLAGS: "-DCMAKE_TOOLCHAIN_FILE=.github/toolchain-mingw-aarch64.cmake -G Ninja", LDFLAGS: "-static -Wl,-allow-multiple-definition"}
- runs-on: ${{ matrix.toolchain.runs_on }}
- container: ${{ matrix.toolchain.docker_container }}
- env:
- CMAKE_CXX_COMPILER: ${{ matrix.toolchain.CXX }}
- CMAKE_CXX_FLAGS: ${{ matrix.toolchain.CFLAGS }}
- CMAKE_C_COMPILER: ${{ matrix.toolchain.CC }}
- CMAKE_C_FLAGS: ${{ matrix.toolchain.CFLAGS }}
- CMAKE_EXE_LINKER_FLAGS: ${{ matrix.toolchain.LDFLAGS }}
- CMAKE_EXTRA_FLAGS: ${{ matrix.toolchain.CMAKE_FLAGS }}
- CMAKE_SHARED_LINKER_FLAGS: ${{ matrix.toolchain.LDFLAGS }}
- QLJS_COLLECT_COPYRIGHT_NO_WARNINGS: 1
-
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: update $PATH
- if: ${{ matrix.toolchain.msys2_packages }}
- run: |
- # For DLLs needed by GCC:
- echo "c:/msys64/mingw32/bin" >>"${GITHUB_PATH}"
- echo "c:/msys64/ucrt64/bin" >>"${GITHUB_PATH}"
- shell: bash
-
- - name: install dependencies (Chocolatey)
- if: ${{ matrix.toolchain.chocolatey_packages }}
- run: choco install --yes ${{ matrix.toolchain.chocolatey_packages }}
- shell: powershell
- - name: install dependencies (Homebrew)
- if: ${{ matrix.toolchain.homebrew_packages }}
- run: brew install ${{ matrix.toolchain.homebrew_packages }}
- - name: install dependencies (MSYS2)
- if: ${{ matrix.toolchain.msys2_packages }}
- run: c:/msys64/usr/bin/pacman.exe --sync --noconfirm ${{ matrix.toolchain.msys2_packages }}
-
- - name: build tools for cross compilation
- if: ${{ matrix.toolchain.cross_compiling }}
- run: |
- unset CC CXX
- cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=OFF -S . -B build-tools -G Ninja
- cmake --build build-tools --config Debug --target quick-lint-js-build-tools
-
- - name: configure
- run: |
- env | grep '^CMAKE\|^QUICK_LINT_JS' | sort
- cmake ${CMAKE_C_COMPILER:+-DCMAKE_C_COMPILER="${CMAKE_C_COMPILER}"} ${CMAKE_CXX_COMPILER:+-DCMAKE_CXX_COMPILER="${CMAKE_CXX_COMPILER}"} -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=${{ matrix.toolchain.test }} -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=YES -DCMAKE_C_FLAGS="${CMAKE_C_FLAGS}" -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS}" -DCMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS}" ${{ fromJSON('["", "-DQUICK_LINT_JS_USE_BUILD_TOOLS=${PWD}/build-tools"]')[matrix.toolchain.cross_compiling] }} ${CMAKE_EXTRA_FLAGS} -S . -B build
- shell: bash
- - name: build
- run: cmake --build build --config Release
- - name: test
- if: ${{ matrix.toolchain.test }}
- run: cd build && ctest --build-config Release --verbose
- - name: install
- run: cmake --install build --prefix usr --strip
-
- - name: bundle build into .tar.gz
- if: ${{ matrix.toolchain.archive_extension == '.tar.gz' }}
- run: |
- mkdir temp
- mv usr temp/quick-lint-js
- tar czf ${{ matrix.toolchain.archive_name }}${{ matrix.toolchain.archive_extension }} -C temp/ quick-lint-js
- - name: bundle build into .zip
- if: ${{ matrix.toolchain.archive_extension == '.zip' }}
- uses: quick-lint/action-zip@26a249fb00d43ca98dad77a4b3838025fc226aa1 # v1.1
- with:
- dest: ${{ matrix.toolchain.archive_name }}${{ matrix.toolchain.archive_extension }}
- files: usr/
- recursive: true
-
- - name: upload build to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: quick-lint-js-${{ matrix.toolchain.archive_name }}-${{ github.sha }}
- path: ${{ matrix.toolchain.archive_name }}${{ matrix.toolchain.archive_extension }}
- - name: upload build to long-term storage
- if: ${{ github.event_name == 'push' && github.repository_owner == 'quick-lint' != null }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: ${{ matrix.toolchain.archive_name }}${{ matrix.toolchain.archive_extension }}
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/manual/
- user: ${{ secrets.artifacts_user }}
-
- test:
- name: test on ${{ matrix.os.name }}
- needs: build
- strategy:
- fail-fast: false
- matrix:
- os:
- - {runs_on: windows-latest, name: "Windows", archive_name: "windows", exe_file: "bin/quick-lint-js.exe"}
- - {runs_on: macos-11, name: "macOS 11", archive_name: "macos", exe_file: "bin/quick-lint-js"}
- - {runs_on: macos-12, name: "macOS 12", archive_name: "macos", exe_file: "bin/quick-lint-js"}
- - {runs_on: ubuntu-latest, docker_container: "archlinux:base", name: "Arch Linux", archive_name: "linux", exe_file: "bin/quick-lint-js"}
- - {runs_on: ubuntu-latest, docker_container: "debian:bullseye", name: "Debian 11 Bullseye", archive_name: "linux", exe_file: "bin/quick-lint-js"}
- - {runs_on: ubuntu-latest, docker_container: "debian:buster", name: "Debian 10 Buster", archive_name: "linux", exe_file: "bin/quick-lint-js"}
- - {runs_on: ubuntu-latest, docker_container: "fedora:35", name: "Fedora 35", archive_name: "linux", exe_file: "bin/quick-lint-js"}
- - {runs_on: ubuntu-latest, docker_container: "fedora:36", name: "Fedora 36", archive_name: "linux", exe_file: "bin/quick-lint-js"}
- - {runs_on: ubuntu-latest, docker_container: "ubuntu:18.04", name: "Ubuntu 18.04 LTS Bionic", archive_name: "linux", exe_file: "bin/quick-lint-js"}
- - {runs_on: ubuntu-latest, docker_container: "ubuntu:20.04", name: "Ubuntu 20.04 LTS Focal", archive_name: "linux", exe_file: "bin/quick-lint-js"}
- runs-on: ${{ matrix.os.runs_on }}
- container: ${{ matrix.os.docker_container }}
-
- steps:
- - name: OS information
- run: |
- exec 2>&1
- set -x
-
- cat /etc/lsb-release || :
- cat /etc/os-release || :
- cat /etc/system-release || :
- sw_vers || :
- systeminfo || :
- uname -a || :
- shell: bash
-
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-${{ matrix.os.archive_name }}-${{ github.sha }}
- - name: unpack .zip build
- if: ${{ matrix.os.archive_name == 'windows' }}
- run: Expand-Archive -LiteralPath ${{ matrix.os.archive_name }}.zip -DestinationPath quick-lint-js
- shell: powershell
- - name: unpack .tar.gz build
- if: ${{ matrix.os.archive_name != 'windows' }}
- run: tar xf ${{ matrix.os.archive_name }}.tar.gz
-
- - name: test
- run: DYLD_BIND_AT_LAUNCH=1 LD_BIND_NOW=1 quick-lint-js/${{ matrix.os.exe_file }} --version
- shell: bash
-
- package-npm:
- name: npm package
- needs: [build, test]
- runs-on: ubuntu-latest
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-linux-${{ github.sha }}
- path: ./
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-linux-armhf-${{ github.sha }}
- path: ./
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-linux-aarch64-${{ github.sha }}
- path: ./
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-macos-${{ github.sha }}
- path: ./
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-macos-aarch64-${{ github.sha }}
- path: ./
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-windows-${{ github.sha }}
- path: ./
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-windows-x86-${{ github.sha }}
- path: ./
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-windows-arm64-${{ github.sha }}
- path: ./
- - name: extract downloaded archives
- run: |
- set -x
-
- tar xf linux.tar.gz
- mv quick-lint-js dist/npm/linux-x64
-
- tar xf linux-armhf.tar.gz
- mv quick-lint-js dist/npm/linux-arm
-
- tar xf linux-aarch64.tar.gz
- mv quick-lint-js dist/npm/linux-arm64
-
- tar xf macos.tar.gz
- mv quick-lint-js dist/npm/darwin-x64
-
- tar xf macos-aarch64.tar.gz
- mv quick-lint-js dist/npm/darwin-arm64
-
- mkdir dist/npm/win32-x64
- unzip windows.zip -d dist/npm/win32-x64/
-
- mkdir dist/npm/win32-arm64
- unzip windows-arm64.zip -d dist/npm/win32-arm64/
-
- mkdir dist/npm/win32-ia32
- unzip windows-x86.zip -d dist/npm/win32-ia32/
-
- - name: package
- run: npm pack ./dist/npm
-
- - name: upload package to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: quick-lint-js-npm-${{ github.sha }}
- path: quick-lint-js-*.tgz
- - name: upload package to long-term storage
- if: ${{ github.event_name == 'push' && github.repository_owner == 'quick-lint' != null }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: quick-lint-js-*.tgz
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/npm/
- user: ${{ secrets.artifacts_user }}
-
- test-npm-package:
- name: test npm package on ${{ matrix.os.name }} with ${{ matrix.manager.name }}
- needs: package-npm
- strategy:
- fail-fast: false
- matrix:
- os:
- - {runs_on: windows-latest, name: "Windows", test_cmd: true}
- - {runs_on: macos-11, name: "macOS 11"}
- - {runs_on: macos-12, name: "macOS 12"}
- - {runs_on: ubuntu-latest, name: "Ubuntu", global_install_command_prefix: "sudo"}
- manager:
- - {name: "npm", install_command: "npm install", global: false}
- - {name: "npm (--global)", install_command: "npm install --global --unsafe-perm", global: true}
- - {name: "Yarn", install_command: "yarn add", global: false}
- runs-on: ${{ matrix.os.runs_on }}
-
- steps:
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-npm-${{ github.sha }}
-
- - name: install globally
- if: ${{ matrix.manager.global }}
- run: ${{ matrix.os.global_install_command_prefix }} ${{ matrix.manager.install_command }} ./quick-lint-js-*.tgz
- shell: bash
- - name: test globally
- if: ${{ matrix.manager.global }}
- run: quick-lint-js --version
-
- - name: install locally
- if: ${{ !matrix.manager.global }}
- run: |
- echo '{}' >package.json
- ${{ matrix.manager.install_command }} ./quick-lint-js-*.tgz
- shell: bash
- - name: test locally
- if: ${{ !matrix.manager.global }}
- run: ./node_modules/.bin/quick-lint-js --version
- shell: bash
- - name: test locally (.cmd)
- if: ${{ !matrix.manager.global && matrix.os.test_cmd }}
- run: node_modules/.bin/quick-lint-js.cmd --version
-
- package-chocolatey:
- name: Chocolatey package
- needs: build
- runs-on: ubuntu-latest
- container: ghcr.io/quick-lint/quick-lint-js-github-go-builder:v1
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-windows-${{ github.sha }}
- path: ./
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-windows-x86-${{ github.sha }}
- path: ./
-
- - name: package
- run: go run ./dist/chocolatey/build.go -x86-ZIP ./windows-x86.zip -x64-ZIP ./windows.zip -Out ./quick-lint-js.nupkg
-
- - name: upload package to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: quick-lint-js-chocolatey-${{ github.sha }}
- path: quick-lint-js.nupkg
- - name: upload package to long-term storage
- if: ${{ github.event_name == 'push' && github.repository_owner == 'quick-lint' != null }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: quick-lint-js.nupkg
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/chocolatey/
- user: ${{ secrets.artifacts_user }}
-
- test-chocolatey-package:
- name: test Chocolatey package
- needs: package-chocolatey
- runs-on: windows-latest
- steps:
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-chocolatey-${{ github.sha }}
- - name: install
- run: choco install quick-lint-js -s .
- - name: test
- run: quick-lint-js --version
-
- package-scoop:
- name: Scoop package
- needs: build
- runs-on: ubuntu-latest
- container: ghcr.io/quick-lint/quick-lint-js-github-go-builder:v1
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-windows-${{ github.sha }}
- path: ./
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-windows-x86-${{ github.sha }}
- path: ./
-
- - name: create manifest
- run: go run ./dist/scoop/make-manifest.go -BaseURI 'https://c.quick-lint-js.com/builds/${{ github.sha }}/' -x86-ZIP ./windows-x86.zip -x64-ZIP ./windows.zip -Out ./quick-lint-js.json
-
- - name: upload manifest to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: quick-lint-js-scoop-${{ github.sha }}
- path: quick-lint-js.json
- - name: upload manifest to long-term storage
- if: ${{ github.event_name == 'push' && github.repository_owner == 'quick-lint' != null }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: quick-lint-js.json
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/scoop/
- user: ${{ secrets.artifacts_user }}
-
- package-msix:
- name: MSIX installer
- needs: build
- runs-on: windows-2022
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-windows-${{ github.sha }}
- path: ./
-
- - name: extract ZIP
- run: Expand-Archive -LiteralPath windows.zip -DestinationPath quick-lint-js
- shell: powershell
-
- - name: create MSIX
- run: |
- PATH="${PATH}:/c/Program Files (x86)/Windows Kits/10/App Certification Kit"
- go run ./dist/msix/build-unsigned-msix.go -EXE ./quick-lint-js/bin/quick-lint-js.exe -License ./quick-lint-js/share/doc/quick-lint-js/copyright -Out quick-lint-js.msix
- shell: bash
-
- - name: upload MSIX to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: quick-lint-js-msix-${{ github.sha }}
- path: quick-lint-js.msix
- - name: upload MSIX to long-term storage
- if: ${{ github.event_name == 'push' && github.repository_owner == 'quick-lint' != null }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: quick-lint-js.msix
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/windows/
- user: ${{ secrets.artifacts_user }}
-
- package-winget:
- name: winget manifests
- needs: package-msix
- runs-on: ubuntu-latest
- container: ghcr.io/quick-lint/quick-lint-js-github-go-builder:v1
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-msix-${{ github.sha }}
- path: ./
-
- - name: create manifests
- run: go run ./dist/winget/make-manifests.go -BaseURI 'https://c.quick-lint-js.com/builds/${{ github.sha }}/' -MSIX ./quick-lint-js.msix -OutDir winget-manifests
-
- - name: upload manifests to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: quick-lint-js-winget-${{ github.sha }}
- path: winget-manifests/
- - name: upload manifests to long-term storage
- if: ${{ github.event_name == 'push' && github.repository_owner == 'quick-lint' != null }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: winget-manifests/*
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/winget/
- user: ${{ secrets.artifacts_user }}
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/build-website.yml b/.github/workflows/build-website.yml
deleted file mode 100644
index f1f0623027..0000000000
--- a/.github/workflows/build-website.yml
+++ /dev/null
@@ -1,129 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: build website
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- build:
- name: website
- runs-on: ubuntu-latest
- container: ghcr.io/quick-lint/quick-lint-js-github-website-builder:v5
- env:
- QLJS_COLLECT_COPYRIGHT_NO_WARNINGS: 1
-
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: C++ configure
- run: emcmake cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=NO -DCMAKE_C_FLAGS='-Os -flto' -DCMAKE_CXX_FLAGS='-Os -flto'
- - name: C++ build
- run: emmake cmake --build build --target quick-lint-js-vscode quick-lint-js-vscode-licenses
- - name: C++ install
- run: emmake cmake --install build --component vscode --prefix website/public/demo
-
- - name: get yarn cache directory path
- id: yarn-cache-dir-path
- run: printf 'dir=%s\n' "$(yarn cache dir)" >>"${GITHUB_OUTPUT}"
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- id: yarn-cache
- with:
- path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
-
- - name: JS configure
- working-directory: website
- run: yarn
-
- - name: JS test
- working-directory: website
- run: yarn test
-
- - name: build site
- working-directory: website
- run: yarn build
-
- - name: bundle site
- working-directory: website
- run: zip -r ../website.zip www
-
- - name: check links (dev)
- run: |
- server_process_is_alive() {
- kill -0 "${server_pid}"
- }
- http_server_is_running() {
- curl_status=0
- curl --no-progress-meter --head -o /dev/null 'http://localhost:9001/' || curl_status="${?}"
- if [ "${curl_status}" -eq 7 ]; then # 7 is 'Failed to connect to host.'
- return 1
- fi
- return 0
- }
-
- set -x
- cd website/
- yarn start localhost 9001 &
- server_pid="${!}"
- cd ../
-
- while server_process_is_alive && ! http_server_is_running; do
- sleep 0.1
- done
- ./website/tools/check-links.mjs http://localhost:9001/
- kill "${server_pid}"
- shell: bash
-
- - name: check links (apache2)
- run: |
- rsync --archive --delete website/www/ /var/www/html/
- service apache2 start
- ./website/tools/check-links.mjs http://localhost/
-
- - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- if: failure()
- with:
- name: apache-error-log
- path: /var/log/apache2/error.log
- if-no-files-found: ignore
-
- - name: upload build to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: website-${{ github.sha }}
- path: website/www/
-
- - name: upload build to long-term storage
- if: ${{ github.event_name == 'push' && github.repository_owner == 'quick-lint' != null }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: website.zip
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/website/
- user: ${{ secrets.artifacts_user }}
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/check-copyright.yml b/.github/workflows/check-copyright.yml
deleted file mode 100644
index 2f5962d3f2..0000000000
--- a/.github/workflows/check-copyright.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: check copyright
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- check_copyright:
- name: check copyright
- runs-on: ubuntu-latest
- container: bash:5.2-alpine3.17
- steps:
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - run: |
- if ! ./tools/check-file-copyrights; then
- printf '::error ::%s\n' 'Sources are missing copyright headers. Please add copyright headers for any new files you create.'
- exit 1
- fi
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/check-error-docs.yml b/.github/workflows/check-error-docs.yml
deleted file mode 100644
index 25cefa82bf..0000000000
--- a/.github/workflows/check-error-docs.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: check error docs
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- check_format:
- name: check error docs
- runs-on: ubuntu-latest
- container: ghcr.io/quick-lint/quick-lint-js-github-website-builder:v5
- steps:
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: C++ configure
- run: emcmake cmake -S . -B build -G Ninja
- - name: C++ build
- run: emmake cmake --build build --target quick-lint-js-vscode quick-lint-js-vscode-licenses
- - name: C++ install
- run: emmake cmake --install build --component vscode --prefix website/public/demo
-
- - name: JS configure
- run: cd website && yarn install --production
-
- - name: check docs
- run: node website/tools/check-error-documentation.mjs
- - name: check diagnostics
- run: node website/tools/check-diagnostic-messages.mjs
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/check-format.yml b/.github/workflows/check-format.yml
deleted file mode 100644
index fd403ae54c..0000000000
--- a/.github/workflows/check-format.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: check format
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- check_format:
- name: check format
- runs-on: ubuntu-latest
- container: ghcr.io/quick-lint/quick-lint-js-github-clang-format:v1
- steps:
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- # HACK(strager): Work around the following error from 'git ls-files' used
- # by ./tools/format:
- #
- # fatal: unsafe repository ('/__w/quick-lint-js/quick-lint-js' is owned by someone else)
- #
- # See also: https://github.com/actions/checkout/issues/760
- - name: work around permission issue
- run: git config --global --add safe.directory /__w/quick-lint-js/quick-lint-js
-
- - run: clang-format --version
- - run: ./tools/format
- - run: |
- if ! git diff --exit-code; then
- printf '::error ::%s\n' 'Sources are not formatted with clang-format. Run clang-format or apply the above patch, and amend your commit: https://github.com/quick-lint/quick-lint-js/blob/master/docs/CONTRIBUTING.md#clang-format'
- exit 1
- fi
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/ci-self-check.yml b/.github/workflows/ci-self-check.yml
deleted file mode 100644
index 5cc9acf7ee..0000000000
--- a/.github/workflows/ci-self-check.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-# These jobs ensure CI infrastructure is working as expected.
-
-name: CI self-check
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- # Double-check that our worker is still running scripts as ARM64 (not x86_64).
- macos-arm:
- name: macOS Apple Silicon (ARM64/AArch64)
- runs-on: stracle-macos-aarch64
- steps:
- - name: check architecture
- run: |
- current_arch="$(arch)"
- printf 'current arch: %s\n' "${current_arch}" >&2
- case "${current_arch}" in
- arm64*)
- printf 'architecture OK\n' >&2
- ;;
- *)
- printf 'error: unexpected architecture\n' >&2
- exit 1
- ;;
- esac
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml
deleted file mode 100644
index 55700a8d3c..0000000000
--- a/.github/workflows/cla.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: CLA
-on:
- issue_comment:
- types: [created]
- pull_request_target:
- types: [opened, synchronize]
-
-jobs:
- cla-assistant:
- runs-on: ubuntu-latest
- container: ghcr.io/quick-lint/quick-lint-js-github-clang-format:v1
- steps:
- - name: CLA Assistant
- if: |
- github.event_name == 'pull_request_target' || github.event.comment.body == 'I have read and hereby agree to quick-lint-js'' Contributor License Agreement (CLA-v1.md).' || github.event.comment.body == 'recheck'
- uses: quick-lint/cla-assistant-action@948230deb0d44dd38957592f08c6bd934d96d0cf # v2.1.2-beta
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PERSONAL_ACCESS_TOKEN : ${{ secrets.CLA_ASSISTANT_PERSONAL_ACCESS_TOKEN }}
- with:
- lock-pullrequest-aftermerge: false
- path-to-document: https://github.com/quick-lint/quick-lint-js/blob/master/docs/CLA-v1.md
-
- # Commit the signatures to a separate repository.
- branch: master
- path-to-signatures: CLA-v1.json
- remote-organization-name: quick-lint
- remote-repository-name: quick-lint-js-cla
-
- create-file-commit-message: Update CLA signatures
- custom-allsigned-prcomment: |
- Thank you for your contribution! Like many free software projects, you must sign our [Contributor License Agreement](https://github.com/quick-lint/quick-lint-js/blob/master/docs/CLA-v1.md) before we can accept your contribution.
-
- **EDIT**: All contributors have signed quick-lint-js' Contributor License Agreement (CLA-v1.md).
- custom-notsigned-prcomment: "Thank you for your contribution! Like many free software projects, you must sign our [Contributor License Agreement](https://github.com/quick-lint/quick-lint-js/blob/master/docs/CLA-v1.md) before we can accept your contribution. You can agree to the Contributor License Agreement by copy-pasting the following message into a new comment on this GitHub pull request:"
- custom-pr-sign-comment: "I have read and hereby agree to quick-lint-js' Contributor License Agreement (CLA-v1.md)."
- signed-commit-message: 'Add CLAv1 signature: $contributorName signed in PR #$pullRequestNo'
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/debian-package.yml b/.github/workflows/debian-package.yml
deleted file mode 100644
index ab29bd080a..0000000000
--- a/.github/workflows/debian-package.yml
+++ /dev/null
@@ -1,124 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: Debian package
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- # TODO(strager): Also build ARM (32-bit) .deb-s.
- build-deb:
- name: build .deb ${{ matrix.os.arch }}
- strategy:
- fail-fast: false
- matrix:
- os:
- - {arch: amd64, runs_on: ubuntu-latest, docker_container: "ghcr.io/quick-lint/quick-lint-js-github-baseline-builder:v1", build_env: ""}
- - {arch: arm64, runs_on: stracle-linux-aarch64, docker_container: "ghcr.io/quick-lint/quick-lint-js-github-builder-aarch64:v1", build_env: ""}
- runs-on: ${{ matrix.os.runs_on }}
- container: ${{ matrix.os.docker_container }}
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- # HACK(strager): Work around the following error from
- # build.sh:
- #
- # fatal: detected dubious ownership in repository at '/__w/quick-lint-js/quick-lint-js'
- #
- # See also: https://github.com/actions/checkout/issues/760
- - name: work around permission issue
- run: git config --global --add safe.directory /__w/quick-lint-js/quick-lint-js
-
- - name: build
- run: ${{ matrix.os.build_env }} ./dist/debian/build.sh --bionic
-
- - name: upload build to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: quick-lint-js-deb-${{ matrix.os.arch }}-${{ github.sha }}
- path: |
- dist/debian/build/quick-lint-js-dbgsym_*
- dist/debian/build/quick-lint-js-vim_*
- dist/debian/build/quick-lint-js_*
- - name: upload build to long-term storage
- if: ${{ github.event_name == 'push' && github.repository_owner == 'quick-lint' != null }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: |
- dist/debian/build/quick-lint-js-dbgsym_*
- dist/debian/build/quick-lint-js-vim_*
- dist/debian/build/quick-lint-js_*
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/debian/${{ matrix.os.arch }}/
- user: ${{ secrets.artifacts_user }}
-
- test-deb:
- name: test on ${{ matrix.os.name }} ${{ matrix.os.arch }}
- needs: build-deb
- strategy:
- fail-fast: false
- matrix:
- os:
- - {arch: amd64, runs_on: ubuntu-latest, docker_container: "debian:bullseye", name: "Debian 11 Bullseye"}
- - {arch: amd64, runs_on: ubuntu-latest, docker_container: "debian:buster", name: "Debian 10 Buster"}
- - {arch: amd64, runs_on: ubuntu-latest, docker_container: "pureos/pureos:amber-latest", name: "PureOS Amber"}
- - {arch: amd64, runs_on: ubuntu-latest, docker_container: "ubuntu:16.04", name: "Ubuntu 16.04 LTS Xenial"}
- - {arch: amd64, runs_on: ubuntu-latest, docker_container: "ubuntu:18.04", name: "Ubuntu 18.04 LTS Bionic"}
- - {arch: amd64, runs_on: ubuntu-latest, docker_container: "ubuntu:20.04", name: "Ubuntu 20.04 LTS Focal"}
- - {arch: arm64, runs_on: stracle-linux-aarch64, docker_container: "debian:bullseye", name: "Debian 11 Bullseye"}
- - {arch: arm64, runs_on: stracle-linux-aarch64, docker_container: "debian:buster", name: "Debian 10 Buster"}
- - {arch: arm64, runs_on: stracle-linux-aarch64, docker_container: "ubuntu:20.04", name: "Ubuntu 20.04 LTS Focal"}
- - {arch: arm64, runs_on: stracle-linux-aarch64, docker_container: "ubuntu:22.04", name: "Ubuntu 22.04 LTS Jammy"}
- runs-on: ${{ matrix.os.runs_on }}
- container: ${{ matrix.os.docker_container }}
-
- steps:
- - name: OS information
- run: |
- exec 2>&1
- set -x
-
- cat /etc/lsb-release || :
- cat /etc/os-release || :
- cat /etc/system-release || :
- uname -a || :
-
- - name: update apt
- run: apt-get update
-
- - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- with:
- name: quick-lint-js-deb-${{ matrix.os.arch }}-${{ github.sha }}
-
- - name: install quick-lint-js
- run: dpkg -i quick-lint-js_*.deb
- - name: test quick-lint-js
- run: quick-lint-js --version
-
- - name: install quick-lint-js-vim dependencies
- run: DEBIAN_FRONTEND=noninteractive apt-get install -y vim vim-addon-manager
- - name: install quick-lint-js-vim
- run: dpkg -i quick-lint-js-vim_*.deb
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/simple-build.yml b/.github/workflows/simple-build.yml
deleted file mode 100644
index 8814464e81..0000000000
--- a/.github/workflows/simple-build.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: simple build
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- build:
- name: ${{ matrix.toolchain.name }}
- strategy:
- fail-fast: false
- matrix:
- toolchain:
- - {runs_on: macos-12, name: "macOS"}
- - {runs_on: ubuntu-latest, name: "Linux", "ghcr.io/quick-lint/quick-lint-js-github-gcc:v1"}
- runs-on: ${{ matrix.toolchain.runs_on }}
- container: ${{ matrix.toolchain.container }}
-
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: build
- # Keep in sync with "single-command build" in website/public/contribute/build-from-source/.
- run: 'c++ -o quick-lint-js -std=gnu++17 -I src -I vendor/simdjson/include -I vendor/simdjson/src -D_LIBCPP_HIDE_FROM_ABI_PER_TU_BY_DEFAULT=1 -D_LIBCPP_INLINE_VISIBILITY="__attribute__((internal_linkage))" src/quick-lint-js/*.cpp src/quick-lint-js/*/*.cpp vendor/simdjson/src/simdjson.cpp -pthread'
-
- - name: test
- run: |
- printf 'const x = 3;\nconst x = 4;\n' >errors.js
- (
- set +e
- ./quick-lint-js errors.js
- echo "STATUS=$?"
- ) >output.txt 2>&1
- cat output.txt
-
- grep E0034 output.txt
- grep STATUS=1 output.txt
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/tag-build.yml b/.github/workflows/tag-build.yml
deleted file mode 100644
index ed6b72f124..0000000000
--- a/.github/workflows/tag-build.yml
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: tag build
-on: push
-
-jobs:
- tag-build:
- name: tag
- runs-on: ubuntu-latest
- container: ghcr.io/quick-lint/quick-lint-js-github-clang-format:v1
- steps:
- - name: create tag file
- run: |
- printf 'Git-Commit: %s\nWebsite-URL: %s' ${{ github.sha }} 'https://quick-lint-js.com/' >README
- - name: upload tag file
- if: ${{ github.repository_owner == 'quick-lint' }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: README
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/
- user: ${{ secrets.artifacts_user }}
-
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- # HACK(strager): Work around the following error from 'git ls-files' used
- # by ./tools/format:
- #
- # fatal: unsafe repository ('/__w/quick-lint-js/quick-lint-js' is owned by someone else)
- #
- # See also: https://github.com/actions/checkout/issues/760
- - name: work around permission issue
- run: git config --global --add safe.directory /__w/quick-lint-js/quick-lint-js
-
- - name: get version
- id: getversion
- run: printf 'QLJS_VERSION=%s\n' "$(head -n1 version)" >>"${GITHUB_OUTPUT}"
- shell: bash
-
- - name: create source archive
- run: git archive --format tar.gz --prefix "quick-lint-js-${QLJS_VERSION}/" --output "quick-lint-js-${QLJS_VERSION}.tar.gz" HEAD
- env:
- QLJS_VERSION: ${{ steps.getversion.outputs.QLJS_VERSION }}
- - name: upload source archive
- if: ${{ github.repository_owner == 'quick-lint' }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: quick-lint-js-${{ steps.getversion.outputs.QLJS_VERSION }}.tar.gz
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/source/
- user: ${{ secrets.artifacts_user }}
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/test-emacs-plugin.yml b/.github/workflows/test-emacs-plugin.yml
deleted file mode 100644
index 57ac79f25a..0000000000
--- a/.github/workflows/test-emacs-plugin.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: test Emacs plugin
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- build:
- name: Emacs
- runs-on: ubuntu-latest
- container: ghcr.io/quick-lint/quick-lint-js-github-emacs:v1
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: configure
- run: cmake -DBUILD_TESTING=OFF -S . -B . -G Ninja
- - name: build
- run: cmake --build . --config Debug
- - name: install
- run: cmake --install . --config Debug
-
- - name: version
- run: emacs --version
- - name: test
- run: ./plugin/emacs/test-emacs.sh
-
- - name: package Emacs plugin
- run: ./plugin/emacs/create-archive
-
- - name: upload archive to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: web-demo-dist-${{ github.sha }}
- path: plugin/emacs/quick-lint-js-emacs.zip
- - name: upload archive to long-term storage
- if: ${{ github.event_name == 'push' && github.repository_owner == 'quick-lint' != null }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: plugin/emacs/quick-lint-js-emacs.zip
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/emacs/
- user: ${{ secrets.artifacts_user }}
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/test-homebrew-package.yml b/.github/workflows/test-homebrew-package.yml
deleted file mode 100644
index 1a078d8c0d..0000000000
--- a/.github/workflows/test-homebrew-package.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: Homebrew package
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- homebrew:
- name: ${{ matrix.toolchain.name }}
- strategy:
- fail-fast: false
- matrix:
- toolchain:
- - {runs_on: macos-11, name: "macOS 11"}
- - {runs_on: macos-12, name: "macOS 12"}
- runs-on: ${{ matrix.toolchain.runs_on }}
- env:
- HOMEBREW_NO_ANALYTICS: 1
- HOMEBREW_NO_AUTO_UPDATE: 1
- HOMEBREW_NO_INSTALL_CLEANUP: 1
-
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: brew tap
- run: brew tap quick-lint/quick-lint-js .
- - name: override HEAD revision
- run: |
- set -x
- formula_path="$(brew formula quick-lint/quick-lint-js/quick-lint-js)"
- sed -e 's,:branch => "master",:revision => "'"$(git rev-parse HEAD)"'",' "${formula_path}"
- printf 'updated formula:\n'
- cat "${formula_path}"
-
- - name: brew install
- run: brew install --HEAD quick-lint/quick-lint-js/quick-lint-js
- - name: test
- run: quick-lint-js --version
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/test-install.yml b/.github/workflows/test-install.yml
deleted file mode 100644
index e3f371399c..0000000000
--- a/.github/workflows/test-install.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: test install
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- build:
- name: test install
- runs-on: ubuntu-latest
- container: ghcr.io/quick-lint/quick-lint-js-github-gcc:v1
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: configure
- run: cmake -DBUILD_TESTING=OFF -S . -B . -G Ninja
- - name: build
- run: cmake --build . --config Debug
- - name: install
- run: cmake --install . --config Debug
-
- - name: test executable
- run: cd / && quick-lint-js --help
- - name: test copyright
- run: grep GPL /usr/local/share/doc/quick-lint-js/copyright
- - name: test man pages
- run: grep '^\.TH' /usr/local/share/man/man1/quick-lint-js.1
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/test-nix-install.yml b/.github/workflows/test-nix-install.yml
deleted file mode 100644
index cd274fc5b2..0000000000
--- a/.github/workflows/test-nix-install.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: test Nix install
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- build-nix:
- name: test Nix install
- runs-on: ubuntu-latest
- # TODO(strager): Use a stable Docker image.
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: install nix
- uses: quick-lint/install-nix-action@29bd9290ef037a3ecbdafe83cbd2185e9dd0fa0a # v20
- with:
- nix_path: nixpkgs=channel:nixpkgs-unstable
-
- - name: install
- run: nix-env -f . -i
-
- - name: test executable
- run: cd / && quick-lint-js --help
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/test-vim-plugin.yml b/.github/workflows/test-vim-plugin.yml
deleted file mode 100644
index 03212347b1..0000000000
--- a/.github/workflows/test-vim-plugin.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: test Vim plugin
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- build:
- name: ${{ matrix.vim.name }}
- strategy:
- fail-fast: false
- matrix:
- vim:
- - {name: "Neovim", version_command: "nvim --version", test_command: "./plugin/vim/test-nvim.sh"}
- - {name: "Vim", version_command: "vim --version", test_command: "./plugin/vim/test-vim.sh"}
- runs-on: ubuntu-latest
- container: ghcr.io/quick-lint/quick-lint-js-github-vim:v1
- steps:
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: version
- run: ${{ matrix.vim.version_command }}
-
- - name: test
- run: ${{ matrix.vim.test_command }}
-
- - name: package Vim plugin
- run: ./plugin/vim/create-archive
-
- - name: upload archive to workflow
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- if-no-files-found: error
- name: web-demo-dist-${{ github.sha }}
- path: plugin/vim/quick-lint-js-vim.zip
- - name: upload archive to long-term storage
- if: ${{ github.event_name == 'push' && github.repository_owner == 'quick-lint' != null }}
- uses: quick-lint/sftp-upload@1fa54164d4bdd081207a6e54ec143d8dda3a7fb8 # v3
- with:
- host: ${{ secrets.artifacts_host }}
- local-file-globs: plugin/vim/quick-lint-js-vim.zip
- private-key: ${{ secrets.artifacts_key }}
- remote-directory: ${{ secrets.artifacts_root }}/builds/${{ github.sha }}/vim/
- user: ${{ secrets.artifacts_user }}
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .
diff --git a/.github/workflows/unvendored.yml b/.github/workflows/unvendored.yml
deleted file mode 100644
index 491116596c..0000000000
--- a/.github/workflows/unvendored.yml
+++ /dev/null
@@ -1,119 +0,0 @@
-# Copyright (C) 2020 Matthew Glazar
-# See end of file for extended copyright information.
-
-name: build unvendored
-on:
- push:
- pull_request:
- types: [opened, synchronize]
-
-jobs:
- arch-linux:
- name: Arch Linux
- runs-on: ubuntu-latest
- container: archlinux:base
- steps:
- - name: install dependencies
- run: |
- pacman -Syyuu --noconfirm \
- base-devel \
- benchmark \
- cmake \
- git \
- gtest \
- sudo
-
- # HACK(strager): Create a user so we can run makepkg. makepkg refuses
- # to run as root.
- useradd arch-builder
- printf 'arch-builder ALL=(ALL) NOPASSWD: ALL\n' >/etc/sudoers.d/arch-builder
-
- sudo -u arch-builder sh -e -c '
- git clone https://aur.archlinux.org/simdjson.git /tmp/aur-simdjson
- cd /tmp/aur-simdjson
- makepkg --syncdeps --install --noconfirm
- '
-
- # HACK(strager): Work around the following error from
- # 'git remote add origin ...':
- #
- # fatal: unsafe repository ('/__w/quick-lint-js/quick-lint-js' is owned by someone else)
- #
- # See also: https://github.com/actions/checkout/issues/760
- - name: work around permission issue
- run: git config --global --add safe.directory /__w/quick-lint-js/quick-lint-js
-
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: configure
- run: |
- # HACK(strager): QUICK_LINT_JS_HAVE_WORKING_CHAR8_T is needed because
- # Arch's gmock doesn't link with -fchar8_t.
- cmake \
- -DCMAKE_BUILD_TYPE=Debug \
- -DBUILD_TESTING=YES \
- -DQUICK_LINT_JS_ENABLE_BENCHMARKS=YES \
- -DQUICK_LINT_JS_HAVE_WORKING_FCHAR8_T=NO \
- -DQUICK_LINT_JS_USE_BUNDLED_GOOGLE_BENCHMARK=NO \
- -DQUICK_LINT_JS_USE_BUNDLED_GOOGLE_TEST=NO \
- -DQUICK_LINT_JS_USE_BUNDLED_SIMDJSON=NO \
- -S . -B .
- shell: bash
- - name: build
- run: cmake --build . --config Debug
- - name: test
- run: ctest --build-config Debug --verbose
-
- ubuntu:
- name: Ubuntu 20.04
- runs-on: ubuntu-20.04
- steps:
- - name: install dependencies
- run: |
- DEBIAN_FRONTEND=noninteractive sudo apt-get install -y \
- libgmock-dev \
- libgtest-dev
-
- - name: checkout
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - name: configure
- run: |
- # TODO(strager): Use host Google Benchmark after this bug is fixed:
- # https://bugs.launchpad.net/ubuntu/+source/benchmark/+bug/1887872
- # TODO(strager): Use host Boost after Ubuntu upgrades to version 1.75
- # or newer:
- # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=978748#15
- # TODO(strager): Use host simdjson after Ubuntu imports a stable
- # version from Debian.
- cmake \
- -DCMAKE_EXE_LINKER_FLAGS=-ffat-lto-objects \
- -DCMAKE_BUILD_TYPE=Debug \
- -DBUILD_TESTING=YES \
- -DQUICK_LINT_JS_ENABLE_BENCHMARKS=YES \
- -DQUICK_LINT_JS_USE_BUNDLED_GOOGLE_TEST=NO \
- -S . -B .
- shell: bash
- - name: build
- run: cmake --build . --config Debug
- - name: test
- run: ctest --build-config Debug --verbose
-
-# quick-lint-js finds bugs in JavaScript programs.
-# Copyright (C) 2020 Matthew Glazar
-#
-# This file is part of quick-lint-js.
-#
-# quick-lint-js is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# quick-lint-js is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with quick-lint-js. If not, see .