| # Fuchsia Recipes |
| |
| This repository contains recipes for Fuchsia. |
| |
| A recipe is a Python script that runs a series of commands, using the |
| [recipe engine](https://chromium.googlesource.com/infra/luci/recipes-py/) |
| framework from the LUCI project. We use recipes to automatically check out, |
| build, and test Fuchsia in continuous integration jobs. The commands the recipes |
| use are very similar to the ones you would use as a developer to check out, |
| build, and test Fuchsia in your local environment. |
| |
| See [go/fuchsia-recipe-docs](http://go/fuchsia-recipe-docs) for complete |
| documentation and a guide for getting started with writing recipes. |
| |
| ## Getting the code and setting up your environment |
| |
| ### For everyday development |
| |
| The recommended way to get the source code is with jiri. A recipe will not run |
| without `vpython` and `cipd`, and using these recommended jiri manifests will |
| ensure that you have these tools. |
| |
| You can use the |
| [fuchsia infra Jiri manifest](https://fuchsia.googlesource.com/manifest/+/main/infra) |
| or the |
| [internal version (Googlers-only)](http://go/fxi-cookbook#infra-checkout). |
| Once that manifest is imported in your local jiri manifest, `jiri update` should |
| download `vpython` and `cipd` into `<JIRI ROOT>/fuchsia-infra/prebuilt/tools/`. |
| If you add that directory to your PATH, you should be good to go. |
| |
| ### Quick changes |
| |
| If you're just trying to make a single small change to in this repository and |
| already have your local environment set up for recipe development (e.g. |
| because you work with another recipes repository) you can simply clone this |
| repository with git: |
| |
| ```sh |
| git clone https://fuchsia.googlesource.com/infra/recipes |
| ``` |
| |
| Then it will be up to you to ensure that `vpython` and `cipd` are available |
| in your PATH. |
| |
| ## Code formatting |
| |
| We format python code using [Black](https://github.com/psf/black), an |
| open-source Python autoformatter. It should be in your PATH if you followed the |
| instructions for |
| [setting up your environment](#getting-the-code-and-setting-up-your-environment). |
| |
| After committing recipe changes, you can format the files in your commit by |
| running `black .` in your project root. |
| |
| Many editors also have a setting to run Black automatically whenever you save a |
| Python file (or on a keyboard shortcut). For VS Code, add the following to your |
| workspace `settings.json` to make your editor compatible with Black and turn on |
| auto-formatting on save: |
| |
| ```js |
| { |
| "python.formatting.provider": "black", |
| "python.formatting.blackPath": "<absolute path to the black executable>", |
| "[python]": { |
| "editor.formatOnSave": true, |
| "editor.rulers": [88], // Black enforces a line length of 88 characters. |
| }, |
| ... |
| } |
| ``` |