Skip to content

Latest commit

 

History

History
129 lines (83 loc) · 3.61 KB

File metadata and controls

129 lines (83 loc) · 3.61 KB

Contributing to Linux System Update Script 🚀

Thanks for your interest in contributing! 🎉
This project is open source and grows stronger with community collaboration.
Whether it’s fixing bugs, improving documentation, or adding new features — your help is welcome.


🛠 How You Can Contribute

  • 🐛 Report Bugs → Found something not working? Open an issue.
  • 💡 Suggest Features → Got an idea to improve the script? Share it!
  • 📖 Improve Documentation → Help make the README, guides, or examples clearer.
  • 👨‍💻 Submit Code → Add features, fix bugs, or optimize performance.

📋 Getting Started

  1. Fork this repo
    Click the "Fork" button at the top right of this repository.

  2. Clone your fork

    git clone https://github.com/<your-username>/linux-system-update-script.git
    cd linux-system-update-script

3. **Create a branch**

   ```bash
   git checkout -b feature-new-idea
   ```

4. **Make your changes**

   * Keep the code **clean, modular, and well-commented**.
   * Follow existing patterns (functions, logging, colors).
   * Use the `log` function for consistent output.

5. **Commit your changes**

   ```bash
   git commit -m "Add: short description of feature or fix"
   ```

6. **Push your branch**

   ```bash
   git push origin feature-new-idea
   ```

7. **Open a Pull Request (PR)**
   Go to the original repo and click **“New Pull Request.”**

---

## 🧑‍💻 Code Style Guidelines

* Use **Bash best practices** (`set -euo pipefail` is already included).
* Write new logic as **functions** to keep the script modular.
* Always use the `log` function for output (ensures color + logging).
* Avoid hardcoding — use variables and configs.
* Test in both `--verbose` and `--quiet` modes.

---

## 📝 Release & Changelog Process

We use a **scalable release notes structure**:

* **`releases/` folder** → human-friendly release notes (for users).

  * Example: `releases/1.0.0.md`
  * Focus on highlights: new features, improvements, roadmap.

* **`changelog/` folder** → technical changelogs (for developers).

  * Example: `changelog/1.0.0.md`
  * Focus on technical details: Added / Changed / Fixed / Security.

* **`RELEASES.md`** → index linking to all release notes.

* **`CHANGELOG.md`** → index linking to all changelog files.

### 🔹 When contributing:

1. If your change is **user-facing** → update the next release file in `releases/`.
2. If your change is **developer-facing** → update the next changelog file in `changelog/`.
3. If starting a new version → create new files in both folders, and update the indexes.

Maintainers will sync these with GitHub Releases when tagging a new version.

---

## 🧪 Testing Checklist

Before submitting a PR, please test:

* ✅ Script runs without errors on Ubuntu/Debian.
* ✅ Logs are created in `/var/log/update-system/`.
* ✅ Log rotation works (only last 10 logs kept).
* ✅ Summary report (packages upgraded, warnings, errors) is correct.
* ✅ Works with both `--full` and individual flags.

---

## ✅ Commit Message Guidelines

* Use **clear, concise messages**.
* Start with a verb (Add, Fix, Update, Remove).
* Examples:

  * `Fix: handle log rotation correctly when logs missing`
  * `Add: --reboot-if-needed flag`
  * `Update: improved system info summary output`

---

## 📜 License Agreement

By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE) of this project.

---

## 🙌 Need Help?

If you get stuck or have questions, open an [issue](../../issues) —
we’re here to help each other! 💬