Skip to content

The Project Configuration File

Paul Mansour edited this page Feb 11, 2023 · 32 revisions
  1. URL: The URL of the project. For example "https://github.com/the-carlisle-group/Dado"

  2. Group: This defaults to the penultimate segment of the URL.

  3. Name: This defaults to the last segment of the URL.

  4. ProjectSpace: The namespace to instantiate the project.

  5. Dependencies: An array of objects defining dependent packages. URL and Version are required parameters, all others are optional:

    • URL: The URL of of the dependent project. For example: "https://github.com/the-carlisle-group/XL2APL"

    • Version: the version of the dependent project. For example: "1.2.3"

    • ProjectSpace: the fully qualified namespace path to instantiate the project. If omitted, this parameter defaults to the ProjectSpace parameter of the project configuration file. If in turn this parameter is not specified in the config file, it is constructed from the URL. For example, if the URL is "http://gitub.com/Dyalog/Dfns" the ProjectSpace will be #.Dyalog_Dfns for a project and #.Dyalog_Dfns_1.2.3 for a package.

    • Alias: The name by which the API is referenced in the parent project. This defaults to [name]

    • Inject: May be 0, 1, or 2 where 0 indicates that no reference to the API is provided, 1 "indicates that a reference should be provided in the project root only, and 2 indicates that a reference should be provided in the root space and every subspace of the parent project.

    • Development: Numeric 1 or 0. Specifies that the dependency is for development purposes only, and is not required to consume the parent package or be distributed with an application. Defaults to 0.

  6. API: The namespace or names-space returning function that defines the project's API. It is the entry point for any parent application. If it is a namespace, then this space is the API. If it is a function name, then it must return a namespace. If empty or undefined, then the project space is the API.

  7. DevelopmentSpaces A list of top level namespaces that are not needed for packages.

  8. DevelopmentFolders A list of folders that are not needed for packages.

  9. OnSave A callback function that is executed just before the application workspace is saved during the build process. This may be used to create OLE namespaces, set global variables, etc. This is specified relative to the project namespace.

  10. OnBuild: A callback function that is executed by the Build function, and thus the ReleaseNewVersion function which executes Build. This function usually builds additional release artifacts, and places them under /dist/ReleaseArtifacts. Note that there must be a callback assigned to on build, even if a trivial no-op, if you want to track and increment BuildIDs.

  11. OnRelease: A callback function that is executed by the ReleaseNewVersion function.

  12. OnApplicationStartup: A callback function assigned to ⎕LX in the application workspace.

  13. Version: The version number. This parameter is set automatically by the ReleaseNewVersion function. It should not be manually modified.

  14. MinimumDyalogVersion: The minimum Dyalog version required for the Project. Numeric (e.g. 18, 17.1, etc). If opening a project in an earlier interpreter than that specified by MinimumDyalogVersion, Dado will display a warning in the session.

  15. Dyalog: Folder containing the Dyalog system files necessary for distributing an application. If this string has no slashes it is assumed to be a folder name under a sibling remote repository named DyalogSystem. It defaults to the Dyalog system directory or the active interpreter. This is also the folder that contains the interpreter that is used to create the application workspace.

  16. Public: numeric 1 or 0. The default is 0. This should be set to 1 if the project is a public project. This flag is used to track and increment build ids. Public projects look for sibling repository named PublicBuildIDs, while private repositories look for PrivateBuildIDs.

  17. BuildNamespace: numeric 1 or 0. The default is 0. Set to 1 to include a single, standalone scripted namespace in the release artifacts. This is useful for distributing small utility projects that do not require additional assets or initialization.