From f03221a3bae35dcda8aa00758384ce9f23a00a6c Mon Sep 17 00:00:00 2001 From: Wadagraprana <115563671+Wadagraprana@users.noreply.github.com> Date: Mon, 8 Dec 2025 21:12:39 +0700 Subject: [PATCH 1/2] update make env --- Catatan.md | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++ makefile | 97 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 204 insertions(+) create mode 100644 Catatan.md create mode 100644 makefile diff --git a/Catatan.md b/Catatan.md new file mode 100644 index 000000000..c54a8f613 --- /dev/null +++ b/Catatan.md @@ -0,0 +1,107 @@ +# ๐Ÿ› ๏ธ Panduan Pengembangan iLEAPP dengan Makefile + +Dokumen ini menjelaskan cara menggunakan `Makefile` yang disertakan dalam repository ini untuk mempercepat proses pengembangan (development), testing, dan penggunaan iLEAPP secara *cross-platform* (Windows, Linux, macOS). + +## ๐Ÿ“‹ Prasyarat + +Sebelum memulai, pastikan Anda telah menginstal: + +1. **Python 3.9+**: Pastikan terdaftar di PATH system. +2. **GNU Make**: + * **Linux/macOS**: Biasanya sudah terinstall (atau via `sudo apt install make` / `xcode-select --install`). + * **Windows**: + * Jika menggunakan **Git Bash**, `make` biasanya sudah termasuk. + * Jika menggunakan **CMD/PowerShell**, instal via Chocolatey: `choco install make`. + +--- + +## ๐Ÿš€ Perintah Dasar (Workflow) + +Berikut adalah urutan perintah dari persiapan hingga menjalankan aplikasi. + +### 1. Persiapan Lingkungan (`Setup`) + +Tidak perlu membuat virtual environment (venv) secara manual. Cukup jalankan satu perintah ini pertama kali: + +```bash +make install +``` +Apa yang dilakukan perintah ini? +1. Mengecek apakah `.venv` sudah ada. Jika belum, akan dibuatkan secara otomatis (target `make env`). +2. Meng-upgrade `pip`. +3. Menginstal seluruh dependensi dari `requirements.txt`. +4. Menginstal development tools tambahan (`black`, `isort`, `flake8`) untuk menjaga kerapian kode. + +--- + +### 2. Pengembangan Parser (`Development`) + +Saat Anda membuat parser artifak baru, Anda tidak perlu membuka GUI berulang kali. Gunakan mode CLI testing untuk melihat log error secara langsung. + +Command: +```Bash +make test-parser IN= OUT= ART= +``` +Penjelasan Parameter: +- `IN` : Path ke folder/file sampel data (ekstraksi iOS). Default: `./input_data` +- `OUT`: Path folder tujuan laporan. Default: `./output_report` +- `ART`: Nama artifak yang ingin ditest (sesuai nama di script). Default: `*` (Semua). + + +Contoh Penggunaan Nyata: Mengetes parser WhatsApp dengan data sampel yang ada di folder `sampel_wa`: + +```Bash +make test-parser IN=./sampel_wa OUT=./laporan_test ART=WhatsApp +``` +Tips: Perintah ini menggunakan flag `--t` (text/tsv only) agar proses testing lebih cepat tanpa generate HTML yang berat. + +--- + +### 3. Menjalankan Aplikasi (`Running`) + +Setelah parser dirasa aman, jalankan aplikasi dalam mode GUI atau cek Help menu CLI. + +Menjalankan GUI: Membuka antarmuka grafis iLEAPP (`ileappGUI.py`): +```Bash +make run +``` +Melihat Menu CLI: Melihat opsi bantuan command line (`ileapp.py --help`): +```Bash +make run-cli +``` + +--- + +### 4. Kualitas Kode (`Code Quality`) + +Sebelum melakukan Commit atau Pull Request, pastikan kode Anda rapi dan sesuai standar Python (PEP8). + +Format Otomatis: Merapikan kode di folder `scripts/artifacts/` menggunakan black dan isort: +```Bash +make format +``` +Cek Error/Linting: Mencari potensi error syntax atau variabel yang tidak terpakai menggunakan `flake8`: +```Bash +make lint +``` + +--- + +### 5. Bersih-bersih (`Cleanup`) + +Jika terjadi error pada library atau ingin mengulang setup dari awal: +```Bash +make clean +``` +Perintah ini akan menghapus folder `.venv`, folder cache pyc, cache pytest, dan file temporary lainnya. + +--- + +### ๐Ÿ’ก Catatan Khusus Windows +Makefile ini dirancang agar kompatibel dengan Command Prompt (CMD), PowerShell, dan Git Bash. +- Jika menggunakan CMD/PowerShell, Makefile akan otomatis mendeteksi OS dan menggunakan perintah Windows (seperti `rmdir` dan backslash `\`). +- Jika menggunakan Git Bash, Makefile akan menggunakan perintah Unix (seperti `rm -rf`). + +Jika Anda mengalami error `make: command not found` di Windows, pastikan binary Make sudah masuk ke dalam System PATH environment variable. + +--- diff --git a/makefile b/makefile new file mode 100644 index 000000000..f562bc726 --- /dev/null +++ b/makefile @@ -0,0 +1,97 @@ +# Cross-platform iLEAPP Makefile +.PHONY: env install run run-cli test-parser lint format clean help + +PYTHON ?= python +VENV_DIR := .venv +REQUIREMENTS := requirements.txt + +# ========================================== +# Platform-specific Paths (Hanya untuk lokasi file) +# ========================================== +ifeq ($(OS),Windows_NT) + # Windows Paths + VENV_BIN := $(VENV_DIR)/Scripts + PIP := $(VENV_BIN)/pip.exe + PYTHON_VENV := $(VENV_BIN)/python.exe +else + # Unix/Linux Paths + VENV_BIN := $(VENV_DIR)/bin + PIP := $(VENV_BIN)/pip + PYTHON_VENV := $(VENV_BIN)/python +endif + +# Development Tools +BLACK := $(VENV_BIN)/black +ISORT := $(VENV_BIN)/isort +FLAKE8 := $(VENV_BIN)/flake8 + +# ========================================== +# Targets +# ========================================== + +# 1. Create virtual environment (Menggunakan Python agar cross-shell aman) +env: + @echo "๐Ÿ” Checking virtual environment..." + @$(PYTHON) -c "import os, venv; venv.create('$(VENV_DIR)', with_pip=True) if not os.path.exists('$(VENV_DIR)') else print('โœ… Virtual environment already exists.')" + +# 2. Install dependencies +install: + @echo "๐Ÿ“ฆ Checking pip..." + @$(PYTHON_VENV) -m pip install --upgrade pip + @echo "๐Ÿ“ฆ Installing iLEAPP dependencies..." + @$(PIP) install -r $(REQUIREMENTS) + @echo "๐Ÿ› ๏ธ Installing dev tools..." + @$(PIP) install black isort flake8 + +# 3. Run iLEAPP GUI +run: + @echo "๐Ÿš€ Running iLEAPP GUI..." + @$(PYTHON_VENV) ileappGUI.py + +# 4. Run iLEAPP CLI Help +run-cli: + @echo "๐Ÿš€ Running iLEAPP CLI Help..." + @$(PYTHON_VENV) ileapp.py --help + +# 5. Test Specific Parser +# Usage: make test-parser IN=./input OUT=./output ART=Name +IN ?= ./input_data +OUT ?= ./output_report +ART ?= * +test-parser: + @echo "๐Ÿงช Testing Artifact: $(ART)" + @echo "๐Ÿ“‚ Input: $(IN)" + @echo "๐Ÿ“„ Output: $(OUT)" + @$(PYTHON) -c "import os; os.makedirs('$(OUT)', exist_ok=True)" + @$(PYTHON_VENV) ileapp.py --input_path "$(IN)" --output_path "$(OUT)" --artifact "$(ART)" --t + +# 6. Formatting Code +format: + @echo "โœจ Formatting code..." + @$(ISORT) scripts/artifacts/ + @$(BLACK) scripts/artifacts/ + +# 7. Linting +lint: + @echo "๐Ÿ” Linting..." + @$(FLAKE8) scripts/artifacts/ --count --select=E9,F63,F7,F82 --show-source --statistics + @$(FLAKE8) scripts/artifacts/ --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + +# 8. Clean up (Menggunakan Python agar aman di CMD maupun Bash) +clean: + @echo "๐Ÿงน Cleaning up..." + @$(PYTHON) -c "import shutil, os; shutil.rmtree('$(VENV_DIR)', ignore_errors=True); shutil.rmtree('__pycache__', ignore_errors=True); shutil.rmtree('.pytest_cache', ignore_errors=True)" + @echo "โœจ Clean." + +# Help message +help: + @echo "iLEAPP Helper Makefile" + @echo "----------------------" + @echo " make env : Create python virtual environment" + @echo " make install : Install requirements inside venv" + @echo " make run : Run iLEAPP GUI" + @echo " make test-parser : Run CLI test (Usage: make test-parser IN=... OUT=... ART=...)" + @echo " make format : Auto-format code" + @echo " make clean : Remove venv and caches" + +.DEFAULT_GOAL := help \ No newline at end of file From a480b440146fe1257a71b69dfaf28621c4751de2 Mon Sep 17 00:00:00 2001 From: Wadagraprana <115563671+Wadagraprana@users.noreply.github.com> Date: Mon, 8 Dec 2025 22:27:37 +0700 Subject: [PATCH 2/2] fix(systemVersionPlist.py): fix TypeError --- Catatan.md | 107 ------------------------ makefile | 97 --------------------- scripts/artifacts/systemVersionPlist.py | 2 +- 3 files changed, 1 insertion(+), 205 deletions(-) delete mode 100644 Catatan.md delete mode 100644 makefile diff --git a/Catatan.md b/Catatan.md deleted file mode 100644 index c54a8f613..000000000 --- a/Catatan.md +++ /dev/null @@ -1,107 +0,0 @@ -# ๐Ÿ› ๏ธ Panduan Pengembangan iLEAPP dengan Makefile - -Dokumen ini menjelaskan cara menggunakan `Makefile` yang disertakan dalam repository ini untuk mempercepat proses pengembangan (development), testing, dan penggunaan iLEAPP secara *cross-platform* (Windows, Linux, macOS). - -## ๐Ÿ“‹ Prasyarat - -Sebelum memulai, pastikan Anda telah menginstal: - -1. **Python 3.9+**: Pastikan terdaftar di PATH system. -2. **GNU Make**: - * **Linux/macOS**: Biasanya sudah terinstall (atau via `sudo apt install make` / `xcode-select --install`). - * **Windows**: - * Jika menggunakan **Git Bash**, `make` biasanya sudah termasuk. - * Jika menggunakan **CMD/PowerShell**, instal via Chocolatey: `choco install make`. - ---- - -## ๐Ÿš€ Perintah Dasar (Workflow) - -Berikut adalah urutan perintah dari persiapan hingga menjalankan aplikasi. - -### 1. Persiapan Lingkungan (`Setup`) - -Tidak perlu membuat virtual environment (venv) secara manual. Cukup jalankan satu perintah ini pertama kali: - -```bash -make install -``` -Apa yang dilakukan perintah ini? -1. Mengecek apakah `.venv` sudah ada. Jika belum, akan dibuatkan secara otomatis (target `make env`). -2. Meng-upgrade `pip`. -3. Menginstal seluruh dependensi dari `requirements.txt`. -4. Menginstal development tools tambahan (`black`, `isort`, `flake8`) untuk menjaga kerapian kode. - ---- - -### 2. Pengembangan Parser (`Development`) - -Saat Anda membuat parser artifak baru, Anda tidak perlu membuka GUI berulang kali. Gunakan mode CLI testing untuk melihat log error secara langsung. - -Command: -```Bash -make test-parser IN= OUT= ART= -``` -Penjelasan Parameter: -- `IN` : Path ke folder/file sampel data (ekstraksi iOS). Default: `./input_data` -- `OUT`: Path folder tujuan laporan. Default: `./output_report` -- `ART`: Nama artifak yang ingin ditest (sesuai nama di script). Default: `*` (Semua). - - -Contoh Penggunaan Nyata: Mengetes parser WhatsApp dengan data sampel yang ada di folder `sampel_wa`: - -```Bash -make test-parser IN=./sampel_wa OUT=./laporan_test ART=WhatsApp -``` -Tips: Perintah ini menggunakan flag `--t` (text/tsv only) agar proses testing lebih cepat tanpa generate HTML yang berat. - ---- - -### 3. Menjalankan Aplikasi (`Running`) - -Setelah parser dirasa aman, jalankan aplikasi dalam mode GUI atau cek Help menu CLI. - -Menjalankan GUI: Membuka antarmuka grafis iLEAPP (`ileappGUI.py`): -```Bash -make run -``` -Melihat Menu CLI: Melihat opsi bantuan command line (`ileapp.py --help`): -```Bash -make run-cli -``` - ---- - -### 4. Kualitas Kode (`Code Quality`) - -Sebelum melakukan Commit atau Pull Request, pastikan kode Anda rapi dan sesuai standar Python (PEP8). - -Format Otomatis: Merapikan kode di folder `scripts/artifacts/` menggunakan black dan isort: -```Bash -make format -``` -Cek Error/Linting: Mencari potensi error syntax atau variabel yang tidak terpakai menggunakan `flake8`: -```Bash -make lint -``` - ---- - -### 5. Bersih-bersih (`Cleanup`) - -Jika terjadi error pada library atau ingin mengulang setup dari awal: -```Bash -make clean -``` -Perintah ini akan menghapus folder `.venv`, folder cache pyc, cache pytest, dan file temporary lainnya. - ---- - -### ๐Ÿ’ก Catatan Khusus Windows -Makefile ini dirancang agar kompatibel dengan Command Prompt (CMD), PowerShell, dan Git Bash. -- Jika menggunakan CMD/PowerShell, Makefile akan otomatis mendeteksi OS dan menggunakan perintah Windows (seperti `rmdir` dan backslash `\`). -- Jika menggunakan Git Bash, Makefile akan menggunakan perintah Unix (seperti `rm -rf`). - -Jika Anda mengalami error `make: command not found` di Windows, pastikan binary Make sudah masuk ke dalam System PATH environment variable. - ---- diff --git a/makefile b/makefile deleted file mode 100644 index f562bc726..000000000 --- a/makefile +++ /dev/null @@ -1,97 +0,0 @@ -# Cross-platform iLEAPP Makefile -.PHONY: env install run run-cli test-parser lint format clean help - -PYTHON ?= python -VENV_DIR := .venv -REQUIREMENTS := requirements.txt - -# ========================================== -# Platform-specific Paths (Hanya untuk lokasi file) -# ========================================== -ifeq ($(OS),Windows_NT) - # Windows Paths - VENV_BIN := $(VENV_DIR)/Scripts - PIP := $(VENV_BIN)/pip.exe - PYTHON_VENV := $(VENV_BIN)/python.exe -else - # Unix/Linux Paths - VENV_BIN := $(VENV_DIR)/bin - PIP := $(VENV_BIN)/pip - PYTHON_VENV := $(VENV_BIN)/python -endif - -# Development Tools -BLACK := $(VENV_BIN)/black -ISORT := $(VENV_BIN)/isort -FLAKE8 := $(VENV_BIN)/flake8 - -# ========================================== -# Targets -# ========================================== - -# 1. Create virtual environment (Menggunakan Python agar cross-shell aman) -env: - @echo "๐Ÿ” Checking virtual environment..." - @$(PYTHON) -c "import os, venv; venv.create('$(VENV_DIR)', with_pip=True) if not os.path.exists('$(VENV_DIR)') else print('โœ… Virtual environment already exists.')" - -# 2. Install dependencies -install: - @echo "๐Ÿ“ฆ Checking pip..." - @$(PYTHON_VENV) -m pip install --upgrade pip - @echo "๐Ÿ“ฆ Installing iLEAPP dependencies..." - @$(PIP) install -r $(REQUIREMENTS) - @echo "๐Ÿ› ๏ธ Installing dev tools..." - @$(PIP) install black isort flake8 - -# 3. Run iLEAPP GUI -run: - @echo "๐Ÿš€ Running iLEAPP GUI..." - @$(PYTHON_VENV) ileappGUI.py - -# 4. Run iLEAPP CLI Help -run-cli: - @echo "๐Ÿš€ Running iLEAPP CLI Help..." - @$(PYTHON_VENV) ileapp.py --help - -# 5. Test Specific Parser -# Usage: make test-parser IN=./input OUT=./output ART=Name -IN ?= ./input_data -OUT ?= ./output_report -ART ?= * -test-parser: - @echo "๐Ÿงช Testing Artifact: $(ART)" - @echo "๐Ÿ“‚ Input: $(IN)" - @echo "๐Ÿ“„ Output: $(OUT)" - @$(PYTHON) -c "import os; os.makedirs('$(OUT)', exist_ok=True)" - @$(PYTHON_VENV) ileapp.py --input_path "$(IN)" --output_path "$(OUT)" --artifact "$(ART)" --t - -# 6. Formatting Code -format: - @echo "โœจ Formatting code..." - @$(ISORT) scripts/artifacts/ - @$(BLACK) scripts/artifacts/ - -# 7. Linting -lint: - @echo "๐Ÿ” Linting..." - @$(FLAKE8) scripts/artifacts/ --count --select=E9,F63,F7,F82 --show-source --statistics - @$(FLAKE8) scripts/artifacts/ --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - -# 8. Clean up (Menggunakan Python agar aman di CMD maupun Bash) -clean: - @echo "๐Ÿงน Cleaning up..." - @$(PYTHON) -c "import shutil, os; shutil.rmtree('$(VENV_DIR)', ignore_errors=True); shutil.rmtree('__pycache__', ignore_errors=True); shutil.rmtree('.pytest_cache', ignore_errors=True)" - @echo "โœจ Clean." - -# Help message -help: - @echo "iLEAPP Helper Makefile" - @echo "----------------------" - @echo " make env : Create python virtual environment" - @echo " make install : Install requirements inside venv" - @echo " make run : Run iLEAPP GUI" - @echo " make test-parser : Run CLI test (Usage: make test-parser IN=... OUT=... ART=...)" - @echo " make format : Auto-format code" - @echo " make clean : Remove venv and caches" - -.DEFAULT_GOAL := help \ No newline at end of file diff --git a/scripts/artifacts/systemVersionPlist.py b/scripts/artifacts/systemVersionPlist.py index ef5999d95..d3d1027e4 100644 --- a/scripts/artifacts/systemVersionPlist.py +++ b/scripts/artifacts/systemVersionPlist.py @@ -38,7 +38,7 @@ def system_version_plist(context): if plist_file: data_source = system_version_plist pl = get_plist_file_content(data_source) - elif 'sysdiagnose_' in sysdiagnose_archive and "IN_PROGRESS_" not in sysdiagnose_archive: + elif sysdiagnose_archive and 'sysdiagnose_' in sysdiagnose_archive and "IN_PROGRESS_" not in sysdiagnose_archive: tar = tarfile.open(sysdiagnose_archive) root = tar.getmembers()[0].name.split('/')[0] try: