Skip to content

Commit

Permalink
pack: skip packaging existing packages
Browse files Browse the repository at this point in the history
Ignore packagaging of previously packaged environments.

Part of #810
  • Loading branch information
psergee committed Jun 4, 2024
1 parent e678841 commit 02c7947
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 0 deletions.
20 changes: 20 additions & 0 deletions cli/pack/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,31 @@ func ttEnvironmentFilters(packCtx *PackCtx, cliOpts *config.CliOpts) []func(
return filters
}

// previousPackageFilters returns filters for the previously built packages.
func previousPackageFilters(packCtx *PackCtx) []func(
srcInfo os.FileInfo, src string) bool {
pkgName := packCtx.Name
return []func(srcInfo os.FileInfo, src string) bool{
func(srcInfo os.FileInfo, src string) bool {
name := srcInfo.Name()
if strings.HasPrefix(name, pkgName) {
for _, packageSuffix := range [...]string{".rpm", ".deb", ".gz", ".tgz"} {
if filepath.Ext(name) == packageSuffix {
return true
}
}
}
return false
},
}
}

// appSrcCopySkip returns a filter func to filter out artifacts paths.
func appSrcCopySkip(packCtx *PackCtx, cliOpts *config.CliOpts,
srcAppPath string) func(srcinfo os.FileInfo, src, dest string) (bool, error) {
appCopyFilters := appArtifactsFilters(cliOpts, srcAppPath)
appCopyFilters = append(appCopyFilters, ttEnvironmentFilters(packCtx, cliOpts)...)
appCopyFilters = append(appCopyFilters, previousPackageFilters(packCtx)...)
appCopyFilters = append(appCopyFilters, func(srcInfo os.FileInfo, src string) bool {
return skipDefaults(srcInfo, src)
})
Expand Down
36 changes: 36 additions & 0 deletions cli/pack/common_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -779,6 +779,42 @@ func Test_prepareBundle(t *testing.T) {
{assert.FileExists, "single_app/init.lua"},
{assert.FileExists, "single_app/tt.yaml"},
{assert.NoFileExists, "single_app/tt.yml"},
{assert.NoFileExists, "single_app/single_app_0.1.0.0-1_x86_64.deb"},
{assert.NoFileExists, "single_app/single_app-0.1.0.0-1.x86_64.rpm"},
{assert.NoFileExists, "single_app/single_app-0.1.0.0.x86_64.tar.gz"},
{assert.FileExists, "single_app/single_app-0.1.0.0.x86_64.zip"},
},
},
{
name: "Packing env with instances.enabled:. and changed name",
params: params{
configPath: "testdata/single_app/tt.yml",
tntExecutable: "testdata/single_app/bin/tarantool",
packCtx: PackCtx{TarantoolIsSystem: false, Name: "app"},
},
wantErr: false,
checks: []check{
{assert.NoDirExists, "instances.enabled"},
{assert.NoFileExists, "tt.yaml"},
{assert.NoFileExists, "tt.yml"},
{assert.NoDirExists, "include"},
{assert.NoDirExists, "single_app"},

{assert.NoDirExists, "app/instances.enabled"},
{assert.NoDirExists, "app/include"},
{assert.NoDirExists, "app/templates"},
{assert.NoDirExists, "app/modules"},
{assert.NoDirExists, "app/templates"},
{assert.NoDirExists, "app/distfiles"},
{assert.FileExists, "app/bin/tarantool"},
{assert.FileExists, "app/bin/tt"},
{assert.FileExists, "app/init.lua"},
{assert.FileExists, "app/tt.yaml"},
{assert.NoFileExists, "app/tt.yml"},
{assert.FileExists, "app/single_app_0.1.0.0-1_x86_64.deb"},
{assert.FileExists, "app/single_app-0.1.0.0-1.x86_64.rpm"},
{assert.FileExists, "app/single_app-0.1.0.0.x86_64.tar.gz"},
{assert.FileExists, "app/single_app-0.1.0.0.x86_64.zip"},
},
},
{
Expand Down
Empty file.
Empty file.
Empty file.
Empty file.

0 comments on commit 02c7947

Please sign in to comment.