From fe76081e0a77ef62575b8cbe170a2ff98d638735 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Tue, 9 Aug 2016 17:41:21 +0300 Subject: [PATCH] post-processor/manifest: allow to strip path components from artifact path Signed-off-by: Vasiliy Tolstov --- post-processor/manifest/post-processor.go | 16 +++++++++++----- .../source/docs/post-processors/manifest.html.md | 4 +++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/post-processor/manifest/post-processor.go b/post-processor/manifest/post-processor.go index 7e67b8cad..0b543d3a4 100644 --- a/post-processor/manifest/post-processor.go +++ b/post-processor/manifest/post-processor.go @@ -6,6 +6,7 @@ import ( "io/ioutil" "log" "os" + "path/filepath" "time" "github.com/mitchellh/packer/common" @@ -17,9 +18,9 @@ import ( type Config struct { common.PackerConfig `mapstructure:",squash"` - Filename string `mapstructure:"filename"` - - ctx interpolate.Context + Filename string `mapstructure:"filename"` + StripPath bool `mapstructure:"strip_path"` + ctx interpolate.Context } type PostProcessor struct { @@ -58,11 +59,16 @@ func (p *PostProcessor) PostProcess(ui packer.Ui, source packer.Artifact) (packe // Create the current artifact. for _, name := range source.Files() { + af := ArtifactFile{} if fi, err = os.Stat(name); err == nil { - artifact.ArtifactFiles = append(artifact.ArtifactFiles, ArtifactFile{Name: name, Size: fi.Size()}) + af.Size = fi.Size() + } + if p.config.StripPath { + af.Name = filepath.Base(name) } else { - artifact.ArtifactFiles = append(artifact.ArtifactFiles, ArtifactFile{Name: name}) + af.Name = name } + artifact.ArtifactFiles = append(artifact.ArtifactFiles, af) } artifact.ArtifactId = source.Id() artifact.BuilderType = p.config.PackerBuilderType diff --git a/website/source/docs/post-processors/manifest.html.md b/website/source/docs/post-processors/manifest.html.md index 88e658288..2130c53a4 100644 --- a/website/source/docs/post-processors/manifest.html.md +++ b/website/source/docs/post-processors/manifest.html.md @@ -22,6 +22,7 @@ You can specify manifest more than once and write each build to its own file, or ### Optional: - `filename` (string) The manifest will be written to this file. This defaults to `packer-manifest.json`. +- `strip_path` (bool) Write only filename without the path to the manifest file. This defaults to false. ### Example Configuration @@ -32,7 +33,8 @@ You can simply add `{"type":"manifest"}` to your post-processor section. Below i "post-processors": [ { "type": "manifest", - "filename": "manifest.json" + "filename": "manifest.json", + "strip_path": true } ] }