-
Notifications
You must be signed in to change notification settings - Fork 0
112 lines (103 loc) · 5.2 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# This is a basic workflow to help you get started with Actions
name: Build Bulma 4 Hugo
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "main" branch
push:
branches: ["main"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
build:
runs-on: windows-latest
env:
GH_TOKEN: ${{ github.token }}
BULMA_URL: "https://api.github.com/repos/jgthms/bulma"
permissions:
contents: write
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4
# Runs a set of commands using the runners shell
- name: Configure Git
run: |
git config --local core.autocrlf "false"
git config --local user.name ${{ secrets.GH_USER_NAME }}
git config --global user.email ${{ secrets.GH_USER_MAIL }}
git fetch --tags
- name: Prepare repository
run: |
# cleanup rubbish from the past
Remove-Item -Recurse .\assets -ErrorAction SilentlyContinue
Remove-Item -Recurse .\.github -ErrorAction SilentlyContinue
Remove-Item .\.gitignore -ErrorAction SilentlyContinue
[void](Test-Path .\assets -ErrorAction Stop)
[void](Test-Path .\.github -ErrorAction Stop)
[void](Test-Path .\.gitignore -ErrorAction Stop)
- name: Download Bulma
run: |
$Tags = git tag | %{ $_ -replace "^v","" }
Write-Output "Known Bulma tags:"
$tags | Format-Table | Out-Host
# get list of Bulma Releases
$BulmaReleases = Invoke-RestMethod -FollowRelLink -Uri "$($Env:BULMA_URL)/releases?per_page=100" | %{$_}| ForEach-Object {
if ($_.tag_name -and (-Not ($_.draft -and $_.prerelease))) {
[PSCustomObject]@{
release = [version]$_.tag_name
known = [bool]$($Tags -contains $_.tag_name)
archive = [string]$_.assets.name
download = [string]$_.assets.browser_download_url
}
}
} | Sort-Object -Property release
Write-Output "All new BULMA Releases"
$BulmaReleases | FT | Out-Host
$BulmaRelease = $BulmaReleases | Where-Object { -Not $_.known } | Select-Object -First 1
if ($BulmaRelease) {
Write-Output "Downloading Bulma $($BulmaRelease.release)"
Invoke-WebRequest -Uri $BulmaRelease.download -OutFile $BulmaRelease.archive
[void](Test-Path $BulmaRelease.archive -ErrorAction Stop)
$bulmaFolder = (Get-Item $BulmaRelease.archive).Basename
[void](New-Item -Type Directory ./assets -ErrorAction Stop)
[void](Test-Path .\assets -PathType Container -ErrorAction Stop)
Expand-Archive -LiteralPath $BulmaRelease.archive -DestinationPath .\assets
gci assets | Out-Host
if (Test-Path .\assets\$bulmaFolder -PathType Container) {
Rename-Item .\assets\$bulmaFolder "bulma"
}
[void](Test-Path ./assets/bulma -PathType Container -ErrorAction Stop)
if ((Get-ChildItem .\assets).Count -ne 1) {
Write-Error "Unknown Bulma archive content found (expected 'bulma' only):"
Get-ChildItem .\assets | Out-Host
Write-Error "Aborting - please check"
}
echo "BULMA_RELEASE=$($BulmaRelease.release)" | Out-File $Env:GITHUB_ENV -Append -Encoding utf8
echo "BULMA_ARCHIVE=$($BulmaRelease.archive)" | Out-File $Env:GITHUB_ENV -Append -Encoding utf8
Write-Output "download successful: $($BulmaRelease.archive)"
$notes = @("### This release contains the following style files:`n", "- CSS`n")
$notes += Get-ChildItem -Path .\assets\bulma -filter "*.css" -recurse | Resolve-Path -Relative | %{ " - $_" }
$notes += "`n- SASS`n"
$notes += Get-ChildItem -Path .\assets\bulma -filter "*.sass" | Resolve-Path -Relative | %{ " - $_" }
$notes += "`nRelease details on the [official release page](https://github.com/jgthms/bulma/releases/tag/$($BulmaRelease.release))"
$notes | Set-Content -encoding utf8 notes.md
Get-Content notes.md
} else {
Write-Output "No new Bulma Version found to pack"
}
- name: Create Release
if: ${{ env.BULMA_RELEASE }}
run: |
Write-Host "Creating Release for $ENV:BULMA_RELEASE : $ENV:BULMA_ARCHIVE"
$BulmaRelease = "$ENV:BULMA_RELEASE"
$BulmaArchive = "$ENV:BULMA_ARCHIVE"
$bulmaBranch = "bulma-$BulmaRelease"
git checkout -b $bulmaBranch
git add assets/bulma .github
git commit -m "pack Bulma $BulmaRelease for Hugo"
git push --set-upstream origin $bulmaBranch
# git tag -a "v$BulmaRelease" -m "packed Bulma release $BulmaRelease"
# git push --tags
git checkout main
gh release create "v$BulmaRelease" --title "Bulma4Hugo v$BulmaRelease" --target $bulmaBranch --latest --notes-file notes.md
git branch -D $bulmaBranch
git push origin --delete $bulmaBranch