feat: Added pre-commit hook of PowerShell scrip checker

This commit is contained in:
Jakub Kocka 2024-04-30 12:36:00 +02:00
parent aa27fbd231
commit 8f383060dd
7 changed files with 45 additions and 17 deletions

View File

@ -40,3 +40,5 @@ jobs:
echo "" echo ""
exit 1 exit 1
fi fi
# Run pre-commit for PowerShell scripts check
pre-commit run --hook-stage manual check-powershell-scripts --from-ref base_ref --to-ref pr_ref --show-diff-on-failure

View File

@ -170,6 +170,7 @@
/docs/**/api-reference/system/ @esp-idf-codeowners/system /docs/**/api-reference/system/ @esp-idf-codeowners/system
/docs/**/security/ @esp-idf-codeowners/security /docs/**/security/ @esp-idf-codeowners/security
/docs/**/migration-guides/ @esp-idf-codeowners/docs @esp-idf-codeowners/all-maintainers /docs/**/migration-guides/ @esp-idf-codeowners/docs @esp-idf-codeowners/all-maintainers
/docs/**/contribute/install-pre-commit-hook.rst @esp-idf-codeowners/ci @esp-idf-codeowners/tools
/examples/README.md @esp-idf-codeowners/docs @esp-idf-codeowners/ci /examples/README.md @esp-idf-codeowners/docs @esp-idf-codeowners/ci
/examples/**/*.py @esp-idf-codeowners/ci @esp-idf-codeowners/tools /examples/**/*.py @esp-idf-codeowners/ci @esp-idf-codeowners/tools

View File

@ -45,3 +45,36 @@ check_pre_commit:
paths: paths:
- .cache/submodule_archives - .cache/submodule_archives
policy: pull policy: pull
check_powershell:
extends:
- .before_script:minimal
stage: pre_check
image: docker:latest
services:
- docker:dind
tags:
- dind
- amd64
needs:
- pipeline_variables
variables:
# cache pre_commit
PRE_COMMIT_HOME: "$CI_PROJECT_DIR/.cache/pre-commit"
rules:
- changes:
- "*.ps1"
script:
- apk add python3
- apk add py3-pip
- pip install pre-commit --break-system-packages
- pre-commit run --hook-stage manual check-powershell-scripts --files $MODIFIED_FILES
cache:
- key: pre_commit-cache-${LATEST_GIT_TAG}
paths:
- .cache/pre-commit
policy: pull
- key: submodule-cache-${LATEST_GIT_TAG}
paths:
- .cache/submodule_archives
policy: pull

View File

@ -224,6 +224,11 @@ repos:
name: shellcheck dash (export.sh) name: shellcheck dash (export.sh)
args: ['--shell', 'dash', '-x'] args: ['--shell', 'dash', '-x']
files: 'export.sh' files: 'export.sh'
- repo: https://github.com/espressif/esp-pwsh-check
rev: v1.0.1
hooks:
- id: check-powershell-scripts
stages: [manual]
- repo: https://github.com/espressif/esp-idf-sbom.git - repo: https://github.com/espressif/esp-idf-sbom.git
rev: v0.13.0 rev: v0.13.0
hooks: hooks:

View File

@ -3,13 +3,6 @@ Install Pre-commit Hook for ESP-IDF Project
:link_to_translation:`zh_CN:[中文]` :link_to_translation:`zh_CN:[中文]`
Required Dependency
-------------------
Python 3.8.* or above. This is our recommended Python version for ESP-IDF developers.
If you still have Python versions not compatible, update your Python versions before installing the pre-commit hook.
Install ``pre-commit`` Install ``pre-commit``
---------------------- ----------------------

View File

@ -3,12 +3,6 @@
:link_to_translation:`en:[English]` :link_to_translation:`en:[English]`
环境依赖
---------------
我们向 IDF 开发人员推荐 Python 3.8.* 及以上版本。
如果你已安装了不兼容的 Python 版本,应在安装 pre-commit 工具前进行更新。
安装 ``pre-commit`` 工具 安装 ``pre-commit`` 工具
--------------------------- ---------------------------

View File

@ -26,10 +26,10 @@ foreach ($line in $envars_raw) {
$envars_array += (, ($var_name, $var_val)) $envars_array += (, ($var_name, $var_val))
} }
if ($IsWindows -eq $null) { if ($null -eq $IsWindows) {
# $IsWindows was added in PowerShell Core 6 and PowerShell 7 together with multi-platform support. # I.E. if this # $IsWindows was added in PowerShell Core 6 and PowerShell 7 together with multi-platform support. # I.E. if this
# internal variable is not set then PowerShell 5 is used and # the platform cannot be # anything else than Windows. # internal variable is not set then PowerShell 5 is used and # the platform cannot be # anything else than Windows.
$IsWindows = $true $Windows = $true
} }
foreach ($pair in $envars_array) { foreach ($pair in $envars_array) {
@ -38,7 +38,7 @@ foreach ($pair in $envars_array) {
$var_val = $pair[1].Trim() # trim spaces on the ends of the val $var_val = $pair[1].Trim() # trim spaces on the ends of the val
if ($var_name -eq "PATH") { if ($var_name -eq "PATH") {
# trim "%PATH%" or "`$PATH" # trim "%PATH%" or "`$PATH"
if ($IsWindows) { if ($IsWindows || $Windows) {
$var_val = $var_val.Trim($S + "%PATH%") $var_val = $var_val.Trim($S + "%PATH%")
} else { } else {
$var_val = $var_val.Trim($S + "`$PATH") $var_val = $var_val.Trim($S + "`$PATH")
@ -60,7 +60,7 @@ function parttool.py { &python "$IDF_PATH\components\partition_table\parttool.py
#Compare Path's OLD vs. NEW #Compare Path's OLD vs. NEW
$NEW_PATH = $env:PATH.split($S) | Select-Object -Unique # array without duplicates $NEW_PATH = $env:PATH.split($S) | Select-Object -Unique # array without duplicates
$dif_Path = Compare-Object -ReferenceObject $OLD_PATH -DifferenceObject $NEW_PATH -PassThru $dif_Path = Compare-Object -ReferenceObject $OLD_PATH -DifferenceObject $NEW_PATH -PassThru
if ($dif_Path -ne $null) { if ($null -ne $dif_Path) {
Write-Output "`nAdded to PATH`n-------------" Write-Output "`nAdded to PATH`n-------------"
Write-Output $dif_Path Write-Output $dif_Path
} else { } else {