Skip to content

Commit d7707c5

Browse files
committed
fix: do not allow duplicate registries
Fixes: #2
1 parent 4b6cf80 commit d7707c5

File tree

2 files changed

+37
-5
lines changed

2 files changed

+37
-5
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package newregistryinput
2+
3+
import (
4+
tea "github.com/charmbracelet/bubbletea"
5+
"github.com/fredrikmwold/jsrepo-tui/src/commands/manifest"
6+
)
7+
8+
func duplicateRegistryErrorMessage() tea.Msg {
9+
return manifest.ManifestErrorMessage("You have already added this registry")
10+
}

src/bubbles/new_registry_input/new_registry_input.go

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,14 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
4141
case tea.KeyEnter:
4242
registries := viper.GetStringSlice("registries")
4343
newRegistry := m.newRegistryInput.Value()
44-
result := manifest.GetManifest(newRegistry)()
45-
if _, ok := result.(manifest.ManifestErrorMessage); ok {
46-
return m, func() tea.Msg {
47-
return result
48-
}
44+
if m.checkIfDuplicateRegistry(newRegistry) {
45+
return m, duplicateRegistryErrorMessage
4946
}
47+
48+
if valid, cmd := m.checkIfValidRegistry(newRegistry); !valid {
49+
return m, cmd
50+
}
51+
5052
registries = append(registries, newRegistry)
5153
viper.Set("registries", registries)
5254
viper.WriteConfig()
@@ -68,3 +70,23 @@ func (m Model) View() string {
6870
Padding(0, 1).
6971
Render(m.newRegistryInput.View())
7072
}
73+
74+
func (m Model) checkIfDuplicateRegistry(newRegistry string) bool {
75+
registries := viper.GetStringSlice("registries")
76+
for _, registry := range registries {
77+
if registry == newRegistry {
78+
return true
79+
}
80+
}
81+
return false
82+
}
83+
84+
func (m Model) checkIfValidRegistry(newRegistry string) (bool, tea.Cmd) {
85+
result := manifest.GetManifest(newRegistry)()
86+
if _, ok := result.(manifest.ManifestErrorMessage); ok {
87+
return false, func() tea.Msg {
88+
return result
89+
}
90+
}
91+
return true, nil
92+
}

0 commit comments

Comments
 (0)