88 lines
2.5 KiB
Markdown
88 lines
2.5 KiB
Markdown
# Process Package Examples
|
|
|
|
This directory contains examples demonstrating the usage of the Process package.
|
|
|
|
## Running the Examples
|
|
|
|
```bash
|
|
# Get dependencies
|
|
dart pub get
|
|
|
|
# Run the example
|
|
dart run example.dart
|
|
```
|
|
|
|
## Examples Included
|
|
|
|
1. **Basic Process Execution**
|
|
- Simple command execution with `echo`
|
|
- Output capturing and handling
|
|
- Basic process configuration
|
|
|
|
2. **Process Configuration**
|
|
- Working directory configuration with `path()`
|
|
- Environment variables with `env()`
|
|
- Output suppression with `quietly()`
|
|
- Process timeouts and idle timeouts
|
|
|
|
3. **Process Pool**
|
|
- Concurrent process execution
|
|
- Pool result handling
|
|
- Real-time output capturing
|
|
- Process coordination
|
|
|
|
4. **Process Pipe**
|
|
- Sequential process execution
|
|
- Output piping between processes
|
|
- Command chaining
|
|
- Error handling in pipelines
|
|
|
|
5. **Error Handling**
|
|
- Process failure handling
|
|
- Exception catching and handling
|
|
- Error output capturing
|
|
- Custom error callbacks
|
|
|
|
6. **Testing**
|
|
- Process faking with `fake()`
|
|
- Output sequence simulation
|
|
- Timing simulation
|
|
- Process behavior mocking
|
|
|
|
## Additional Examples
|
|
|
|
For more specific examples, see:
|
|
|
|
- [Process Execution](../doc/execution.md) - Detailed process execution examples
|
|
- [Process Coordination](../doc/coordination.md) - Advanced pool and pipe examples
|
|
- [Testing Utilities](../doc/testing.md) - Comprehensive testing examples
|
|
|
|
## Notes
|
|
|
|
- Some examples require specific system commands (`ls`, `sort`, `uniq`). These commands are commonly available on Unix-like systems.
|
|
- Error handling examples intentionally demonstrate failure cases.
|
|
- The testing examples show how to use the package's testing utilities in your own tests.
|
|
- Process pools demonstrate concurrent execution - actual execution order may vary.
|
|
- Process pipes demonstrate sequential execution - output flows from one process to the next.
|
|
|
|
## System Requirements
|
|
|
|
- Dart SDK >= 3.0.0
|
|
- Unix-like system for some examples (Linux, macOS)
|
|
- Basic system commands (`echo`, `ls`, etc.)
|
|
|
|
## Best Practices Demonstrated
|
|
|
|
1. Always handle process errors appropriately
|
|
2. Use timeouts for long-running processes
|
|
3. Configure working directories explicitly
|
|
4. Set environment variables when needed
|
|
5. Use `quietly()` for noisy processes
|
|
6. Clean up resources properly
|
|
7. Test process-dependent code thoroughly
|
|
|
|
## Further Reading
|
|
|
|
- [Package Documentation](../README.md)
|
|
- [API Reference](https://pub.dev/documentation/platform_process)
|
|
- [Contributing Guide](../CONTRIBUTING.md)
|