-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.ps1
105 lines (89 loc) · 2.72 KB
/
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
<#
.SYNOPSIS
Run tasks
.\build.ps1 <task-name>.
.EXAMPLE
.\build.ps1 up
.\build.ps1 run
.\build.ps1 ent-new MyEntity
#>
# Function to determine if docker-compose or docker compose is installed
function Get-DockerComposeCommand {
$dockerCompose = Get-Command "docker-compose" -ErrorAction SilentlyContinue
if ($dockerCompose) {
return "docker-compose"
}
$dockerCompose = Get-Command "docker" -ErrorAction SilentlyContinue
if ($dockerCompose) {
return "docker compose"
}
throw "Docker Compose not found"
}
$DCO_BIN = Get-DockerComposeCommand
# Helper function to run docker exec commands
function Invoke-DockerExec {
param($container, $command)
docker exec -it $container $command
}
# Tasks
function Invoke-Db { Invoke-DockerExec "pagoda_db" "psql postgresql://admin:admin@localhost:5432/app" }
function Invoke-DbTest { Invoke-DockerExec "pagoda_db" "psql postgresql://admin:admin@localhost:5432/app_test" }
function Invoke-Cache { Invoke-DockerExec "pagoda_cache" "redis-cli" }
function Invoke-CacheClear { Invoke-DockerExec "pagoda_cache" "redis-cli flushall" }
function Invoke-CacheTest { Invoke-DockerExec "pagoda_cache" "redis-cli -n 1" }
function Invoke-EntInstall { go get -d entgo.io/ent/cmd/ent }
function Invoke-EntGen { go generate ./ent }
function Invoke-EntNew { param($name) go run entgo.io/ent/cmd/ent new $name }
function Invoke-Up {
& $DCO_BIN up -d
Start-Sleep -Seconds 3
}
function Invoke-Stop { & $DCO_BIN stop }
function Invoke-Down { & $DCO_BIN down }
function Invoke-Reset {
Invoke-Down
Invoke-Up
}
function Invoke-Run {
Clear-Host
go run cmd/web/main.go
}
function Invoke-Test { go test -count=1 -p 1 ./... }
function Invoke-Worker {
Clear-Host
go run cmd/worker/main.go
}
function Invoke-CheckUpdates {
$updates = go list -u -m -f '{{if not .Indirect}}{{.}}{{end}}' all | Select-String "\["
if ($updates) {
Write-Output $updates
} else {
Write-Output "No updates found."
}
}
# Main script
param(
[Parameter(Position = 0, Mandatory = $true)]
[string]$Task,
[Parameter(ValueFromRemainingArguments = $true)]
$RestArgs
)
switch ($Task) {
"db" { Invoke-Db }
"db-test" { Invoke-DbTest }
"cache" { Invoke-Cache }
"cache-clear" { Invoke-CacheClear }
"cache-test" { Invoke-CacheTest }
"ent-install" { Invoke-EntInstall }
"ent-gen" { Invoke-EntGen }
"ent-new" { Invoke-EntNew $RestArgs }
"up" { Invoke-Up }
"stop" { Invoke-Stop }
"down" { Invoke-Down }
"reset" { Invoke-Reset }
"run" { Invoke-Run }
"test" { Invoke-Test }
"worker" { Invoke-Worker }
"check-updates" { Invoke-CheckUpdates }
default { Write-Error "Unknown task: $Task" }
}