Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 1 addition & 12 deletions cmd/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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")
Expand Down
9 changes: 9 additions & 0 deletions internal/builder/packages.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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.
Expand Down Expand Up @@ -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)
}
Expand Down
25 changes: 10 additions & 15 deletions internal/docs/readme.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)

Expand Down Expand Up @@ -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
Expand Down
6 changes: 1 addition & 5 deletions internal/packages/archetype/package_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)

Expand Down Expand Up @@ -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
}
Expand Down
1 change: 1 addition & 0 deletions internal/packages/installer/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down