GitHub Actions // PowerShell // рекурсивный поиск файлов с применением pylint - PullRequest
0 голосов
/ 03 августа 2020

Я ищу PowerShell-версию следующей Linux команды для CI с действиями GitHub:

find . -name "*.py" -not -path "./exclude_dir/*" | xargs pylint

вот где я сейчас:

get-childitem -path $pwd -include *.py -recurse -name

на данный момент я не знаю, как исключить "exclude_dir" и применить pylint к выбранным python файлам.

Любая помощь будет очень признательна!

Заранее спасибо!

Бест, Алексей

1 Ответ

1 голос
/ 03 августа 2020

Хотя Get-ChildItem имеет параметр -Exclude, он работает только с частью имя-файла , а не с полным путем.

Следовательно , вы должны выполнить фильтрацию исключения постфактум, используя отрицательную форму -like, оператор сопоставления подстановочных знаков

pylint ((Get-ChildItem -Recurse -Name -Filter *.py) -notlike 'exclude_dir/*')

Обратите внимание на использование -Filter скорее чем -Include, что ускоряет операцию, поскольку фильтрация происходит в источнике, а не применяется PowerShell постфактум.

Однако, учитывая, что вы, похоже, исключаете только одна папка верхнего уровня , вы можете попробовать:

pylint (Get-ChildItem -Recurse -Path * -Filter *.py -Exclude exclude_dir)

Обратите внимание, что я пропустил -Name в этом случае, потому что он не будет работать должным образом в этом сценарии. В результате соответствующие файлы неявно передаются как полные пути к pylint.

Начиная с PowerShell 7.0, -Name демонстрирует несколько проблемных c поведений, которые кратко описаны в этом ответе .

...