-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinvoke.build.ps1
154 lines (128 loc) · 4.71 KB
/
invoke.build.ps1
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
Param(
$VersionMajor = (property VERSION_MAJOR "0"),
$VersionMinor = (property VERSION_MINOR "3"),
$BuildNumber = (property BUILD_NUMBER "1"),
$PatchString = (property PATCH_NUMBER "")
)
# Maintain semantic version in the parameters above
# Also change in cmd/kutti/main.go
$VersionString = "$($VersionMajor).$($VersionMinor).$($BuildNumber)$($PatchString)"
$KuttiCmdFiles = (Get-Item "cmd/kutti/*.go") + `
(Get-Item "internal/pkg/cli/*.go") + `
(Get-Item "internal/pkg/cmd/*.go") + `
(Get-Item "internal/pkg/cmd/*/*.go") + `
(Get-Item "go.mod") + `
(Get-Item "invoke.build.ps1")
# Synopsis: Show usage
task . {
Write-Host "Usage: make linux|windows|mac|linux-install-script|windows-installer|mac-install-script|all|installers|clean"
}
# Synopsis: Build output directory
task outputdir -Outputs out\ {
New-Item -Path out\ -ItemType Directory -ErrorAction Ignore
}
# Synopsis: Build linux binary
task linux -Outputs out/kutti_linux_amd64 -Inputs $($KuttiCmdFiles) {
exec {
$env:CGO_ENABLED="0"
$env:GOOS="linux"
$env:GOARCH="amd64"
go build -o $($Outputs) -ldflags "-X main.version=$($VersionString)" ./cmd/kutti/
}
}
# Synopsis: Build windows resource file
task winres -Outputs cmd/kutti/rsrc_windows_amd64.syso -Inputs (Get-Item "cmd/kutti/winres/*") {
exec {
go-winres make --in=cmd/kutti/winres/winres.json --out=cmd/kutti/rsrc --arch=amd64 --product-version=$($VersionString) --file-version=$($VersionString)
}
}
# Synopsis: Build windows binary
task windows -Outputs out/kutti_windows_amd64.exe -Inputs {$($KuttiCmdFiles) + (Get-Item -Path "cmd/kutti/rsrc_windows_amd64.syso")} winres, {
exec {
$env:CGO_ENABLED="0"
$env:GOOS="windows"
$env:GOARCH="amd64"
go build -o $($Outputs) -ldflags "-X main.version=$($VersionString)" ./cmd/kutti/
}
}
# Synopsis: Build mac binary
task mac -Outputs out/kutti_darwin_amd64 -Inputs $($KuttiCmdFiles) {
exec {
$env:CGO_ENABLED="0"
$env:GOOS="darwin"
$env:GOARCH="amd64"
go build -o $($Outputs) -ldflags "-X main.version=$($VersionString)" ./cmd/kutti/
}
}
# Synopsis: Build linux installation script
task linux-install-script -Outputs out/get-kutti-linux.sh -Inputs build/package/posix-install-script/generate-script.ps1 outputdir, {
$env:CURRENT_VERSION=$VersionString
$env:GOOS="linux"
$env:GOARCH="amd64"
exec {
Invoke-Expression $Inputs[0] > $Outputs
}
}
# Synopsis: Build windows installer
task windows-installer -Outputs out/kutti-windows-installer.exe -Inputs build/package/kutti-windows-installer/kutti-windows-installer.nsi windows, {
makensis -NOCD -V3 -- $($Inputs[0])
}
# Synopsis: Build mac installation script
task mac-install-script -Outputs out/get-kutti-darwin.sh -Inputs build/package/posix-install-script/generate-script.ps1 outputdir, {
$env:CURRENT_VERSION=$VersionString
$env:GOOS="darwin"
$env:GOARCH="amd64"
exec {
Invoke-Expression $Inputs[0] > $Outputs
}
}
# Synopsis: Build manpage docs output directory
task manpagedocsoutputdir -Outputs out\man {
New-Item out\man -ItemType Directory -ErrorAction Ignore
}
# Synopsis: Build manpage docs
task manpagedocs -Outputs out/man/kutti.1 -Inputs $($KuttiCmdFiles) manpagedocsoutputdir, {
exec {
go run internal/cmd/gendoc/main.go -o out/man -t manpages
}
}
# Synopsis: Build markdown docs output directory
task markdowndocsoutputdir -Outputs out\markdown {
New-Item out\markdown -ItemType Directory -ErrorAction Ignore
}
# Synopsis: Build markdown docs
task markdowndocs -Outputs out/markdown/kutti.md -Inputs $($KuttiCmdFiles) markdowndocsoutputdir, {
exec {
go run internal/cmd/gendoc/main.go -o out/markdown -t markdown
}
}
# Synopsis: Build all binaries
task all linux, windows, mac
# Synopsis: Build all installers
task installers linux-install-script, windows-installer, mac-install-script
# Synopsis: Build all docs
task docs manpagedocs, markdowndocs
# Synopsis: Clean built windows resource file
task resourceclean {
Remove-Item -Force -ErrorAction Ignore ./cmd/kutti/rsrc_windows_amd64.syso
}
# Synopsis: Clean built binaries
task binclean {
Remove-Item -Recurse -Force -ErrorAction Ignore ./out
}
# Synopsis: Clean built manpage docs
task manpagedocsclean {
exec {
Remove-Item -Recurse -Force -ErrorAction Ignore ./out/man
}
}
# Synopsis: Clean built markdown docs
task markdowndocsclean {
exec {
Remove-Item -Recurse -Force -ErrorAction Ignore ./out/markdown
}
}
# Synopsis: Clean all docs
task docsclean manpagedocsclean, markdowndocsclean
# Synopsis: Clean everything
task clean resourceclean, binclean