diff --git a/cmd/build.go b/cmd/build.go index ed8b423a2..cf36f48be 100644 --- a/cmd/build.go +++ b/cmd/build.go @@ -7,13 +7,11 @@ package cmd import ( "errors" "fmt" - "path/filepath" "github.com/spf13/cobra" "github.com/elastic/elastic-package/internal/builder" "github.com/elastic/elastic-package/internal/cobraext" - "github.com/elastic/elastic-package/internal/docs" "github.com/elastic/elastic-package/internal/files" "github.com/elastic/elastic-package/internal/logger" "github.com/elastic/elastic-package/internal/packages" @@ -87,21 +85,12 @@ func buildCommandAction(cmd *cobra.Command, args []string) error { SignPackage: signPackage, SkipValidation: skipValidation, RepositoryRoot: repositoryRoot, + UpdateReadmes: true, }) if err != nil { return fmt.Errorf("building package failed: %w", err) } - targets, err := docs.UpdateReadmes(repositoryRoot, packageRoot, buildDir) - if err != nil { - return fmt.Errorf("updating files failed: %w", err) - } - - for _, target := range targets { - fileName := filepath.Base(target) - cmd.Printf("%s file rendered: %s\n", fileName, target) - } - cmd.Printf("Package built: %s\n", target) cmd.Println("Done") diff --git a/internal/builder/packages.go b/internal/builder/packages.go index c28e020b5..708751028 100644 --- a/internal/builder/packages.go +++ b/internal/builder/packages.go @@ -12,6 +12,7 @@ import ( "github.com/magefile/mage/sh" + "github.com/elastic/elastic-package/internal/docs" "github.com/elastic/elastic-package/internal/environment" "github.com/elastic/elastic-package/internal/files" "github.com/elastic/elastic-package/internal/logger" @@ -32,6 +33,7 @@ type BuildOptions struct { CreateZip bool SignPackage bool SkipValidation bool + UpdateReadmes bool } // BuildDirectory function locates the target build directory. If the directory doesn't exist, it will create it. @@ -228,6 +230,13 @@ func BuildPackage(options BuildOptions) (string, error) { return "", fmt.Errorf("resolving transform manifests failed: %w", err) } + if options.UpdateReadmes { + err = docs.UpdateReadmes(options.RepositoryRoot, options.PackageRootPath, builtPackageDir) + if err != nil { + return "", fmt.Errorf("updating readme files failed: %w", err) + } + } + if options.CreateZip { return buildZippedPackage(options, builtPackageDir) } diff --git a/internal/docs/readme.go b/internal/docs/readme.go index 39791172e..c92eeccdb 100644 --- a/internal/docs/readme.go +++ b/internal/docs/readme.go @@ -14,7 +14,6 @@ import ( "github.com/pmezard/go-difflib/difflib" - "github.com/elastic/elastic-package/internal/builder" "github.com/elastic/elastic-package/internal/logger" ) @@ -100,42 +99,38 @@ func isReadmeUpToDate(fileName, linksFilePath, packageRoot string) (bool, string // UpdateReadmes function updates all .md readme files using a defined template // files. The function doesn't perform any action if the template file is not present. -func UpdateReadmes(repositoryRoot *os.Root, packageRoot, buildDir string) ([]string, error) { +func UpdateReadmes(repositoryRoot *os.Root, packageRoot, packageBuildRoot string) error { linksFilePath, err := linksDefinitionsFilePath(repositoryRoot) if err != nil { - return nil, fmt.Errorf("locating links file failed: %w", err) + return fmt.Errorf("locating links file failed: %w", err) } readmeFiles, err := filepath.Glob(filepath.Join(packageRoot, "_dev", "build", "docs", "*.md")) if err != nil { - return nil, fmt.Errorf("reading directory entries failed: %w", err) + return fmt.Errorf("reading directory entries failed: %w", err) } - var targets []string for _, filePath := range readmeFiles { fileName := filepath.Base(filePath) - target, err := updateReadme(fileName, linksFilePath, packageRoot, buildDir) + target, err := updateReadme(fileName, linksFilePath, packageRoot, packageBuildRoot) if err != nil { - return nil, fmt.Errorf("updating readme file %s failed: %w", fileName, err) + return fmt.Errorf("updating readme file %s failed: %w", fileName, err) } + // Log only when a file has been rendered/updated. if target != "" { - targets = append(targets, target) + fileName := filepath.Base(target) + fmt.Printf("%s file rendered: %s\n", fileName, target) } } - return targets, nil + return nil } // updateReadme function updates a single readme file using a defined template file. // It writes the rendered file to both the package directory and the package build directory. -func updateReadme(fileName, linksFilePath, packageRoot, buildDir string) (string, error) { +func updateReadme(fileName, linksFilePath, packageRoot, packageBuildRoot string) (string, error) { logger.Debugf("Update the %s file", fileName) - packageBuildRoot, err := builder.BuildPackagesDirectory(packageRoot, buildDir) - if err != nil { - return "", fmt.Errorf("package build root not found: %w", err) - } - rendered, shouldBeRendered, err := generateReadme(fileName, linksFilePath, packageRoot, packageBuildRoot) if err != nil { return "", err diff --git a/internal/packages/archetype/package_test.go b/internal/packages/archetype/package_test.go index 088eeb232..f24ef0543 100644 --- a/internal/packages/archetype/package_test.go +++ b/internal/packages/archetype/package_test.go @@ -13,7 +13,6 @@ import ( "github.com/stretchr/testify/require" "github.com/elastic/elastic-package/internal/builder" - "github.com/elastic/elastic-package/internal/docs" "github.com/elastic/elastic-package/internal/packages" ) @@ -100,15 +99,12 @@ func buildPackage(t *testing.T, repositoryRoot *os.Root, packageRootPath string) buildDir := filepath.Join(repositoryRoot.Name(), "build") err := os.MkdirAll(buildDir, 0o755) require.NoError(t, err) - _, err = docs.UpdateReadmes(repositoryRoot, packageRootPath, buildDir) - if err != nil { - return err - } _, err = builder.BuildPackage(builder.BuildOptions{ PackageRootPath: packageRootPath, BuildDir: buildDir, RepositoryRoot: repositoryRoot, + UpdateReadmes: true, }) return err } diff --git a/internal/packages/installer/factory.go b/internal/packages/installer/factory.go index 5adc00120..546cf8211 100644 --- a/internal/packages/installer/factory.go +++ b/internal/packages/installer/factory.go @@ -91,6 +91,7 @@ func NewForPackage(options Options) (Installer, error) { SignPackage: false, SkipValidation: options.SkipValidation, RepositoryRoot: options.RepositoryRoot, + UpdateReadmes: false, }) if err != nil { return nil, fmt.Errorf("failed to build package: %v", err)