Every time you clone the Plywood repository, you effectively create a new workspace. The workspace has the following directory structure:
Files in the Workspace Root
This is the first script to run immediately after cloning Plywood, as explained in Quick Start. It's responsible for building
(Not stored in Git) This file contains settings associated with the workspace, such as the current build folder and the default CMake generator for new build folders. It gets modified by certain PlyTool commands.
(Not stored in Git) This is a command-line application to perform various operations on the workspace, such as creating new build folders, installing externs and generating build systems. See PlyTool Reference for more info.
data directory, located immediately below the workspace root, can be seen as a local cache of transient data. It contains build folders, file downloads, and any other kind of data that is generated or required by Plywood apps. The
data folder is excluded from Plywood's main Git repository.
In theory, you could delete the entire
data directory at any time and get it back by running PlyTool commands and/or other applications.
data/builddirectory is reserved for Plywood build folders. Each build folder contains a special file,
info.pylon, that contains information about the build folder. Each time you create a build folder, add a root target or select an extern provider using PlyTool, it modifies one of these
data/externdirectory is reserved for temporary storage by extern providers. Each extern folder contains a special file,
info.pylon, that contains information about that extern folder. This is where certain extern providers download and extract pre-built libraries.
Some examples of extern providers that create extern folders are
cairo.prebuilt, all of which download pre-built libraries for Windows.
Not every extern provider needs to create an extern folder. For example, on Debian and Ubuntu,
libsass.aptuses the system package manager instead.
Other applications are free to create their own subdirectories in
data. For example, the WebCooker writes a bunch of data files to
repos directory, located immediately below the workspace root, is where Plywood modules are stored. Plywood modules are organized into repos, where each sudirectory immediately below the
repos directory is considered a Plywood repo.
repos/plywooddirectory is special; it's where all of Plywood's built-in modules are stored.
Every other subdirectory of
repos is excluded from Plywood's main Git repository. It's possible to define new repos by creating or cloning other Git repos here. Additional repos must include an
info.pylon file to declare their dependencies on other repos. For now, this must all be done manually. The plan is extend Plywood to make it easier to work with multiple repos.