Directory Structure
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
Setup.cmake
-
This is the first script to run immediately after cloning Plywood, as explained in Quick Start. It's responsible for building
plytool
. workspace-settings.pylon
-
(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.
plytool
-
(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.
The data
Directory
The 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.
build
-
The
data/build
directory 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 theseinfo.pylon
files. extern
-
The
data/extern
directory 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
libsass.prebuilt
,libavcodec.prebuilt
andcairo.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.apt
uses 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 data/docsite
.
The repos
Directory
The 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.
plywood
-
The
repos/plywood
directory 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.