blob: db763db37fd5dbdbb6d40ddf8fbe07c7bbeee4a0 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package artifactory
import (
"fmt"
"path"
"path/filepath"
"go.fuchsia.dev/fuchsia/tools/build"
)
// ProductSizeCheckerOutputUploads generates the Uploads for the output of product size checker.
func ProductSizeCheckerOutputUploads(mods *build.Modules, namespace string) ([]Upload, error) {
return productSizeCheckerOutputUploads(mods, namespace)
}
func productSizeCheckerOutputUploads(mods productSizeCheckerOutputModules, namespace string) ([]Upload, error) {
// There should be either 0 or 1 ProductSizeCheckerOutputs.
if len(mods.ProductSizeCheckerOutput()) == 0 {
return []Upload{}, nil
} else if len(mods.ProductSizeCheckerOutput()) == 1 {
return []Upload{
{
Source: filepath.Join(mods.BuildDir(), mods.ProductSizeCheckerOutput()[0].Visualization),
Destination: path.Join(namespace, "visualization"),
Recursive: true,
},
{
Source: filepath.Join(mods.BuildDir(), mods.ProductSizeCheckerOutput()[0].SizeBreakdown),
Destination: path.Join(namespace, "size_breakdown.txt"),
},
}, nil
} else {
return nil, fmt.Errorf("Expected 0 or 1 ProductSizeCheckerOutputs, found %d", len(mods.ProductSizeCheckerOutput()))
}
}
type productSizeCheckerOutputModules interface {
BuildDir() string
ProductSizeCheckerOutput() []build.ProductSizeCheckerOutput
}