76 lines
2.1 KiB
Markdown
76 lines
2.1 KiB
Markdown
# Process Module
|
|
====================
|
|
## Overview
|
|
The process module is responsible for managing and running system processes.
|
|
|
|
## Usage
|
|
To use the process module, import it in your Rust file and call the desired functions.
|
|
|
|
## Functions
|
|
### mgmt.rs
|
|
The mgmt.rs file contains functions for managing system processes.
|
|
|
|
### run.rs
|
|
The run.rs file contains functions for running system processes.
|
|
|
|
#### Input Flexibility
|
|
The `run` function in run.rs is designed to be flexible with its input:
|
|
|
|
1. **One-liner Commands**: If the input is a single line, it's treated as a command with arguments.
|
|
```rust
|
|
run("ls -la"); // Runs the 'ls -la' command
|
|
```
|
|
|
|
2. **Multi-line Scripts**: If the input contains newlines, it's treated as a script. The script is automatically dedented using the `dedent` function from `src/text/dedent.rs` before execution.
|
|
```rust
|
|
run(" echo 'Hello'\n ls -la"); // Common indentation is removed before execution
|
|
```
|
|
|
|
## Examples
|
|
### Example 1: Running a Process
|
|
To run a process, use the `run` function from the `run.rs` file:
|
|
```rust
|
|
use process::run;
|
|
|
|
fn main() {
|
|
run("ls -l");
|
|
}
|
|
```
|
|
|
|
### Example 2: Running a Multi-line Script
|
|
```rust
|
|
use process::run;
|
|
|
|
fn main() {
|
|
let result = run(r#"
|
|
echo "Hello, world!"
|
|
ls -la
|
|
echo "Script complete"
|
|
"#);
|
|
}
|
|
```
|
|
### Example 2: Managing a Process
|
|
To manage a process, use the `mgmt` function from the `mgmt.rs` file:
|
|
```rust
|
|
use process::mgmt;
|
|
|
|
fn main() {
|
|
mgmt("start");
|
|
}
|
|
```
|
|
|
|
## Automatic Dedentation
|
|
When a multi-line script is provided to the `run` function, it automatically uses the `dedent` function from `src/text/dedent.rs` to remove common leading whitespace from all lines. This allows you to write scripts with proper indentation in your code without affecting the execution.
|
|
|
|
For example, this indented script:
|
|
```rust
|
|
run(r#"
|
|
echo "This line has 4 spaces of indentation in the source"
|
|
echo "This line also has 4 spaces"
|
|
echo "This line has 8 spaces (4 more than the common indentation)"
|
|
"#);
|
|
```
|
|
Will be executed with the common indentation (4 spaces) removed, preserving only the relative indentation between lines.
|
|
|
|
|