Safe Haskell | None |
---|---|
Language | Haskell2010 |
Top-Level data types for B9 build artifacts.
- data ArtifactGenerator
- = Sources [ArtifactSource] [ArtifactGenerator]
- | Let [(String, String)] [ArtifactGenerator]
- | LetX [(String, [String])] [ArtifactGenerator]
- | Each [(String, [String])] [ArtifactGenerator]
- | EachT [String] [[String]] [ArtifactGenerator]
- | Artifact InstanceId ArtifactAssembly
- | EmptyArtifact
- data ArtifactSource
- newtype InstanceId = IID String
- data ArtifactTarget
- data CloudInitType
- data ArtifactAssembly
- data AssembledArtifact = AssembledArtifact InstanceId [ArtifactTarget]
- instanceIdKey :: String
- buildIdKey :: String
- buildDateKey :: String
- getAssemblyOutputFiles :: ArtifactAssembly -> [FilePath]
Documentation
data ArtifactGenerator Source
Artifacts represent the things B9 can build. A generator specifies howto generate parameterized, multiple artifacts. The general structure is:
Let [ ... bindings ... ] [ Sources [ ... list all input files ... ] [ Artifact ... , Artifact ... , Let [ ... ] [ ... ] ] ]
The reasons why Sources
takes a list of ArtifactGenerator
s is that
1. this makes the value easier to read/write for humans
2. the sources are static files used in all children (e.g. company logo image)
3. the sources are parameterized by variables that bound to different values
for each artifact, e.g. a template network config file which contains
the host IP address.
To bind such variables use Let
, Each
, LetX
or EachT
.
String subtitution of these variables is done by B9.Content.StringTemplate.
These variables can be used as value in nested Let
s, in most file names/paths
and in source files added with SourceFile
Sources [ArtifactSource] [ArtifactGenerator] | Add sources available to |
Let [(String, String)] [ArtifactGenerator] | Bind variables, variables are avaible in nested generators. |
LetX [(String, [String])] [ArtifactGenerator] | A LetX [("x", ["1","2","3"]), ("y", ["a","b"])] [..] Is equal to: Let [] [ Let [("x", "1"), ("y", "a")] [..] Let [("x", "1"), ("y", "b")] [..] Let [("x", "2"), ("y", "a")] [..] Let [("x", "2"), ("y", "b")] [..] Let [("x", "3"), ("y", "a")] [..] Let [("x", "3"), ("y", "b")] [..] ] |
Each [(String, [String])] [ArtifactGenerator] | Bind each variable to their first value, then each
variable to the second value, etc ... and execute the
nested generator in every step. |
EachT [String] [[String]] [ArtifactGenerator] | The transposed verison of |
Artifact InstanceId ArtifactAssembly | Generate an artifact defined by an
|
EmptyArtifact |
data ArtifactSource Source
Describe how input files for artifacts to build are obtained. The general structure of each constructor is FromXXX destination source
FromFile FilePath SourceFile | Copy a |
FromContent FilePath Content | Create a file from some |
SetPermissions Int Int Int [ArtifactSource] | Set the unix file permissions to all files generated
by the nested list of |
FromDirectory FilePath [ArtifactSource] | Assume a local directory as starting point for all
relative source files in the nested |
IntoDirectory FilePath [ArtifactSource] | Specify an output directory for all the files
generated by the nested |
Concatenation FilePath [ArtifactSource] | Deprecated Concatenate the files generated by the
nested |
newtype InstanceId Source
Identify an artifact. Deprecated TODO: B9 does not check if all instances IDs are unique.
data ArtifactTarget Source
data CloudInitType Source
data ArtifactAssembly Source
Define an output of a build. Assemblies are nested into
ArtifactGenerator
s. They contain all the files defined by the Sources
they are nested into.
CloudInit [CloudInitType] FilePath | Generate a cloud-init compatible directory, ISO-
or VFAT image, as specified by the list of
|
VmImages [ImageTarget] VmScript | a set of VM-images that were created by executing a build script on them. |
data AssembledArtifact Source
A type representing the targets assembled by
assemble
from an ArtifactAssembly
. There is a
list of ArtifactTarget
s because e.g. a single CloudInit
can produce upto
three output files, a directory, an ISO image and a VFAT image.
instanceIdKey :: String Source
The variable containing the instance id. Deprecated
The variable containing the buildId that identifies each execution of
B9. For more info about variable substitution in source files see
StringTemplate
The variable containing the date and time a build was started. For more
info about variable substitution in source files see
StringTemplate
getAssemblyOutputFiles :: ArtifactAssembly -> [FilePath] Source
Return the files that the artifact assembly consist of.