engine: resources: Add fragments support to file resource

This adds a "fragments" mode to the file resource. In addition to
"content" and "source", you can now alternatively build a file from the
file fragments of other files.
This commit is contained in:
James Shubin
2019-10-22 12:17:17 -04:00
parent b961c96862
commit 58421fd31a
7 changed files with 445 additions and 30 deletions

View File

@@ -0,0 +1,11 @@
Edge: file[/tmp/frags/] -> file[/tmp/frags/f1] # file[/tmp/frags/] -> file[/tmp/frags/f1] (autoedge)
Edge: file[/tmp/frags/] -> file[/tmp/frags/f2] # file[/tmp/frags/] -> file[/tmp/frags/f2] (autoedge)
Edge: file[/tmp/frags/] -> file[/tmp/frags/f3] # file[/tmp/frags/] -> file[/tmp/frags/f3] (autoedge)
Edge: file[/tmp/bonus_file] -> file[/tmp/whole1] # file[/tmp/bonus_file] -> file[/tmp/whole1] (autoedge)
Edge: file[/tmp/frags/] -> file[/tmp/whole1] # file[/tmp/frags/] -> file[/tmp/whole1] (autoedge)
Vertex: file[/tmp/bonus_file]
Vertex: file[/tmp/frags/]
Vertex: file[/tmp/frags/f1]
Vertex: file[/tmp/frags/f2]
Vertex: file[/tmp/frags/f3]
Vertex: file[/tmp/whole1]

View File

@@ -0,0 +1,33 @@
file "/tmp/frags/" {
state => "exists",
}
# fragments
file "/tmp/frags/f1" {
state => "exists",
content => "i am f1\n",
}
file "/tmp/frags/f2" {
state => "exists",
content => "i am f2\n",
}
file "/tmp/frags/f3" {
state => "exists",
content => "i am f3\n",
}
# You can also drop in an unmanaged file into the frags dir for it to get used!
# And of course you can hard-code the list of files to use like this one is...
file "/tmp/bonus_file" {
state => "exists",
content => "i am a bonus file\n",
}
# automatic edges will get added!
file "/tmp/whole1" {
state => "exists",
fragments => [
"/tmp/frags/", # pull from this dir
"/tmp/bonus_file", # also pull this one file
],
}