mirror of
https://github.com/mudler/luet.git
synced 2025-09-09 02:59:30 +00:00
Strip invalid chars from docker images also for metadata files
Fixes #199
This commit is contained in:
@@ -19,6 +19,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/docker/cli/cli/trust"
|
"github.com/docker/cli/cli/trust"
|
||||||
"github.com/docker/distribution/reference"
|
"github.com/docker/distribution/reference"
|
||||||
@@ -122,3 +123,7 @@ func DownloadAndExtractDockerImage(temp, image, dest string, auth *types.AuthCon
|
|||||||
err = c.Unpack(image, dest)
|
err = c.Unpack(image, dest)
|
||||||
return listedImage, err
|
return listedImage, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func StripInvalidStringsFromImage(s string) string {
|
||||||
|
return strings.ReplaceAll(s, "+", "-")
|
||||||
|
}
|
||||||
|
30
pkg/helpers/docker_test.go
Normal file
30
pkg/helpers/docker_test.go
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
// Copyright © 2021 Ettore Di Giacinto <mudler@sabayon.org>
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation; either version 2 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License along
|
||||||
|
// with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
package helpers_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
. "github.com/mudler/luet/pkg/helpers"
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ = Describe("StripInvalidStringsFromImage", func() {
|
||||||
|
Context("Image names", func() {
|
||||||
|
It("strips invalid chars", func() {
|
||||||
|
Expect(StripInvalidStringsFromImage("foo+bar")).To(Equal("foo-bar"))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
@@ -136,6 +136,7 @@ func (c *DockerClient) DownloadArtifact(a *artifact.PackageArtifact) (*artifact.
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *DockerClient) DownloadFile(name string) (string, error) {
|
func (c *DockerClient) DownloadFile(name string) (string, error) {
|
||||||
|
name = helpers.StripInvalidStringsFromImage(name)
|
||||||
var file *os.File = nil
|
var file *os.File = nil
|
||||||
var err error
|
var err error
|
||||||
var temp string
|
var temp string
|
||||||
|
@@ -166,7 +166,7 @@ func (d *dockerRepositoryGenerator) pushImageFromArtifact(a *artifact.PackageArt
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "failed generating checksums for tree")
|
return errors.Wrap(err, "failed generating checksums for tree")
|
||||||
}
|
}
|
||||||
imageTree := fmt.Sprintf("%s:%s", d.imagePrefix, a.GetFileName())
|
imageTree := fmt.Sprintf("%s:%s", d.imagePrefix, helpers.StripInvalidStringsFromImage(a.GetFileName()))
|
||||||
|
|
||||||
return d.pushFileFromArtifact(treeArchive, imageTree)
|
return d.pushFileFromArtifact(treeArchive, imageTree)
|
||||||
}
|
}
|
||||||
|
@@ -309,7 +309,7 @@ func (p *DefaultPackage) GetPackageName() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *DefaultPackage) ImageID() string {
|
func (p *DefaultPackage) ImageID() string {
|
||||||
return strings.ReplaceAll(p.GetFingerPrint(), "+", "-")
|
return helpers.StripInvalidStringsFromImage(p.GetFingerPrint())
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetBuildTimestamp returns the package build timestamp
|
// GetBuildTimestamp returns the package build timestamp
|
||||||
|
Reference in New Issue
Block a user