chore: setup team collaboration guidelines, gitignore and requirements

This commit is contained in:
2026-09-01 17:01:28 +03:30
parent 51585dbe52
commit ce34e66154
4 changed files with 198 additions and 1 deletions

57
.gitignore vendored
View File

@@ -1 +1,56 @@
**/__pycache__ # Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# Virtual Environments
venv/
.venv/
env/
ENV/
env.bak/
venv.bak/
# IDE & Editors
.idea/
.vscode/
*.swp
*.swo
*~
.DS_Store
Thumbs.db
# Testing & Coverage
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
# Logs and temporary files
*.log
*.tmp
temp/

79
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,79 @@
# Team Contribution & Git Guidelines
This document defines the Git conventions, branching strategy, and contribution workflow for the `acc-installer` team.
---
## 1. Branching Strategy
Our team uses a **Feature Branch** workflow based on `main` and `develop`:
* `main`**Production / Release**: Contains only stable, tested code. Direct commits or push to `main` are strictly forbidden.
* `develop`**Integration / Staging**: Contains completed features ready for integration and testing.
* `feature/<feature-name>`**New Features**: Branch created from `develop` for a specific feature or task (e.g. `feature/ui-installer`, `feature/config-loader`).
* `fix/<bug-name>`**Bug Fixes**: Branch created from `develop` to fix bugs.
* `hotfix/<issue-name>`**Critical Fixes**: Branch created directly from `main` for critical production hotfixes.
```text
main ─────────────────────────● (v1.0.0) ───────────● (v1.1.0)
▲ ▲
│ │
develop ──────●─────────────────●───────────────────●
\ / \ /
feature ●──────●──────● ●──────●───────●
(feature/copy) (feature/extract)
```
---
## 2. Commit Message Conventions (Conventional Commits)
All commit messages must follow the format:
```text
<type>(<scope>): <short summary>
[optional body explaining context or breaking changes]
```
### Allowed Types:
* `feat`: A new feature or functionality
* `fix`: A bug fix
* `refactor`: Code restructuring without changing external behavior
* `docs`: Documentation updates (`README.md`, docstrings, etc.)
* `chore`: Maintenance tasks, config updates, `.gitignore`, dependencies
* `test`: Adding or modifying tests
### Examples:
* `feat(copier): add verification checksum after file copy`
* `fix(drive): fallback to C: drive when no other drive exists`
* `docs: update setup steps in README`
---
## 3. Pull Request / Merge Request Workflow
1. **Pull latest changes** before starting:
```powershell
git checkout develop
git pull origin develop
```
2. **Create a new branch**:
```powershell
git checkout -b feature/your-feature-name
```
3. **Make commits** adhering to conventional commit rules.
4. **Push branch to remote**:
```powershell
git push -u origin feature/your-feature-name
```
5. **Open a Merge Request / Pull Request** targeting the `develop` branch.
6. **Code Review**: At least one peer review is required before merging.
7. **Delete merged branch** after merging.
---
## 4. Code Standards
* Use Python type annotations (`str`, `Optional[str]`, `Path`, etc.).
* Avoid hardcoded paths; use `module.config.InstallerConfig`.
* Keep error messages clear and informative with actionable failure reasons.

61
README.md Normal file
View File

@@ -0,0 +1,61 @@
# Acc Installer
An automated software setup, extraction, and installation pipeline for NovinPardaz systems.
## Overview
Acc Installer performs the end-to-end setup process for NovinPardaz applications:
1. **Directory Setup & Source File Transfer**: Identifies the primary non-system drive (e.g. `D:\`, `E:\`) and initializes directory structures (`NovinPardazOne/NovinSoft`, `NovinPardazOne/NovinAcc`). Copies required software packages from the source path.
2. **NovinAcc Extraction**: Moves and extracts `NovinAcc.zip` archive to the target accounting directory.
3. **NovinDesk Automated Installation**: Extracts `NovinDesk.zip`, triggers the installer binary, and automates UI acceptance.
## Project Structure
```text
acc-installer/
├── data/
│ └── sciter.dll # Sciter dynamic library asset
├── module/
│ ├── __init__.py # Package entry points & public exports
│ ├── config.py # Unified configuration & dynamic drive resolver
│ ├── downloader_copier.py# Directory setup & file copier
│ ├── extract_acc.py # Archive extractor for NovinAcc
│ └── install_novindesk.py# NovinDesk extractor & automated installer
├── .gitignore # Standard ignore definitions
├── CONTRIBUTING.md # Team branching and contribution guidelines
├── main.py # Main orchestrator runner CLI
├── README.md # Project documentation
└── requirements.txt # Python package dependencies
```
## Quick Start
### 1. Requirements
* Python 3.9+ (Windows OS recommended)
### 2. Setup Virtual Environment
```powershell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
```
### 3. Execution
To run the full installer pipeline:
```powershell
python main.py
```
To specify custom drive or source directory:
```powershell
python main.py --source "C:\SoftwareNP" --drive "D:\"
```
Or run in dry-run mode (validates setup without making destructive changes):
```powershell
python main.py --dry-run
```
## Team Workflow & Branching
We follow a **Feature-Branching / GitFlow** model. Please read [CONTRIBUTING.md](CONTRIBUTING.md) before pushing code or creating Pull Requests.

2
requirements.txt Normal file
View File

@@ -0,0 +1,2 @@
# Automated UI interaction
pyautogui>=0.9.54