.. _docs-root:

======================
Pigweed Sample Project
======================

.. toctree::
   :maxdepth: 1
   :hidden:

   Home <self>
   Examples <examples/docs>
   Customization <customization>
   Pigweed Docs <https://pigweed.dev>
   Mailing List <https://groups.google.com/forum/#!forum/pigweed>
   Chat Room <https://discord.gg/M9NSeTA>
   Source Code <https://cs.pigweed.dev/pigweed>
   Code Reviews <https://pigweed-review.googlesource.com>
   Issue Tracker <https://issues.pigweed.dev/issues?q=status:open>

This repository outlines the recommended way of using Pigweed in a new or
existing project. Feel free to fork this repository, or read it as a reference.

For more information see the `Pigweed Getting started
guide <https://pigweed.dev/docs/getting_started.html>`__.

Check back for more complex examples and features coming soon!

---------------
Getting started
---------------
Make sure you've set up `Pigweed's
prerequisites <https://pigweed.dev/docs/getting_started.html#prerequisites>`__.

**If you're on Windows**, you can automate the initial setup by downloading the
first-time setup script **from cmd.exe**:

.. code-block:: batch

   curl https://pigweed.googlesource.com/pigweed/sample_project/+/main/tools/setup_windows_prerequisites.bat?format=TEXT > setup_pigweed_prerequisites.b64 && certutil -decode -f setup_pigweed_prerequisites.b64 setup_pigweed_prerequisites.bat && del setup_pigweed_prerequisites.b64

Then you can run the script with the following command **in cmd.exe**:

.. code-block:: batch

   setup_pigweed_prerequisites.bat

.. note::

   You may see a few UAC prompts as the script installs Git, Python, and
   enables developer mode.

Once that is done, you can clone this project with the following command:

.. code-block:: bash

   git clone https://pigweed.googlesource.com/pigweed/sample_project

Environment setup
=================
Pigweed uses a local development environment for most of its tools. This
means tools are not installed to your machine, and are instead stored in a
directory inside your project (Note: git ignores this directory). The tools
are temporarily added to the PATH of the current shell session.

To make sure the latest tooling has been fetched and set up, run the bootstrap
command for your operating system:

.. tab-set::

   .. tab-item:: Linux
      :sync: linux

      .. code-block:: bash

         source ./bootstrap.sh

   .. tab-item:: macOS
      :sync: macos

      .. code-block:: bash

         source ./bootstrap.sh

   .. tab-item:: Windows
      :sync: windows

      .. code-block:: batch

         bootstrap.bat

After tooling updates, you might need to run bootstrap again to ensure the
latest tools.

After the initial bootstrap, you can use use the ``activate`` scripts to
configure the current shell for development without doing a full update.

.. tab-set::

   .. tab-item:: Linux
      :sync: linux

      .. code-block:: bash

         source ./activate.sh

   .. tab-item:: macOS
      :sync: macos

      .. code-block:: bash

         source ./activate.sh

   .. tab-item:: Windows
      :sync: windows

      .. code-block:: batch

         activate.bat

.. _docs-building:

Building
========
All of these commands must be run from inside an activated developer
environment. See `Environment setup <#environment-setup>`__

One-shot build
--------------
To build the project, documentation, and tests, run the following command in
an activated environment:

.. code-block:: bash

   pw build

Automatically build on file save
--------------------------------
Alternatively, if you'd like an automatic rebuild to trigger whenever you save
changes to files, use ``pw watch``:

.. code-block:: bash

   pw watch

----------------
Typical workflow
----------------
When you pull latest repository changes, run bootstrap:

.. tab-set::

   .. tab-item:: Linux
      :sync: linux

      .. code-block:: bash

         source ./bootstrap.sh

   .. tab-item:: macOS
      :sync: macos

      .. code-block:: bash

         source ./bootstrap.sh

   .. tab-item:: Windows
      :sync: windows

      .. code-block:: batch

         bootstrap.bat

If you're just launching a new shell session, you can activate instead:

.. tab-set::

   .. tab-item:: Linux
      :sync: linux

      .. code-block:: bash

         source ./activate.sh

   .. tab-item:: macOS
      :sync: macos

      .. code-block:: bash

         source ./activate.sh

   .. tab-item:: Windows
      :sync: windows

      .. code-block:: batch

         activate.bat

and rebuild with:

.. code-block:: bash

   pw build

----------------------
More info and Examples
----------------------
Check out some introductory examples :ref:`here <examples-root>`!
