moto 0.2.26

moto - motivated automation
Documentation
# 🌈 MOTO: A Versatile Automation & Scripting System


## Overview


:moto is a versatile scripting language and automation tool designed to simplify task automation across various environments and languages. It provides a unified and intuitive syntax for defining tasks, leveraging multiple runtimes, and orchestrating complex workflows.

## Key Features


- **Multi-language Support**: :moto seamlessly integrates with multiple programming languages, including Dart, Rust, Python, JavaScript, and more. You can write code in your preferred language within a single :moto script.
- **Custom Runtimes**: Extend :moto's capabilities by defining custom runtimes for additional languages or execution environments. Specify the necessary setup and execution steps for each language.
- **Task Definition and Execution**: Define reusable tasks that encapsulate specific actions or operations. Tasks can be associated with different runtimes and executed seamlessly within the :moto script.
- **Shell Execution**: Execute shell commands and scripts using the built-in `:shell` runtime. Integrate with the underlying operating system for file manipulation, process management, and system operations.
- **Code Generation**: Generate code files dynamically using string interpolation and file output redirection. Create source files in different languages based on the script's logic.
- **Text Blocks**: Define reusable text blocks that can be referenced and interpolated within tasks or other blocks. Store common code snippets, templates, or static content for easy reuse.

## Installation


To install :moto, use the following command:

```shell
cargo install moto
```

## Usage


Here's a brief overview of the :moto language syntax:

### Variables


```moto
let name = "John"
let age = 30
let isMarried = false
let hobbies = ["reading", "coding", "gaming"]
```

### Tasks


```moto
task hello {
    echo "Hello, $ENV{USER}!"
}:ps
```

### Runtimes


```moto
task greetings_from_dart {
    void main() {
        print("Hello from Dart");
    }
}:dart

task greet_from_rust {
    fn main() {
        println!("Hello from Rust");
    }
}:rust
```

### Custom Runtimes


```moto
runtime csharp {
    let x = 5;
    task run {
        $something = @'[:block]'@
        $something | Out-File -FilePath "./_.cs" -Encoding UTF8
        csc "./_.cs" 
        ./_.exe
    }:shell
}:moto
```

### Blocks


```moto
block story {
    Once upon a time, there was a small village.
}:text

task read_story {
    echo [:story]
}:ps
```


## Contributing


Contributions to :moto are welcome! If you encounter any issues, have suggestions for improvements, or would like to contribute new features, please open an issue or submit a pull request on the [GitHub repository](https://github.com/moniverse/moto).

---

Feel free to explore the power and versatility of :moto in your automation and scripting tasks. Happy automating! 🚀