aboutsummaryrefslogtreecommitdiff
path: root/.github/scripts
diff options
context:
space:
mode:
Diffstat (limited to '.github/scripts')
-rwxr-xr-x.github/scripts/build_universal_macos.sh21
-rw-r--r--.github/scripts/close_unresponsive.js55
-rw-r--r--.github/scripts/env.ps19
-rwxr-xr-x.github/scripts/install_deps.sh41
-rwxr-xr-x.github/scripts/install_deps_ubuntu.sh19
-rw-r--r--.github/scripts/remove-reviewers.js10
-rw-r--r--.github/scripts/remove_response_label.js (renamed from .github/scripts/unstale.js)0
-rw-r--r--.github/scripts/reviews.js122
8 files changed, 196 insertions, 81 deletions
diff --git a/.github/scripts/build_universal_macos.sh b/.github/scripts/build_universal_macos.sh
new file mode 100755
index 0000000000..d07c395cd6
--- /dev/null
+++ b/.github/scripts/build_universal_macos.sh
@@ -0,0 +1,21 @@
+#!/bin/bash -e
+
+MACOSX_DEPLOYMENT_TARGET="$(sw_vers -productVersion | cut -f1 -d.)"
+export MACOSX_DEPLOYMENT_TARGET
+cmake -S cmake.deps -B .deps -G Ninja \
+ -D CMAKE_BUILD_TYPE=${NVIM_BUILD_TYPE} \
+ -D CMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \
+ -D CMAKE_OSX_ARCHITECTURES=arm64\;x86_64 \
+ -D CMAKE_FIND_FRAMEWORK=NEVER
+cmake --build .deps
+cmake -B build -G Ninja \
+ -D CMAKE_BUILD_TYPE=${NVIM_BUILD_TYPE} \
+ -D CMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \
+ -D CMAKE_OSX_ARCHITECTURES=arm64\;x86_64 \
+ -D CMAKE_FIND_FRAMEWORK=NEVER
+cmake --build build
+# Make sure we build everything for M1 as well
+for macho in build/bin/* build/lib/nvim/parser/*.so; do
+ lipo -info "$macho" | grep -q arm64 || exit 1
+done
+cpack --config build/CPackConfig.cmake
diff --git a/.github/scripts/close_unresponsive.js b/.github/scripts/close_unresponsive.js
new file mode 100644
index 0000000000..f0e8bbe93e
--- /dev/null
+++ b/.github/scripts/close_unresponsive.js
@@ -0,0 +1,55 @@
+function labeledEvent(data) {
+ return data.event === "labeled" && data.label.name === "needs:response";
+}
+
+const numberOfDaysLimit = 30;
+const close_message = `This has been closed since a request for information has \
+not been answered for ${numberOfDaysLimit} days. It can be reopened when the \
+requested information is provided.`;
+
+module.exports = async ({ github, context }) => {
+ const owner = context.repo.owner;
+ const repo = context.repo.repo;
+
+ const issues = await github.rest.issues.listForRepo({
+ owner: owner,
+ repo: repo,
+ labels: "needs:response",
+ });
+ const numbers = issues.data.map((e) => e.number);
+
+ for (const number of numbers) {
+ const events = await github.paginate(
+ github.rest.issues.listEventsForTimeline,
+ {
+ owner: owner,
+ repo: repo,
+ issue_number: number,
+ },
+ (response) => response.data.filter(labeledEvent)
+ );
+
+ const latest_response_label = events[events.length - 1];
+
+ const created_at = new Date(latest_response_label.created_at);
+ const now = new Date();
+ const diff = now - created_at;
+ const diffDays = diff / (1000 * 60 * 60 * 24);
+
+ if (diffDays > numberOfDaysLimit) {
+ github.rest.issues.update({
+ owner: owner,
+ repo: repo,
+ issue_number: number,
+ state: "closed",
+ });
+
+ github.rest.issues.createComment({
+ owner: owner,
+ repo: repo,
+ issue_number: number,
+ body: close_message,
+ });
+ }
+ }
+};
diff --git a/.github/scripts/env.ps1 b/.github/scripts/env.ps1
new file mode 100644
index 0000000000..d1dba5d558
--- /dev/null
+++ b/.github/scripts/env.ps1
@@ -0,0 +1,9 @@
+# This script enables Developer Command Prompt
+# See https://github.com/microsoft/vswhere/wiki/Start-Developer-Command-Prompt#using-powershell
+$installationPath = vswhere.exe -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
+if ($installationPath -and (Test-Path "$installationPath\Common7\Tools\vsdevcmd.bat")) {
+ & "${env:COMSPEC}" /s /c "`"$installationPath\Common7\Tools\vsdevcmd.bat`" -arch=x64 -no_logo && set" | ForEach-Object {
+ $name, $value = $_ -split '=', 2
+ "$name=$value" >> $env:GITHUB_ENV
+ }
+}
diff --git a/.github/scripts/install_deps.sh b/.github/scripts/install_deps.sh
new file mode 100755
index 0000000000..9a782e9698
--- /dev/null
+++ b/.github/scripts/install_deps.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+while (($# > 0)); do
+ case $1 in
+ --test) # install test dependencies
+ TEST=1
+ shift
+ ;;
+ esac
+done
+
+os=$(uname -s)
+if [[ $os == Linux ]]; then
+ sudo apt-get update
+ sudo apt-get install -y build-essential cmake curl gettext ninja-build
+
+ if [[ $CC == clang ]]; then
+ DEFAULT_CLANG_VERSION=$(echo | clang -dM -E - | grep __clang_major | awk '{print $3}')
+ CLANG_VERSION=17
+ if ((DEFAULT_CLANG_VERSION >= CLANG_VERSION)); then
+ echo "Default clang version is $DEFAULT_CLANG_VERSION, which equal or larger than wanted version $CLANG_VERSION. Aborting!"
+ exit 1
+ fi
+
+ wget https://apt.llvm.org/llvm.sh
+ chmod +x llvm.sh
+ sudo ./llvm.sh $CLANG_VERSION
+ sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-$CLANG_VERSION 100
+ sudo update-alternatives --set clang /usr/bin/clang-$CLANG_VERSION
+ fi
+
+ if [[ -n $TEST ]]; then
+ sudo apt-get install -y locales-all cpanminus attr libattr1-dev gdb
+ fi
+elif [[ $os == Darwin ]]; then
+ brew update --quiet
+ brew install ninja
+ if [[ -n $TEST ]]; then
+ brew install cpanminus
+ fi
+fi
diff --git a/.github/scripts/install_deps_ubuntu.sh b/.github/scripts/install_deps_ubuntu.sh
deleted file mode 100755
index 012409ba4a..0000000000
--- a/.github/scripts/install_deps_ubuntu.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-PACKAGES=(
- autoconf
- automake
- build-essential
- cmake
- cpanminus
- curl
- gettext
- libtool-bin
- locales-all
- ninja-build
- pkg-config
- unzip
-)
-
-sudo apt-get update
-sudo apt-get install -y "${PACKAGES[@]}"
diff --git a/.github/scripts/remove-reviewers.js b/.github/scripts/remove-reviewers.js
index 40a8eca423..9e44e4ac86 100644
--- a/.github/scripts/remove-reviewers.js
+++ b/.github/scripts/remove-reviewers.js
@@ -1,18 +1,16 @@
-module.exports = async ({github, context}) => {
+module.exports = async ({ github, context }) => {
const requestedReviewers = await github.rest.pulls.listRequestedReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
- pull_number: context.issue.number
+ pull_number: context.issue.number,
});
- const reviewers = requestedReviewers.data.users.map(e => e.login)
- const team_reviewers = requestedReviewers.data.teams.map(e => e.name);
+ const reviewers = requestedReviewers.data.users.map((e) => e.login);
github.rest.pulls.removeRequestedReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
reviewers: reviewers,
- team_reviewers: team_reviewers
});
-}
+};
diff --git a/.github/scripts/unstale.js b/.github/scripts/remove_response_label.js
index f645fca5cb..f645fca5cb 100644
--- a/.github/scripts/unstale.js
+++ b/.github/scripts/remove_response_label.js
diff --git a/.github/scripts/reviews.js b/.github/scripts/reviews.js
index cc6aaa1e8b..d28d91c2f6 100644
--- a/.github/scripts/reviews.js
+++ b/.github/scripts/reviews.js
@@ -1,108 +1,118 @@
-module.exports = async ({github, context}) => {
+module.exports = async ({ github, context }) => {
const pr_data = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
- pull_number: context.issue.number
- })
- const labels = pr_data.data.labels.map(e => e.name)
+ pull_number: context.issue.number,
+ });
+ const labels = pr_data.data.labels.map((e) => e.name);
+ const reviewers = new Set();
+
+ if (labels.includes("api")) {
+ reviewers.add("bfredl");
+ reviewers.add("famiu");
+ }
- const reviewers = new Set()
- const team_reviewers = new Array()
- if (labels.includes('api')) {
- reviewers.add("bfredl")
- reviewers.add("muniter")
+ if (labels.includes("build")) {
+ reviewers.add("dundargoc");
+ reviewers.add("jamessan");
+ reviewers.add("justinmk");
}
- if (labels.includes('build')) {
- reviewers.add("jamessan")
- reviewers.add("justinmk")
+ if (labels.includes("ci")) {
+ reviewers.add("dundargoc");
+ reviewers.add("jamessan");
+ reviewers.add("justinmk");
}
- if (labels.includes('ci')) {
- team_reviewers.push('ci');
+ if (labels.includes("column")) {
+ reviewers.add("lewis6991");
}
- if (labels.includes('column')) {
- reviewers.add("lewis6991")
+ if (labels.includes("dependencies")) {
+ reviewers.add("jamessan");
}
- if (labels.includes('dependencies')) {
- reviewers.add("jamessan")
+ if (labels.includes("diagnostic")) {
+ reviewers.add("gpanders");
}
- if (labels.includes('diagnostic')) {
- reviewers.add("gpanders")
+ if (labels.includes("diff")) {
+ reviewers.add("lewis6991");
}
- if (labels.includes('diff')) {
- reviewers.add("lewis6991")
+ if (labels.includes("distribution")) {
+ reviewers.add("jamessan");
}
- if (labels.includes('distribution')) {
- reviewers.add("jamessan")
+ if (labels.includes("documentation")) {
+ reviewers.add("clason");
}
- if (labels.includes('documentation')) {
- reviewers.add("clason")
+ if (labels.includes("extmarks")) {
+ reviewers.add("bfredl");
}
- if (labels.includes('extmarks')) {
- reviewers.add("bfredl")
+ if (labels.includes("filetype")) {
+ reviewers.add("clason");
+ reviewers.add("gpanders");
+ reviewers.add("smjonas");
}
- if (labels.includes('filetype')) {
- reviewers.add("clason")
- reviewers.add("gpanders")
- reviewers.add("smjonas")
+ if (labels.includes("lsp")) {
+ reviewers.add("folke");
+ reviewers.add("MariaSolOs");
+ reviewers.add("mfussenegger");
}
- if (labels.includes('lsp')) {
- team_reviewers.push('lsp');
+ if (labels.includes("options")) {
+ reviewers.add("famiu");
}
- if (labels.includes('platform:nix')) {
- reviewers.add("teto")
+ if (labels.includes("platform:nix")) {
+ reviewers.add("teto");
}
- if (labels.includes('project-management')) {
- reviewers.add("bfredl")
- reviewers.add("justinmk")
+ if (labels.includes("project-management")) {
+ reviewers.add("bfredl");
+ reviewers.add("justinmk");
}
- if (labels.includes('refactor')) {
- reviewers.add("bfredl")
+ if (labels.includes("statusline")) {
+ reviewers.add("famiu");
}
- if (labels.includes('test')) {
- reviewers.add("justinmk")
+ if (labels.includes("test")) {
+ reviewers.add("justinmk");
}
- if (labels.includes('treesitter')) {
- team_reviewers.push('treesitter');
+ if (labels.includes("treesitter")) {
+ reviewers.add("bfredl");
+ reviewers.add("clason");
+ reviewers.add("lewis6991");
}
- if (labels.includes('typo')) {
- reviewers.add("dundargoc")
+ if (labels.includes("typo")) {
+ reviewers.add("dundargoc");
}
- if (labels.includes('ui')) {
- reviewers.add("bfredl")
+ if (labels.includes("ui")) {
+ reviewers.add("bfredl");
+ reviewers.add("famiu");
}
- if (labels.includes('vim-patch')) {
- reviewers.add("seandewar")
- reviewers.add("zeertzjq")
+ if (labels.includes("vim-patch")) {
+ reviewers.add("seandewar");
+ reviewers.add("zeertzjq");
}
// Remove person that opened the PR since they can't review themselves
- const pr_opener = pr_data.data.user.login
- reviewers.delete(pr_opener)
+ const pr_opener = pr_data.data.user.login;
+ reviewers.delete(pr_opener);
github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
reviewers: Array.from(reviewers),
- team_reviewers: team_reviewers
});
-}
+};