Skip to content

Commit

Permalink
The image update check is working
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrisWiegman committed Jun 28, 2024
1 parent 3f5ba06 commit f81bc1c
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 13 deletions.
2 changes: 1 addition & 1 deletion internal/docker/container_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ func TestContainerRun(t *testing.T) {

d.imageUpdateData = koanf.New(".")

err = d.EnsureImage("alpine", 1, consoleOutput)
err = d.EnsureImage("alpine", "", 1, consoleOutput)
if err != nil {
t.Error(err)
}
Expand Down
31 changes: 23 additions & 8 deletions internal/docker/image.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ var displayJSONMessagesStream = jsonmessage.DisplayJSONMessagesStream

// https://gist.github.com/miguelmota/4980b18d750fb3b1eb571c3e207b1b92
// https://riptutorial.com/docker/example/31980/image-pulling-with-progress-bars--written-in-go
func (d *Client) EnsureImage(imageName string, updateDays int64, consoleOutput *console.Console) (err error) {
func (d *Client) EnsureImage(imageName, appDirectory string, updateDays int64, consoleOutput *console.Console) (err error) {
if !strings.Contains(imageName, ":") {
imageName = fmt.Sprintf("%s:latest", imageName)
}
Expand All @@ -37,7 +37,7 @@ func (d *Client) EnsureImage(imageName string, updateDays int64, consoleOutput *
}
}

return d.maybeUpdateImage(imageName, updateDays, consoleOutput.JSON)
return d.maybeUpdateImage(imageName, updateDays, consoleOutput.JSON, appDirectory)
}

func ValidateImage(imageName, imageTag string) error {
Expand Down Expand Up @@ -72,7 +72,7 @@ func ValidateImage(imageName, imageTag string) error {
return err
}

func (d *Client) maybeUpdateImage(imageName string, updateDays int64, suppressOutput bool) error {
func (d *Client) maybeUpdateImage(imageName string, updateDays int64, suppressOutput bool, appDirectory string) error {
lastUpdated := d.imageUpdateData.Time(imageName, time.RFC3339)

imageList, err := d.apiClient.ImageList(context.Background(), image.ListOptions{})
Expand Down Expand Up @@ -119,7 +119,7 @@ func (d *Client) maybeUpdateImage(imageName string, updateDays int64, suppressOu
out, _ = os.Open(os.DevNull)
}

err = d.setImageUpdate(imageName, time.Now())
err = d.setImageUpdate(imageName, time.Now(), appDirectory)
if err != nil {
return err
}
Expand Down Expand Up @@ -173,8 +173,23 @@ func (d *Client) loadImageUpdateData(appDirectory string) (*koanf.Koanf, error)
return imageUpdateData, nil
}

func (d *Client) setImageUpdate(imageName string, timeStamp time.Time) error {
fmt.Println(imageName)
fmt.Println(timeStamp)
return nil
func (d *Client) setImageUpdate(imageName string, timeStamp time.Time, appDirectory string) error {
err := d.imageUpdateData.Set(imageName, timeStamp.Format(time.RFC3339))
if err != nil {
return err
}

configFile := filepath.Join(appDirectory, "config", "images.json")

f, _ := os.Create(configFile)
defer f.Close()

jsonBytes, err := d.imageUpdateData.Marshal(kjson.Parser())
if err != nil {
return err
}

_, err = f.Write(jsonBytes)

return err
}
2 changes: 1 addition & 1 deletion internal/docker/image_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func TestEnsureImage(t *testing.T) {
displayJSONMessagesStream = mocks.MockDisplayJSONMessagesStream
mocks.MockedDisplayJSONMessagesStreamReturn = nil //nolint:gocritic

err = d.EnsureImage("alpine", 1, consoleOutput)
err = d.EnsureImage("alpine", "", 1, consoleOutput)
assert.Equal(t, nil, err)

displayJSONMessagesStream = jsonmessage.DisplayJSONMessagesStream
Expand Down
2 changes: 1 addition & 1 deletion internal/site/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ func (s *Site) WPCli(command []string, interactive bool, consoleOutput *console.
container.Env = append(container.Env, "KANA_ADMIN_LOGIN=true")
}

err = s.dockerClient.EnsureImage(container.Image, s.settings.GetInt("UpdateInterval"), consoleOutput)
err = s.dockerClient.EnsureImage(container.Image, s.settings.Get("appDirectory"), s.settings.GetInt("updateInterval"), consoleOutput)
if err != nil {
return 1, "", err
}
Expand Down
2 changes: 1 addition & 1 deletion internal/site/site.go
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,7 @@ func (s *Site) maybeRemoveDefaultPlugins() error {

// startContainer Starts a given container configuration.
func (s *Site) startContainer(container *docker.ContainerConfig, randomPorts, localUser bool, consoleOutput *console.Console) error {
err := s.dockerClient.EnsureImage(container.Image, s.settings.GetInt("UpdateInterval"), consoleOutput)
err := s.dockerClient.EnsureImage(container.Image, s.settings.Get("appDirectory"), s.settings.GetInt("updateInterval"), consoleOutput)
if err != nil {
err = s.handleImageError(container, err)
if err != nil {
Expand Down
6 changes: 5 additions & 1 deletion internal/site/traefik.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,11 @@ func (s *Site) startTraefik(consoleOutput *console.Console) error {
return err
}

err = s.dockerClient.EnsureImage("traefik:"+traefikVersion, s.settings.GetInt("UpdateInterval"), consoleOutput)
err = s.dockerClient.EnsureImage(
"traefik:"+traefikVersion,
s.settings.Get("appDirectory"),
s.settings.GetInt("updateInterval"),
consoleOutput)
if err != nil {
return err
}
Expand Down

0 comments on commit f81bc1c

Please sign in to comment.