Subcomponent is a components orchestrator. You define components as being opaque projects that can be retrieved using various methods (git, svn, download, ...). Components can express dependencies between each other. This allows to run user-defined commands in a specific order.
This is expressed in the subcomponent description language:
```subcomponent subcomponents { my-lib-component { path: "where/the/lib/will/be/downloaded"; name: "My Lib";
fetch {
git {
url: "git://example.com/repo.git",
"https://example.com/repo.git",
"https://example-backup.com/repo.git";
branch: "dev";
shallow: true;
}
}
}
xen {
name: "Xen";
path: "xen-4.8.0";
fetch {
artifact {
url: "https://downloads.xenproject.org/release/xen/4.8.0/xen-4.8.0.tar.gz";
compression: "tar", "gz";
pgp-signature: "https://downloads.xenproject.org/release/xen/4.8.0/xen-4.8.0.tar.gz.sig";
pgp-pubkey: "83FE14C957E82BD9";
}
}
}
} ```
Sphinx is used to generate the documentation, so you first need to have it installed:
bash
pip install sphinx
Then, to generate the HTML documentation, you can just run the following:
bash
make -C doc html man
The HTML documentation will be available in docs/_build/html/
.
The manual page of subcomponent will be in docs/_build/man
.
Subcomponent prefers to develop system tests instead of unit tests. You can run
unit tests via cargo
:
bash
cargo test
System tests rely on robotframework, so you first need to make sure that this python module is installed:
bash
pip install robotframework
The following commands are available
bash
make -C tests unit-tests # Run unit tests in release
make -C tests system-tests # Run system tests in release
make -C tests # Run all the tests in release
Please report failing tests!
We use travis to check that upstream code pass the implemented tests.
Subcomponent is MIT-licensed. See the LICENSE
file for more details.