Skip to content

Commit 77b5abe

Browse files
committed
feat: allow one-shot sync of specific tags
1 parent b0a160d commit 77b5abe

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

cmd/docker-sync/cmd/sync.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import (
55
"os"
66
"os/signal"
77
"path/filepath"
8+
"strings"
89
"syscall"
910
"time"
1011

1112
dockersync "github.com/Altinity/docker-sync"
1213
"github.com/Altinity/docker-sync/config"
13-
"github.com/Altinity/docker-sync/logging"
1414
"github.com/Altinity/docker-sync/structs"
1515
"github.com/rs/zerolog/log"
1616
"github.com/spf13/cobra"
@@ -20,6 +20,7 @@ import (
2020
type syncImage struct {
2121
Source string `yaml:"source"`
2222
Targets []string `yaml:"targets"`
23+
Tags []string `yaml:"tags"`
2324
MutableTags []string `yaml:"mutableTags"`
2425
IgnoredTags []string `yaml:"ignoredTags"`
2526
}
@@ -63,21 +64,21 @@ var syncCmd = &cobra.Command{
6364
os.Exit(0)
6465
}()
6566

66-
logging.ReloadGlobalLogger()
67-
6867
log.Info().Msg("Starting Docker Sync")
6968

7069
cnf := syncConfig{}
7170
cnf.Ecr.Region, _ = cmd.Flags().GetString("ecr-region")
7271

7372
source, _ := cmd.Flags().GetString("source")
7473
target, _ := cmd.Flags().GetString("target")
74+
tags, _ := cmd.Flags().GetStringSlice("tags")
7575
mutableTags, _ := cmd.Flags().GetStringSlice("mutableTags")
7676
ignoredTags, _ := cmd.Flags().GetStringSlice("ignoredTags")
7777

7878
cnf.Sync.Images = append(cnf.Sync.Images, syncImage{
7979
Source: source,
8080
Targets: []string{target},
81+
Tags: tags,
8182
MutableTags: mutableTags,
8283
IgnoredTags: ignoredTags,
8384
})
@@ -97,7 +98,6 @@ var syncCmd = &cobra.Command{
9798
imgHelper := structs.Image{}
9899

99100
sourceUrl := imgHelper.GetRegistry(source)
100-
targetUrl := imgHelper.GetRegistry(target)
101101

102102
if sourceUrl != "" && (sourceUsername != "" || sourcePassword != "" || sourceToken != "" || sourceHelper != "") {
103103
registries = append(registries, syncRegistry{
@@ -112,6 +112,14 @@ var syncCmd = &cobra.Command{
112112
})
113113
}
114114

115+
var targetUrl string
116+
if strings.HasPrefix(target, "r2:") || strings.HasPrefix(target, "s3:") {
117+
fields := strings.Split(target, ":")
118+
targetUrl = strings.Join(fields[:3], ":")
119+
} else {
120+
targetUrl = imgHelper.GetRegistry(target)
121+
}
122+
115123
if targetUrl != "" && (targetUsername != "" || targetPassword != "" || targetToken != "" || targetHelper != "") {
116124
registries = append(registries, syncRegistry{
117125
Auth: syncAuth{
@@ -138,7 +146,7 @@ var syncCmd = &cobra.Command{
138146
log.Fatal().Err(err).Msg("Failed to marshal configuration")
139147
}
140148

141-
if err := os.WriteFile(filepath.Join(tmpDir, "config.yaml"), b, 0644); err != nil {
149+
if err := os.WriteFile(filepath.Join(tmpDir, "config.yaml"), b, 0o644); err != nil {
142150
log.Fatal().Err(err).Msg("Failed to write configuration")
143151
}
144152

@@ -171,6 +179,7 @@ func init() {
171179
syncCmd.MarkFlagRequired("source")
172180
syncCmd.MarkFlagRequired("target")
173181

182+
syncCmd.Flags().StringSliceP("tags", "o", []string{}, "Sync only these tags")
174183
syncCmd.Flags().StringSliceP("mutable-tags", "m", []string{}, "Mutable tags")
175184
syncCmd.Flags().StringSliceP("ignored-tags", "i", []string{}, "Ignored tags")
176185

0 commit comments

Comments
 (0)