Projects

Projects in Fury correspond, as closely as possible, to the common understanding of a project. This typically has a clear name, probably correposnds to a single Git repository and is published under a single license, may possibly relate to one published artifact (with multiple versions), and may have one official website.

For Fury, the most important aspect of a project is its name, which must be unique within a hierarchy of layers: any two project definitions with the same name which co-exist within a hierarchy of layers, but which have different definitions, must be resolved. Multiple identical definitions do not.

A project is a grouping of modules, with a name, license, description and website.

Displaying project details

The projects in the current schema of the current layer may be displayed by running, fury project list or, for short, fury project.

ParameterDescription
—schema or -sthe schema containing the projects to list (default: current schema)
—raw or -Routput the list of projects in “raw” (non-tabular) format, suitable for bash scripting

Creating projects

A project may be added to the current schema of the current layer with,

fury project add -n myproject

specifying just the project name with the required —name (or -n) parameter. Additional optional parameters include,

ParameterDescription
—license or -Lthe license under which the project may be used
—url or -ua URL to the project’s official website
—description or -Da description of the project
—schema or -sthe schema to which the should be project should be added (default: all schemas)
—compiler or -cthe default compiler to use for new modules created within this project
—name or -nthe name of the project

Modifying projects

Changes may be made to a project using the fury project update command. This allows any of the properties of the project to be set after its creation.

These will be applied to the current project, unless the —project (or -p) parameter is specified.

ParameterDescription
—project or -pthe project to apply the changes to (default: current project)
—license or -Lthe license under which the project may be used
—url or -ua URL to the project’s official website
—description or -Da description of the project
—schema or -sthe schema to which the changes should be made (default: all schemas)
—force or -Fflag to force the change to be applied to every schema, even if this will override existing differences between schemas
—compiler or -cthe default compiler to use for new modules created within this project
—name or -nthe name of the project

Removing projects

A project may be removed with the command,

fury project remove -p myproject

The —schema (or -s) and —force (or -F) parameters can be used to specify which schemas the removal should be applied to.

ParameterDescription
—project or -pthe project to apply the changes to (default: current project)
—schema or -sthe schema from which the should be project should be removed (default: all schemas)
—force or -Fflag to force the change to be applied to every schema, even if this will override existing differences between schemas

Data model

Project {
  id: String
  modules: Module*
  license: String
  description: String
  website: String
  compiler: ModuleRef?
}