|
1 | | -cargo build --release |
| 1 | +$ErrorActionPreference = "Stop" |
| 2 | + |
| 3 | +# Set platform |
| 4 | +$platform = "win64" |
2 | 5 |
|
3 | | -cargo run --release -p ql-generator -- --dbscheme ql/src/ql.dbscheme --library ql/src/codeql_ql/ast/internal/TreeSitter.qll |
4 | | -codeql query format -i ql\src\codeql_ql\ast\internal\TreeSitter.qll |
| 6 | +# Check for CodeQL binary |
| 7 | +if (Get-Command "codeql" -ErrorAction SilentlyContinue) { |
| 8 | + $CODEQL_BINARY = "codeql" |
| 9 | +} |
| 10 | +elseif (Get-Command "gh" -ErrorAction SilentlyContinue) { |
| 11 | + try { |
| 12 | + gh codeql version 2>&1 | Out-Null |
| 13 | + $CODEQL_BINARY = "gh codeql" |
| 14 | + } |
| 15 | + catch { |
| 16 | + Write-Host "Installing gh-codeql extension..." |
| 17 | + gh extension install github/gh-codeql |
| 18 | + $CODEQL_BINARY = "gh codeql" |
| 19 | + } |
| 20 | +} |
| 21 | +else { |
| 22 | + Write-Error "Neither 'codeql' nor 'gh' command found" |
| 23 | + exit 1 |
| 24 | +} |
5 | 25 |
|
| 26 | +Write-Host "Creating extractor pack..." |
6 | 27 | if (Test-Path -Path extractor-pack) { |
7 | | - rm -Recurse -Force extractor-pack |
8 | | -} |
9 | | -mkdir extractor-pack | Out-Null |
10 | | -cp codeql-extractor.yml, ql\src\ql.dbscheme, ql\src\ql.dbscheme.stats extractor-pack |
11 | | -cp -Recurse tools extractor-pack |
12 | | -mkdir extractor-pack\tools\win64 | Out-Null |
13 | | -cp target\release\ql-extractor.exe extractor-pack\tools\win64\extractor.exe |
14 | | -cp target\release\ql-autobuilder.exe extractor-pack\tools\win64\autobuilder.exe |
| 28 | + Remove-Item -Recurse -Force extractor-pack |
| 29 | +} |
| 30 | +if (Test-Path -Path target) { |
| 31 | + Remove-Item -Recurse -Force target |
| 32 | +} |
| 33 | + |
| 34 | +Write-Host "Update submodules..." |
| 35 | +git submodule update --init --recursive |
| 36 | + |
| 37 | +Write-Host "Building extractor..." |
| 38 | +cargo build --release |
| 39 | + |
| 40 | +Write-Host "Generating TreeSitter library..." |
| 41 | +cargo run --release --bin codeql-extractor-iac -- generate --dbscheme ql/lib/iac.dbscheme --library ql/lib/codeql/iac/ast/internal/TreeSitter.qll |
| 42 | + |
| 43 | +Write-Host "Formatting generated library..." |
| 44 | +if ($CODEQL_BINARY -eq "gh codeql") { |
| 45 | + gh codeql query format -i ql/lib/codeql/iac/ast/internal/TreeSitter.qll |
| 46 | +} |
| 47 | +else { |
| 48 | + codeql query format -i ql/lib/codeql/iac/ast/internal/TreeSitter.qll |
| 49 | +} |
| 50 | + |
| 51 | +New-Item -ItemType Directory -Path extractor-pack | Out-Null |
| 52 | +Copy-Item -Path codeql-extractor.yml, ql/lib/iac.dbscheme, ql/lib/iac.dbscheme.stats -Destination extractor-pack/ |
| 53 | +Copy-Item -Recurse -Path downgrades, tools -Destination extractor-pack/ |
| 54 | + |
| 55 | +New-Item -ItemType Directory -Path "extractor-pack/tools/$platform" -Force | Out-Null |
| 56 | +Copy-Item -Path "target/release/codeql-extractor-iac.exe" -Destination "extractor-pack/tools/$platform/extractor.exe" |
| 57 | + |
| 58 | +Write-Host "Extractor pack created successfully!" |
0 commit comments