Pods
Overview
Pods are the top of Fantom's namespace as well as the unit of deployment. A pod's name is globally unique and is used to organize the top level of Fantom's namespace. In this respect pods serve the purpose of both a Java package and a JAR file (or .NET namespace and DLL).
Pod Meta
Pods do not use Facets for metadata like types and slots. Rather pod metadata is managed as name/value pairs. Key metadata about your pod is defined in the build script:
class Build : build::BuildPod
{
new make()
{
podName = "myPod"
summary = "Summary description of my pod"
depends = ["sys 1.0", "web 1.0"]
meta = ["acme.sku": "0xdeadbeef"]
srcDirs = [`fan/`]
resDirs = [`locale/`]
}
}
During the build process fields like depends and summary are used by the compiler and used to generate the pod's metadata. You can define your own additional name/value pairs with BuildPod.meta. Plus the compiler will add its own metadata regarding when and where the pod was built.
Metadata is stored "/meta.props" in the pod zip file. The Pod.meta method is used to access a pod's metadata at runtime. The following are the standardized keys:
pod.name: name of the podpod.version:Versionof the podpod.depends: list of semicolon separatedDependstringspod.summary: overview decription for podpod.isScript: was the pod compiled in script modepod.docSrc: should documentation include source code, seeBuildPodpod.docApi: should pod be included in documentation, seeBuildPodfcode.version: binary format version of the fcodebuild.time: compile time formatted asDateTimebuild.platform: compile env platform formatted asEnv.platformbuild.host: compile env host name, seeEnv.hostbuild.user: compile env user name, seeEnv.hostbuild.compiler: compiler pod version

