|
| 1 | +# Contributing to Server Scripts CLI |
| 2 | + |
| 3 | +Thank you for considering contributing to `server-scripts-cli`! This document outlines the process for contributing to this project. |
| 4 | + |
| 5 | +## 🚀 Quick Start |
| 6 | + |
| 7 | +```bash |
| 8 | +# 1. Fork the repository on GitHub |
| 9 | +# 2. Clone your fork |
| 10 | +git clone https://github.com/YOUR_USERNAME/server-scripts-cli |
| 11 | +cd server-scripts-cli |
| 12 | + |
| 13 | +# 3. Create a feature branch |
| 14 | +git checkout -b feature/your-feature-name |
| 15 | + |
| 16 | +# 4. Make your changes |
| 17 | +# 5. Test your changes |
| 18 | +./ssc.sh list |
| 19 | +./ssc.sh validate |
| 20 | + |
| 21 | +# 6. Commit with semantic versioning in mind |
| 22 | +git add . |
| 23 | +git commit -m "Add: Feature description" |
| 24 | + |
| 25 | +# 7. Push to your fork |
| 26 | +git push origin feature/your-feature-name |
| 27 | + |
| 28 | +# 8. Open a Pull Request on GitHub |
| 29 | +``` |
| 30 | + |
| 31 | +## 📋 Contribution Guidelines |
| 32 | + |
| 33 | +### Code Style |
| 34 | + |
| 35 | +- **Bash Scripts**: Follow existing patterns (`set -uo pipefail`, error handling, readonly variables) |
| 36 | +- **Indentation**: 4 spaces (no tabs) |
| 37 | +- **Functions**: Use `snake_case` naming |
| 38 | +- **Variables**: Use `SCREAMING_SNAKE_CASE` for constants, `snake_case` for locals |
| 39 | +- **Comments**: Document complex logic, use `# =====` section separators |
| 40 | + |
| 41 | +### Testing |
| 42 | + |
| 43 | +Before submitting a PR, ensure: |
| 44 | +- [ ] `./ssc.sh list` works correctly |
| 45 | +- [ ] `./ssc.sh validate` passes |
| 46 | +- [ ] Script follows shellcheck recommendations |
| 47 | +- [ ] Documentation is updated (if adding features) |
| 48 | + |
| 49 | +### Documentation |
| 50 | + |
| 51 | +- Update `README.md` if adding user-facing features |
| 52 | +- Update `docs/MANIFEST_SCHEMA.md` if changing YAML schema |
| 53 | +- Add entries to `CHANGELOG.md` (Keep a Changelog format) |
| 54 | + |
| 55 | +### Commit Messages |
| 56 | + |
| 57 | +Use clear, descriptive commit messages: |
| 58 | + |
| 59 | +``` |
| 60 | +Add: New feature description |
| 61 | +Fix: Bug fix description |
| 62 | +Docs: Documentation update |
| 63 | +Refactor: Code improvement without behavior change |
| 64 | +Test: Add or update tests |
| 65 | +``` |
| 66 | + |
| 67 | +## 🐛 Reporting Bugs |
| 68 | + |
| 69 | +Use the [Bug Report template](.github/ISSUE_TEMPLATE/bug_report.md) and include: |
| 70 | +- Steps to reproduce |
| 71 | +- Expected vs. actual behavior |
| 72 | +- Environment (Bash version, OS, yq version) |
| 73 | +- Relevant logs or error messages |
| 74 | + |
| 75 | +## 💡 Feature Requests |
| 76 | + |
| 77 | +Use the [Feature Request template](.github/ISSUE_TEMPLATE/feature_request.md) and describe: |
| 78 | +- Use case and motivation |
| 79 | +- Proposed solution |
| 80 | +- Alternative solutions considered |
| 81 | + |
| 82 | +## 📜 Code of Conduct |
| 83 | + |
| 84 | +This project adheres to the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. |
| 85 | + |
| 86 | +## 🔄 Pull Request Process |
| 87 | + |
| 88 | +1. **Fork & Branch**: Create a feature branch from `main` |
| 89 | +2. **Develop**: Make your changes with clear commits |
| 90 | +3. **Test**: Ensure all tests pass and functionality works |
| 91 | +4. **Document**: Update relevant documentation |
| 92 | +5. **Submit**: Open a PR with a clear description |
| 93 | +6. **Review**: Address feedback from maintainers |
| 94 | +7. **Merge**: Once approved, your PR will be merged |
| 95 | + |
| 96 | +## 📝 License |
| 97 | + |
| 98 | +By contributing, you agree that your contributions will be licensed under the MIT License. |
| 99 | + |
| 100 | +## 🙏 Thank You! |
| 101 | + |
| 102 | +Your contributions help make `server-scripts-cli` better for everyone. We appreciate your time and effort! |
| 103 | + |
| 104 | +--- |
| 105 | + |
| 106 | +**Questions?** Open an issue or reach out to [@fidpa](https://github.com/fidpa). |
0 commit comments