Skip to content

Commit 7b86cfb

Browse files
committed
fix: skip preset/customization UI when using remote config
1 parent 7634689 commit 7b86cfb

3 files changed

Lines changed: 52 additions & 52 deletions

File tree

internal/cli/root.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
)
1111

1212
var (
13-
version = "0.5.1"
13+
version = "0.5.2"
1414
cfg = &config.Config{}
1515
)
1616

internal/installer/installer.go

Lines changed: 36 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func Run(cfg *config.Config) error {
2727

2828
func runInstall(cfg *config.Config) error {
2929
fmt.Println()
30-
ui.Header("OpenBoot Installer v0.5.1")
30+
ui.Header("OpenBoot Installer v0.5.2")
3131
fmt.Println()
3232

3333
if cfg.RemoteConfig != nil {
@@ -56,6 +56,14 @@ func runInstall(cfg *config.Config) error {
5656
return err
5757
}
5858

59+
if cfg.RemoteConfig != nil {
60+
fmt.Println()
61+
ui.Success("Package installation complete!")
62+
ui.Muted("Dotfiles and shell setup will be handled by the install script.")
63+
fmt.Println()
64+
return nil
65+
}
66+
5967
if err := stepDotfiles(cfg); err != nil {
6068
ui.Error(fmt.Sprintf("Dotfiles setup failed: %v", err))
6169
}
@@ -120,6 +128,10 @@ func stepGitConfig(cfg *config.Config) error {
120128
}
121129

122130
func stepPresetSelection(cfg *config.Config) error {
131+
if cfg.RemoteConfig != nil {
132+
return nil
133+
}
134+
123135
ui.Header("Step 2: Preset Selection")
124136
fmt.Println()
125137

@@ -149,19 +161,21 @@ func stepPresetSelection(cfg *config.Config) error {
149161
}
150162

151163
func stepPackageCustomization(cfg *config.Config) error {
164+
if cfg.RemoteConfig != nil {
165+
cfg.SelectedPkgs = make(map[string]bool)
166+
for _, pkg := range cfg.RemoteConfig.Packages {
167+
cfg.SelectedPkgs[pkg] = true
168+
}
169+
ui.Info(fmt.Sprintf("Using %d packages from remote config", len(cfg.RemoteConfig.Packages)))
170+
fmt.Println()
171+
return nil
172+
}
173+
152174
ui.Header("Step 3: Package Selection")
153175
fmt.Println()
154176

155177
if cfg.Silent || (cfg.DryRun && !system.HasTTY()) {
156178
cfg.SelectedPkgs = config.GetPackagesForPreset(cfg.Preset)
157-
158-
if cfg.RemoteConfig != nil && len(cfg.RemoteConfig.Packages) > 0 {
159-
for _, pkg := range cfg.RemoteConfig.Packages {
160-
cfg.SelectedPkgs[pkg] = true
161-
}
162-
ui.Info(fmt.Sprintf("Using preset + %d additional packages from remote config", len(cfg.RemoteConfig.Packages)))
163-
}
164-
165179
total := len(cfg.SelectedPkgs)
166180
ui.Info(fmt.Sprintf("Using preset packages: %d selected", total))
167181
fmt.Println()
@@ -202,47 +216,26 @@ func stepPackageCustomization(cfg *config.Config) error {
202216
}
203217

204218
func stepInstallPackages(cfg *config.Config) error {
205-
ui.Header("Step 4: Installation")
219+
ui.Header("Step 2: Installation")
206220
fmt.Println()
207221

208222
var cliPkgs, caskPkgs []string
209223

210-
knownCasks := make(map[string]bool)
211-
for _, cat := range config.Categories {
212-
for _, pkg := range cat.Packages {
213-
if pkg.IsCask {
214-
knownCasks[pkg.Name] = true
215-
}
216-
}
217-
}
218-
219-
for _, cat := range config.Categories {
220-
for _, pkg := range cat.Packages {
221-
if cfg.SelectedPkgs[pkg.Name] {
222-
if pkg.IsCask {
223-
caskPkgs = append(caskPkgs, pkg.Name)
224-
} else {
225-
cliPkgs = append(cliPkgs, pkg.Name)
226-
}
227-
}
228-
}
229-
}
230-
231224
if cfg.RemoteConfig != nil {
232-
added := make(map[string]bool)
233-
for _, p := range cliPkgs {
234-
added[p] = true
235-
}
236-
for _, p := range caskPkgs {
237-
added[p] = true
225+
for pkg := range cfg.SelectedPkgs {
226+
caskPkgs = append(caskPkgs, pkg)
238227
}
239-
240-
for _, pkg := range cfg.RemoteConfig.Packages {
241-
if added[pkg] {
242-
continue
228+
} else {
229+
for _, cat := range config.Categories {
230+
for _, pkg := range cat.Packages {
231+
if cfg.SelectedPkgs[pkg.Name] {
232+
if pkg.IsCask {
233+
caskPkgs = append(caskPkgs, pkg.Name)
234+
} else {
235+
cliPkgs = append(cliPkgs, pkg.Name)
236+
}
237+
}
243238
}
244-
caskPkgs = append(caskPkgs, pkg)
245-
added[pkg] = true
246239
}
247240
}
248241

website/src/routes/api/auth/callback/+server.ts

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,26 @@ export const GET: RequestHandler = async ({ url, platform, cookies }) => {
2929
redirect(302, `${env.APP_URL}?error=token_failed`);
3030
}
3131

32-
const userResponse = await fetch(GITHUB_USER_URL, {
33-
headers: {
34-
Authorization: `Bearer ${tokenData.access_token}`,
35-
Accept: 'application/json',
36-
'User-Agent': 'OpenBoot'
37-
}
38-
});
32+
const headers = {
33+
Authorization: `Bearer ${tokenData.access_token}`,
34+
Accept: 'application/json',
35+
'User-Agent': 'OpenBoot'
36+
};
3937

38+
const userResponse = await fetch(GITHUB_USER_URL, { headers });
4039
const githubUser = await userResponse.json();
4140
if (!githubUser.id || !githubUser.login) {
4241
redirect(302, `${env.APP_URL}?error=user_failed`);
4342
}
4443

44+
let email = githubUser.email || '';
45+
if (!email) {
46+
const emailsResponse = await fetch('https://api.github.com/user/emails', { headers });
47+
const emails = await emailsResponse.json();
48+
const primary = emails.find((e: { primary: boolean; email: string }) => e.primary);
49+
email = primary?.email || emails[0]?.email || '';
50+
}
51+
4552
const userId = String(githubUser.id);
4653

4754
await env.DB.prepare(
@@ -55,7 +62,7 @@ export const GET: RequestHandler = async ({ url, platform, cookies }) => {
5562
updated_at = datetime('now')
5663
`
5764
)
58-
.bind(userId, githubUser.login, githubUser.email || '', githubUser.avatar_url || '')
65+
.bind(userId, githubUser.login, email, githubUser.avatar_url || '')
5966
.run();
6067

6168
const existingConfig = await env.DB.prepare('SELECT id FROM configs WHERE user_id = ? AND slug = ?').bind(userId, 'default').first();

0 commit comments

Comments
 (0)