Merge pull request #1795 from Darleev/v-danurg/lint_shebang_ubuntu

Shebang lint for Ubuntu/MacOS
This commit is contained in:
Maxim Lobanov
2020-10-27 20:31:07 +03:00
committed by GitHub
9 changed files with 57 additions and 10 deletions

View File

@@ -1,10 +1,10 @@
# CI Validation
name: CI
name: Linter
on:
pull_request:
branches: [$default-branch]
branches: [ main ]
jobs:
build:
@@ -23,3 +23,7 @@ jobs:
VALIDATE_JSON: true
VALIDATE_MD: true
DEFAULT_BRANCH: ${{ github.base_ref }}
- name: Checking shebang lines in MacOS and Ubuntu releases.
run: ./images.CI/shebang-linter.ps1
shell: pwsh

View File

@@ -0,0 +1,43 @@
$ErrorActionPreference = "Stop"
function Validate-Scripts {
Param (
[Parameter(Mandatory=$true)]
[string[]]$Path,
[Parameter(Mandatory=$true)]
[string]$ExpectedShebang
)
$ScriptWithoutShebangLine = @()
Get-ChildItem $path -Recurse -File -Filter "*.sh" | ForEach-Object {
$relativePath = Resolve-Path $_.FullName -Relative
$shebangLine = Get-Content -Path $_.FullName | Select-Object -First 1
if ($shebangLine -eq $ExpectedShebang) {
Write-Host "[+] '$relativePath'"
}
else {
Write-Host "[-] '$relativePath'"
$ScriptWithoutShebangLine += $relativePath
}
}
return $ScriptWithoutShebangLine
}
$PathUbuntu = "./images/linux/scripts"
$PathMacOS = "./images/macos/provision"
$PatternUbuntu = "#!/bin/bash -e"
$PatternMacOS = "#!/bin/bash -e -o pipefail"
$ScriptsWithBrokenShebang = @()
$ScriptsWithBrokenShebang += Validate-Scripts -Path $PathUbuntu -ExpectedShebang $PatternUbuntu
$ScriptsWithBrokenShebang += Validate-Scripts -Path $PathMacOS -ExpectedShebang $PatternMacOS
if ($ScriptsWithBrokenShebang.Length -gt 0) {
Write-Host "`n`n`n##[error] The following scripts have incorrect shebang:"
$ScriptsWithBrokenShebang | ForEach-Object {
Write-Host "##[error] '$_'"
}
Write-Host "`n`n##[error] Expected shebang for scripts in 'images/linux' folder is '$PatternUbuntu'"
Write-Host "##[error] Expected shebang for scripts in 'images/macos' folder is '$PatternMacOS'"
exit 1
else {
Write-Host "All scripts have correct shebang."
}
}

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash -e
export DEBIAN_FRONTEND=noninteractive
apt-get -yq update

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash -e
################################################################################
## File: repos.sh
## Desc: Installs official Microsoft package repos for the distribution

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash -e
################################################################################
## File: etc-environment.sh
## Desc: Helper functions for source and modify /etc/environment

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash -e
################################################################################
## File: install.sh
## Desc: Helper functions for installing tools

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash -e
################################################################################
## File: install-helpers.sh
## Desc: Helper functions for installing tools

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash -e
################################################################################
## File: pipx-packages.sh
## Desc: Install tools via pipx

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash -e -o pipefail
BOOTSTRAP_PATH="$1"
ProvisionerPackageUri="$2"
ProvisionerScriptUri="$3"