Building with make.sh

make.sh in the repository root runs all build tasks:

make.sh [-d] <command> [--manifest <path>] <command options>

make.sh <command> -h shows the options of a command.

Commands

CommandTask
specgenerate the specs, see Specs
clientbuild the production client
client-devbuild the development client
client-dev-serverstart the client development server on port 8080
testrun the tests, see Testing
docbuild the documentation
doc-apibuild the API documentation
doc-markdownbuild the documentation as Markdown
doc-dev-serverstart the documentation development server on port 5500
demo-configcompile the configuration for the demo projects
imagebuild a docker image
packagecopy the application, without build artifacts, to a directory
cleanremove all build artifacts

Code generation

Every command except clean and demo-config first runs code generation:

  1. app/_make_init.py generates app/gws/ext/__init__.py from app/gws/ext/types.txt and app/gws/__init__.py from app/gws/__init__.pyinc.
  2. app/gws/spec/spec.py generates the specs into app/__build.

make.sh spec runs only this step.

Options

--manifest <path> passes a manifest to the code generation step, so that the specs and the client build include its plugins. Without it, the GWS_MANIFEST environment variable is used. The option must follow the command name immediately.

-d (--docker) runs the command in the GWS docker image instead of the host, with the working copy mounted at the same path. This avoids installing Python libraries on the host. It works for spec, doc, doc-api, doc-markdown, doc-dev-server, demo-config and package.

The interpreters can be set with the GWS_PYTHON and GWS_NODE environment variables.

Build artifacts

PathContents
app/__build/specs.jsonspecs
app/__build/gws.generated.tsTypeScript types for the client
app/__build/configref.*.mdconfiguration reference
app/__build/doc/<version>documentation
app/__build/apidoc/<version>API documentation
app/__build/doc_markdown/<version>documentation as Markdown
app/*.bundle.*, <plugin>/app.bundle.jsonclient bundles