mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-06 22:24:12 -05:00
Add pre-commit hooks (#9510)
This commit is contained in:
committed by
GitHub
parent
6d24a5e552
commit
659ae6eed6
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -24,7 +24,7 @@ Works properly:
|
|||||||
- [ ] `armv7l` <!-- (reasons why it doesn't) -->
|
- [ ] `armv7l` <!-- (reasons why it doesn't) -->
|
||||||
|
|
||||||
### Run the following to get this pull request's changes locally for testing.
|
### Run the following to get this pull request's changes locally for testing.
|
||||||
```
|
```bash
|
||||||
CREW_REPO=https://github.com/<Please_enter_the_name_of_your_repo>/chromebrew.git CREW_BRANCH=<Please_enter_the_branch_name_for_this_PR> crew update
|
CREW_REPO=https://github.com/<Please_enter_the_name_of_your_repo>/chromebrew.git CREW_BRANCH=<Please_enter_the_branch_name_for_this_PR> crew update
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ rule 'MD029', style: :ordered
|
|||||||
exclude_rule 'MD002' # We use HTML <h1> tag as the top level header
|
exclude_rule 'MD002' # We use HTML <h1> tag as the top level header
|
||||||
exclude_rule 'MD013' # Ignore 80 character line length limit.
|
exclude_rule 'MD013' # Ignore 80 character line length limit.
|
||||||
exclude_rule 'MD022' # Ignore headers should be surrounded by blank lines
|
exclude_rule 'MD022' # Ignore headers should be surrounded by blank lines
|
||||||
|
exclude_rule 'MD026' # Ignore trailing punctuation in header
|
||||||
|
exclude_rule 'MD028' # Ignore blank line inside blockquote
|
||||||
exclude_rule 'MD031' # Ignore code blocks should be surrounded by blank lines
|
exclude_rule 'MD031' # Ignore code blocks should be surrounded by blank lines
|
||||||
exclude_rule 'MD032' # Ignore lists should be surrounded by blank lines
|
exclude_rule 'MD032' # Ignore lists should be surrounded by blank lines
|
||||||
exclude_rule 'MD033' # We need HTML to center logo, which is not possible in pure Markdown
|
exclude_rule 'MD033' # We need HTML to center logo, which is not possible in pure Markdown
|
||||||
|
|||||||
22
.pre-commit-config.yaml
Normal file
22
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
# To run these hooks, install pre-commit (https://pre-commit.com) and run 'pre-commit install'
|
||||||
|
# These pre-commit hooks mirror the Github CI, so running them locally will catch errors earlier.
|
||||||
|
repos:
|
||||||
|
- repo: https://github.com/rubocop/rubocop
|
||||||
|
rev: v1.64.1
|
||||||
|
hooks:
|
||||||
|
- id: rubocop
|
||||||
|
- repo: https://github.com/syntaqx/git-hooks
|
||||||
|
rev: v0.0.18
|
||||||
|
hooks:
|
||||||
|
- id: shellcheck
|
||||||
|
exclude: tools
|
||||||
|
- repo: https://github.com/markdownlint/markdownlint
|
||||||
|
rev: v0.13.0
|
||||||
|
hooks:
|
||||||
|
- id: markdownlint
|
||||||
|
args: [-s.mdl_style.rb]
|
||||||
|
- repo: https://github.com/adrienverge/yamllint
|
||||||
|
rev: v1.35.1
|
||||||
|
hooks:
|
||||||
|
- id: yamllint
|
||||||
@@ -102,3 +102,11 @@ If the package is a dependency for another package, test commands of the other p
|
|||||||
## Learn more
|
## Learn more
|
||||||
|
|
||||||
- Visit the [wiki](https://github.com/chromebrew/chromebrew/wiki)
|
- Visit the [wiki](https://github.com/chromebrew/chromebrew/wiki)
|
||||||
|
|
||||||
|
## Pre-commit hooks.
|
||||||
|
|
||||||
|
Chromebrew has pre-commit hooks to catch errors before they make it to CI.
|
||||||
|
|
||||||
|
To install them, run `pre-commit install` in the root of the repository.
|
||||||
|
|
||||||
|
You will first need to install the pre-commit tool, which can be done via `crew install py3_pre_commit` on ChromeOS.
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ crew install --keep [...]
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Copyright 2013-2024 Michal Siwek and [all the awesome contributors](https://github.com/chromebrew/chromebrew/graphs/contributors).
|
Copyright 2013-2024 Michal Siwek and [all the awesome contributors](https://github.com/chromebrew/chromebrew/graphs/contributors).
|
||||||
|
|
||||||
This project including all of its source files is released under the terms of [GNU General Public License (version 3 or later)](http://www.gnu.org/licenses/gpl.txt). This project embeds [docopt.rb](https://github.com/docopt/docopt.rb) at lib/docopt.rb. We retain its [MIT license](lib/docopt.LICENSE).
|
This project including all of its source files is released under the terms of [GNU General Public License (version 3 or later)](http://www.gnu.org/licenses/gpl.txt). This project embeds [docopt.rb](https://github.com/docopt/docopt.rb) at lib/docopt.rb. We retain its [MIT license](lib/docopt.LICENSE).
|
||||||
|
|
||||||
|
|||||||
@@ -90,9 +90,6 @@ class Buildessential < Package
|
|||||||
# depends_on 'openjdk11'
|
# depends_on 'openjdk11'
|
||||||
# depends_on 'openjdk17'
|
# depends_on 'openjdk17'
|
||||||
|
|
||||||
# Linter
|
|
||||||
depends_on 'linter'
|
|
||||||
|
|
||||||
# Lisp
|
# Lisp
|
||||||
# depends_on 'ccl'
|
# depends_on 'ccl'
|
||||||
# depends_on 'clisp'
|
# depends_on 'clisp'
|
||||||
|
|||||||
@@ -56,5 +56,4 @@ class Caja < Autotools
|
|||||||
gnome
|
gnome
|
||||||
|
|
||||||
configure_options '--enable-wayland'
|
configure_options '--enable-wayland'
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class Gvim < Autotools
|
|||||||
depends_on 'glib' # R
|
depends_on 'glib' # R
|
||||||
depends_on 'gpm' # R
|
depends_on 'gpm' # R
|
||||||
depends_on 'gtk3' # R
|
depends_on 'gtk3' # R
|
||||||
depends_on 'harfbuzz' #
|
depends_on 'harfbuzz'
|
||||||
depends_on 'libice' # R
|
depends_on 'libice' # R
|
||||||
depends_on 'libsm' # R
|
depends_on 'libsm' # R
|
||||||
depends_on 'libsodium' # R
|
depends_on 'libsodium' # R
|
||||||
|
|||||||
@@ -1,92 +0,0 @@
|
|||||||
require 'package'
|
|
||||||
|
|
||||||
class Linter < Package
|
|
||||||
description 'Comprehensive linter and code analysis for various file types.'
|
|
||||||
homepage 'https://github.com/chromebrew/chromebrew'
|
|
||||||
version '1.4'
|
|
||||||
license 'GPL-3'
|
|
||||||
compatibility 'all'
|
|
||||||
source_url 'SKIP'
|
|
||||||
|
|
||||||
no_compile_needed
|
|
||||||
no_upstream_update
|
|
||||||
|
|
||||||
depends_on 'py3_codespell'
|
|
||||||
depends_on 'ruby_mdl'
|
|
||||||
depends_on 'ruby_rubocop'
|
|
||||||
depends_on 'ruby_yaml_lint'
|
|
||||||
depends_on 'shellcheck'
|
|
||||||
|
|
||||||
def self.build
|
|
||||||
linter = <<~EOF
|
|
||||||
#!/bin/bash
|
|
||||||
export PATH=#{CREW_PREFIX}/bin:$PATH
|
|
||||||
if test "$1"; then
|
|
||||||
files="$*"
|
|
||||||
else
|
|
||||||
files="$(git ls-files -om | xargs)"
|
|
||||||
fi
|
|
||||||
for file in $files; do
|
|
||||||
ext="${file##*.}"
|
|
||||||
if ! [[ "$ext" =~ ^(md|rb|sh|yml|yaml)$ ]]; then
|
|
||||||
type="$(file -b "$file" | cut -d' ' -f1)"
|
|
||||||
case $type in
|
|
||||||
Bourne-Again)
|
|
||||||
ext="sh"
|
|
||||||
;;
|
|
||||||
HTML)
|
|
||||||
ext="md"
|
|
||||||
;;
|
|
||||||
Ruby)
|
|
||||||
ext="rb"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
case $ext in
|
|
||||||
md)
|
|
||||||
mdl -c "$HOME/.mdlrc" "$file"
|
|
||||||
;;
|
|
||||||
rb)
|
|
||||||
rubocop "$file"
|
|
||||||
;;
|
|
||||||
sh)
|
|
||||||
shellcheck "$file"
|
|
||||||
;;
|
|
||||||
yml|yaml)
|
|
||||||
yaml-lint "$file"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unable to check syntax of $file."
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
codespell "$file"
|
|
||||||
done
|
|
||||||
EOF
|
|
||||||
File.write('linter', linter)
|
|
||||||
mdlrc = <<~EOF
|
|
||||||
style "#{Dir.home}/.mdl_style.rb"
|
|
||||||
EOF
|
|
||||||
File.write('.mdlrc', mdlrc)
|
|
||||||
mdl_style = <<~EOF
|
|
||||||
all
|
|
||||||
# Ignore 80 character line length limit.
|
|
||||||
exclude_rule 'MD013'
|
|
||||||
# Ignore horizontal rule style.
|
|
||||||
exclude_rule 'MD035'
|
|
||||||
# Ignore emphasis used instead of a header.
|
|
||||||
exclude_rule 'MD036'
|
|
||||||
# Ignore first line in file should be a top level header.
|
|
||||||
exclude_rule 'MD041'
|
|
||||||
# Ignore code block style.
|
|
||||||
exclude_rule 'MD046'
|
|
||||||
EOF
|
|
||||||
File.write('.mdl_style.rb', mdl_style)
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.install
|
|
||||||
FileUtils.mkdir_p CREW_DEST_HOME.to_s
|
|
||||||
FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/bin"
|
|
||||||
FileUtils.install 'linter', "#{CREW_DEST_PREFIX}/bin", mode: 0o755
|
|
||||||
FileUtils.install ['.mdlrc', '.mdl_style.rb'], CREW_DEST_HOME.to_s, mode: 0o644
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -10,7 +10,6 @@ class Openjdk < Package
|
|||||||
description 'The JDK is a development environment for building applications, applets, and components using the Java programming language.'
|
description 'The JDK is a development environment for building applications, applets, and components using the Java programming language.'
|
||||||
homepage 'https://openjdk.org/'
|
homepage 'https://openjdk.org/'
|
||||||
key = 1
|
key = 1
|
||||||
versions = []
|
|
||||||
@openjdk_versions = []
|
@openjdk_versions = []
|
||||||
Dir["#{CREW_PACKAGES_PATH}/openjdk*.rb"].each do |openjdk_file|
|
Dir["#{CREW_PACKAGES_PATH}/openjdk*.rb"].each do |openjdk_file|
|
||||||
next unless openjdk_file =~ /openjdk(\d+).rb/
|
next unless openjdk_file =~ /openjdk(\d+).rb/
|
||||||
@@ -20,8 +19,8 @@ class Openjdk < Package
|
|||||||
@openjdk_versions.push [key, openjdk_name, openjdk_ver]
|
@openjdk_versions.push [key, openjdk_name, openjdk_ver]
|
||||||
key += 1
|
key += 1
|
||||||
end
|
end
|
||||||
@openjdk_versions.each do |openjdk_ver|
|
versions = @openjdk_versions.map do |openjdk_ver|
|
||||||
versions.push openjdk_ver[2]
|
openjdk_ver[2]
|
||||||
end
|
end
|
||||||
versions.sort!
|
versions.sort!
|
||||||
version "#{versions.first}-#{versions.last}"
|
version "#{versions.first}-#{versions.last}"
|
||||||
|
|||||||
15
packages/py3_pre_commit.rb
Normal file
15
packages/py3_pre_commit.rb
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
require 'buildsystems/pip'
|
||||||
|
|
||||||
|
class Py3_pre_commit < Pip
|
||||||
|
description 'A framework for managing and maintaining multi-language pre-commit hooks.'
|
||||||
|
homepage 'https://pre-commit.com/'
|
||||||
|
@_ver = '3.6.2'
|
||||||
|
version "#{@_ver}-py3.12"
|
||||||
|
license 'MIT'
|
||||||
|
compatibility 'all'
|
||||||
|
source_url 'SKIP'
|
||||||
|
|
||||||
|
depends_on 'python3'
|
||||||
|
|
||||||
|
no_compile_needed
|
||||||
|
end
|
||||||
@@ -80,9 +80,7 @@ class Webkit2gtk_4_1 < Package
|
|||||||
system "sed -i 's,/usr/bin,/usr/local/bin,g' Source/JavaScriptCore/inspector/scripts/codegen/preprocess.pl"
|
system "sed -i 's,/usr/bin,/usr/local/bin,g' Source/JavaScriptCore/inspector/scripts/codegen/preprocess.pl"
|
||||||
@arch_flags = ''
|
@arch_flags = ''
|
||||||
@gcc_ver = ''
|
@gcc_ver = ''
|
||||||
if ARCH == 'armv7l' || ARCH == 'aarch64'
|
@arch_flags = '-mfloat-abi=hard -mtls-dialect=gnu -mthumb -mfpu=vfpv3-d16 -mlibarch=armv7-a+fp -march=armv7-a+fp' if ARCH == 'armv7l' || ARCH == 'aarch64'
|
||||||
@arch_flags = '-mfloat-abi=hard -mtls-dialect=gnu -mthumb -mfpu=vfpv3-d16 -mlibarch=armv7-a+fp -march=armv7-a+fp'
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.build
|
def self.build
|
||||||
|
|||||||
@@ -7311,6 +7311,11 @@ url: https://github.com/pypa/pip/releases
|
|||||||
activity: medium
|
activity: medium
|
||||||
---
|
---
|
||||||
kind: url
|
kind: url
|
||||||
|
name: py3_pre_commit
|
||||||
|
url: https://github.com/pre-commit/pre-commit/releases
|
||||||
|
activity: medium
|
||||||
|
---
|
||||||
|
kind: url
|
||||||
name: py3_pylint
|
name: py3_pylint
|
||||||
url: https://github.com/pylint-dev/pylint/releases
|
url: https://github.com/pylint-dev/pylint/releases
|
||||||
activity: high
|
activity: high
|
||||||
|
|||||||
Reference in New Issue
Block a user