# Usage

## Project Configuration

#### Create `1build.yaml` configuration file by

```bash
1build init --name <your_project_name>
```

{% hint style="info" %}
&#x20;This will create default `1build.yaml` file in current directory with project name provided.

default contents will be&#x20;

{% code title="1build.yaml" %}

```yaml
project: <your_project_name>
commands:
  - build: echo 'Running build'
```

{% endcode %}
{% endhint %}

#### Edit file according to project command list, Example of `1build.yaml` for node project:

{% code title="1build.yaml" %}

```yaml
project: Sample JVM Project Name
commands:
  - build: npm run build
  - test: npm run test
```

{% endcode %}

## Running 1build for the above sample project

#### building the project

```bash
1build build
```

#### fix the coding guidelines lint and run tests (executing more than one commands at once)

```bash
1build lint test
```

## Set new or update existing configuration

#### Set new command configuration for `lint` to `eslint server.js`

```bash
1build set lint "eslint server.js"
```

## Unset/Remove existing configuration

#### Unset command configuration for  `lint`&#x20;

```bash
1build unset lint
```

#### Unset multiple commands at once for  `lint, test, build`

```bash
1build unset lint test build
```

> &#x20;Unset will log missing commands

## Running command before and after execution of 1build command

Consider that your project requires some environment variables to set before running any commands and you want to clean up those after running commands. It is a headache to always remember to set those environment variables. What you want is to set env variables automatically when you run the command in the project and remove those when the command is complete. Another example – a project requires `Docker` to be up and running or you need to clean up the database after running a test harness.

This is where `before` & `after` commands are useful. These commands are both optional –  you can use one of them, both or neither.

**Examples:**

1. Setting env variables and cleaning those up

   <pre class="language-yaml" data-title="1build.yaml"><code class="lang-yaml">project: Sample JVM Project Name
   before: export VARNAME="my value"
   after: unset VARNAME
   commands:
     - build: npm run build
   </code></pre>
2. Ensure that `Docker` is up and running

   <pre class="language-yaml" data-title="1build.yaml"><code class="lang-yaml">project: Containerized Project
   before: ./docker_run.sh
   commands:
     - build: npm run build
   </code></pre>
3. Clean up database after some commands

   <pre class="language-yaml" data-title="1build.yaml"><code class="lang-yaml">project: Containerized Project
   after: ./clean_database.sh
   commands:
    - build: npm run build
   </code></pre>

## See `1build --help` for command usages.

�
