|
6 | 6 | "context" |
7 | 7 | "fmt" |
8 | 8 | "os" |
| 9 | + "slices" |
9 | 10 | "strings" |
10 | 11 |
|
11 | 12 | "github.com/senzing-garage/go-cmdhelping/cmdhelper" |
@@ -165,32 +166,43 @@ func Version() string { |
165 | 166 |
|
166 | 167 | // Get a slice of database URL strings. |
167 | 168 | func getDatabaseURLs(ctx context.Context, senzingSettings string) ([]string, error) { |
168 | | - var err error |
| 169 | + var ( |
| 170 | + err error |
| 171 | + result []string |
| 172 | + ) |
169 | 173 |
|
170 | | - result := []string{} |
| 174 | + candidateDatabaseURLs := []string{} |
171 | 175 |
|
172 | 176 | databaseURL := viper.GetString(option.DatabaseURL.Arg) |
173 | 177 | if len(databaseURL) > 0 { |
174 | | - result = append(result, databaseURL) |
| 178 | + candidateDatabaseURLs = append(candidateDatabaseURLs, databaseURL) |
175 | 179 | } |
176 | 180 |
|
177 | | - if len(result) == 0 { |
| 181 | + if len(candidateDatabaseURLs) == 0 { |
178 | 182 | settingsParser, err := settingsparser.New(senzingSettings) |
179 | 183 | if err != nil { |
180 | | - return result, wraperror.Errorf(err, "getDatabaseURLs") |
| 184 | + return candidateDatabaseURLs, wraperror.Errorf(err, "getDatabaseURLs") |
181 | 185 | } |
182 | 186 |
|
183 | 187 | databaseURIs, err := settingsParser.GetDatabaseURIs(ctx) |
184 | 188 | if err != nil { |
185 | | - return result, wraperror.Errorf(err, "GetDatabaseURIs") |
| 189 | + return candidateDatabaseURLs, wraperror.Errorf(err, "GetDatabaseURIs") |
186 | 190 | } |
187 | 191 |
|
188 | 192 | for _, databaseURI := range databaseURIs { |
189 | 193 | databaseURL, err := helpersettings.BuildSenzingDatabaseURL(databaseURI) |
190 | 194 | if err != nil { |
191 | | - return result, wraperror.Errorf(err, "BuildSenzingDatabaseURL: %s", databaseURI) |
| 195 | + return candidateDatabaseURLs, wraperror.Errorf(err, "BuildSenzingDatabaseURL: %s", databaseURI) |
192 | 196 | } |
193 | 197 |
|
| 198 | + candidateDatabaseURLs = append(candidateDatabaseURLs, databaseURL) |
| 199 | + } |
| 200 | + } |
| 201 | + |
| 202 | + // Delete duplicates. |
| 203 | + |
| 204 | + for _, databaseURL := range candidateDatabaseURLs { |
| 205 | + if !slices.Contains(result, databaseURL) { |
194 | 206 | result = append(result, databaseURL) |
195 | 207 | } |
196 | 208 | } |
|
0 commit comments