# eto-dev-cli

A command-line tool for local Eto development. When doing development work on
Eto core, this tool allows you to copy the changes to the various
Eto packages to Eto projects.

## Install

`npm install -g eto-dev-cli`

## Configuration / First time setup

The eto-dev-cli tool needs to know where your cloned Eto repository is
located. You typically only need to configure this once.

`eto-dev --set-path-to-repo /path/to/my/cloned/version/eto`

## How to use

Navigate to the project you want to link to your forked Eto repository and
run:

`eto-dev`

The tool will then scan your project's package.json to find its Eto
dependencies and copy the latest source from your cloned version of Eto into
your project's node_modules folder. A watch task is then created to re-copy any
modules that might change while you're working on the code, so you can leave
this program running.

Typically you'll also want to run `npm run watch` in the Eto repo to set up
watchers to build Eto source code.

## Revert to current packages

If you've recently run `eto-dev` your `node_modules` will be out of sync with current published packages. In order to undo this, you can remove the `node_modules` directory or run:

```shell
git checkout package.json; yarn --force
```

or

```shell
git checkout package.json; npm install --force
```

### Other commands

#### `--packages`

You can prevent the automatic dependencies scan and instead specify a list of
packages you want to link by using the `--packages` option:

`eto-dev --packages @etohq/eto`

#### `--scan-once`

With this flag, the tool will do an initial scan and copy and then quit. This is
useful for setting up automated testing/builds of Eto projects from the latest
code.

#### `--quiet`

Don't output anything except for a success message when used together with
`--scan-once`.

#### `--copy-all`

Copy all modules/files in the eto source repo in packages/

#### `--force-install`

Disables copying files into node_modules and forces usage of local npm repository.
