Merge pull request #82 from justincormack/source-ifpresent

Allow some files specified with `source` to be optional
This commit is contained in:
Justin Cormack 2017-06-15 11:22:21 -07:00 committed by GitHub
commit d8cc1b3f08
4 changed files with 16 additions and 1 deletions

View File

@ -574,6 +574,14 @@ func filesystem(m Moby, tw *tar.Writer) error {
if len(f.Source) > 2 && f.Source[:2] == "~/" {
f.Source = homeDir() + f.Source[1:]
}
if f.Optional {
_, err := os.Stat(f.Source)
if err != nil {
// skip if not found or readable
log.Debugf("Skipping file [%s] as not readable and marked optional", f.Source)
continue
}
}
contents, err := ioutil.ReadFile(f.Source)
if err != nil {
return err

View File

@ -32,6 +32,7 @@ type Moby struct {
Symlink string
Contents string
Source string
Optional bool
Mode string
}
}

View File

@ -23,6 +23,7 @@ var schema = string(`
"symlink": {"type": "string"},
"contents": {"type": "string"},
"source": {"type": "string"},
"optional": {"type": "boolean"},
"mode": {"type": "string"}
}
},

View File

@ -58,12 +58,17 @@ files:
source: "/some/path/on/local/filesystem"
mode: "0666"
- path: dir/name2
source: "/some/path/that/it/is/ok/to/omit"
optional: true
mode: "0666"
- path: dir/name3
contents: "orange"
mode: "0644"
```
Specifying the `mode` is optional, and will default to `0600`. Leading directories will be
created if not specified.
created if not specified. You can use `~/path` in `source` to specify a path in the build
user's home directory.
## `trust`