Skip to content

Commit 233d963

Browse files
committed
Allow update seleciton via flags
1 parent bb74dae commit 233d963

File tree

1 file changed

+35
-17
lines changed

1 file changed

+35
-17
lines changed

main.go

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"bytes"
5+
"flag"
56
"fmt"
67
"io"
78
"macup/macup"
@@ -16,36 +17,53 @@ func main() {
1617
os.Exit(1)
1718
}
1819

20+
// Define flags for each update function
21+
brewFlag := flag.Bool("brew", false, "Update Homebrew packages")
22+
vscodeFlag := flag.Bool("vscode", false, "Update VSCode extensions")
23+
gemFlag := flag.Bool("gem", false, "Update Ruby gems")
24+
nodeFlag := flag.Bool("node", false, "Update Node.js packages")
25+
cargoFlag := flag.Bool("cargo", false, "Update Rust packages")
26+
appstoreFlag := flag.Bool("appstore", false, "Update Mac App Store apps")
27+
macosFlag := flag.Bool("macos", false, "Update macOS system")
28+
flag.Parse()
29+
1930
// List of update functions to run in parallel
2031
updateFuncs := []struct {
21-
fn func(writer io.Writer)
32+
fn func(writer io.Writer)
33+
flag bool
2234
}{
23-
{macup.UpdateBrew}, // Update Homebrew packages
24-
{macup.UpdateVSCodeExt}, // Update VSCode extensions
25-
{macup.UpdateGem}, // Update Ruby gems
26-
{macup.UpdateNodePkg}, // Update Node.js packages
27-
{macup.UpdateCargo}, // Update Rust packages
28-
{macup.UpdateAppStore}, // Update Mac App Store apps
29-
{macup.UpdateMacOS}, // Update macOS system
35+
{macup.UpdateBrew, *brewFlag},
36+
{macup.UpdateVSCodeExt, *vscodeFlag},
37+
{macup.UpdateGem, *gemFlag},
38+
{macup.UpdateNodePkg, *nodeFlag},
39+
{macup.UpdateCargo, *cargoFlag},
40+
{macup.UpdateAppStore, *appstoreFlag},
41+
{macup.UpdateMacOS, *macosFlag},
3042
}
3143

44+
runAll := flag.NFlag() == 0
45+
3246
var wg sync.WaitGroup
3347
buffers := make([]*bytes.Buffer, len(updateFuncs))
3448

3549
// Run each update function in a separate goroutine
3650
for i, u := range updateFuncs {
37-
wg.Add(1)
38-
buffers[i] = &bytes.Buffer{}
39-
go func(fn func(writer io.Writer), buffer *bytes.Buffer) {
40-
defer wg.Done()
41-
fn(buffer) // Execute update and write output to buffer
42-
}(u.fn, buffers[i])
51+
if runAll || u.flag {
52+
wg.Add(1)
53+
buffers[i] = &bytes.Buffer{}
54+
go func(fn func(writer io.Writer), buffer *bytes.Buffer) {
55+
defer wg.Done()
56+
fn(buffer) // Execute update and write output to buffer
57+
}(u.fn, buffers[i])
58+
}
4359
}
4460

4561
wg.Wait() // Wait for all updates to finish
4662

4763
// Print the output of each update function
48-
for i := range updateFuncs {
49-
fmt.Println(buffers[i].String())
64+
for i, u := range updateFuncs {
65+
if (runAll || u.flag) && buffers[i] != nil {
66+
fmt.Println(buffers[i].String())
67+
}
5068
}
51-
}
69+
}

0 commit comments

Comments
 (0)