platform/packages/process/example/README.md

89 lines
2.5 KiB
Markdown
Raw Normal View History

# 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)