blob: b371eb9538919f293221f82d9155b00990a9561a [file] [log] [blame]
// Copyright 2020 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 cli
import (
"flag"
"os"
"path/filepath"
"go.fuchsia.dev/fuchsia/src/testing/host-target-testing/artifacts"
)
type ArchiveConfig struct {
outputDir string
lkgPath string
artifactsPath string
archive *artifacts.Archive
}
func NewArchiveConfig(fs *flag.FlagSet, testDataPath string) *ArchiveConfig {
c := &ArchiveConfig{}
fs.StringVar(&c.outputDir, "output-dir", "", "save temporary files to this directory, defaults to a tempdir")
fs.StringVar(&c.lkgPath, "lkg", filepath.Join(testDataPath, "lkg"), "path to lkg, default is $FUCHSIA_DIR/prebuilt/tools/lkg/lkg")
fs.StringVar(&c.artifactsPath, "artifacts", filepath.Join(testDataPath, "artifacts"), "path to the artifacts binary, default is $FUCHSIA_DIR/prebuilt/tools/artifacts/artifacts")
return c
}
func (c *ArchiveConfig) OutputDir() (string, func(), error) {
// If we specified an -output-dir, return it, and a cleanup function
// that does nothing.
if c.outputDir != "" {
return c.outputDir, func() {}, nil
}
// Otherwise create a tempdir, and return a cleanup function that
// deletes the tempdir when called.
outputDir, err := os.MkdirTemp("", "system-tests")
if err != nil {
return "", func() {}, err
}
return outputDir, func() { os.RemoveAll(outputDir) }, nil
}
func (c *ArchiveConfig) BuildArchive() *artifacts.Archive {
if c.archive == nil {
// Connect to the build archive service.
c.archive = artifacts.NewArchive(c.lkgPath, c.artifactsPath)
}
return c.archive
}