How It Works

Run Flow

Each repo has repo.bat and repo.sh in the root. When user runs one of these (based on their platform), the following happens:

  1. repo.bat (Windows) or repo.sh (Linux) uses packman as bootstrapper to get python and download other tools. It invokes Python to run the bootstrap script. Typically from tools/repoman/repoman.py.

  2. The bootstrap script uses packman API to download project dependencies (usually defined in deps/repo-deps.packman.xml). These dependencies are added to Python’s sys.path.

  3. omni.repo.man.main(path_to_root) is called. repo_man automatically looks for tools in python sys.path. Each path in sys.path is checked for repo_tools.toml file. Each top level entry in that config can declare a tool, if it contains both command and entry_point field.

  4. repo_man loads repo.toml in the root of the repo to determine which settings to override for each tool.

  5. If user passed a tool to run repo [tool_name] repo_man calls in the tool (using function returned by entry_point) providing resolved configuration and command line options.