gw-bin 0.4.2

Watch git repositories, pull changes and run commands on the new files
Documentation
+++
title = "Compiled languages"
weight = 3
+++

# Compiled languages

For compiled (Go, Rust) or transpiled (TypeScript) you can use `gw` to build new assets then restart the running binary to restart the server.

## Configuration

Simply add the scripts to build the binary then another one to restart it and watch the repository.

### TypeScript

For example for TypeScript, transpile to JS and run with Node.js:

```sh
gw /path/to/repo -s 'npx tsc -p tsconfig.json' -p 'node dist/index.js'
```

If you want to ensure that your code is correct, you can run the unit tests first:

```sh
gw /path/to/repo  -s 'npm run test' -s 'npx tsc -p tsconfig.json' -p 'node dist/index.js'
```

For Next.js and other frameworks that require a build step before starting, you can use:

```sh
gw /path/to/repo -s 'npm run build' -p 'npm run start'
```

### Go

For Go, you can either run it directly or build it first and run it as a subprocess:

```sh
gw /path/to/repo -p 'go run main.go'
# or
gw /path/to/repo -s 'go build main.go' -p './main'
```

You can add testing as a script, if you want to run the unit tests before the code is deployed:

```sh
gw /path/to/repo -s 'go test' -s 'go build main.go' -p './main'
```

### Rust

For Rust, you can either run it directly or build it first and run it as a subprocess:

```sh
gw /path/to/repo -p 'cargo run --release'
# or
gw /path/to/repo -s 'cargo build --release' -p './target/release/repo'
```

Add the tests here as well to make sure that the code is correct:

```sh
gw /path/to/repo -s 'cargo test' -s 'cargo build --release' -p './target/release/repo'
```

Also checkout [Docker configuration](/guides/docker-compose).