Metadata-Version: 2.4
Name: dircomply
Version: 1.3.0
Summary: Compare the files between two project folders.
Author-email: Benevant Mathew <benevantmathewv@gmail.com>
License: MIT
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Utilities
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# 📁 dircomply - Folder Comparison Tool

`dircomply` is a lightweight tool to compare files between two directories.It highlights files that differ and those that are unique to each folder.Supports both CLI mode and GUI mode for ease of use.

## ✅ Features

- Compare files between two folders
- Detect differences in file contents
- List unique files in each folder
- Supported filetypes are listed later
- Override or append compare extensions and skipped directories from CLI
- Configure GUI font size/zoom for high-DPI monitors
- Change result popup font size dynamically with Ctrl + mouse wheel
- GUI mode for interactive comparison
- CLI mode for quick terminal use

## 💾 Installation

Install dircomply using pip:

```sh
pip install dircomply
```

## 🧪 Example Usage

Compare two folders via CLI:

```sh
dircomply /path/to/folder1 /path/to/folder2
```

Append one skipped directory and one content extension to the JSON defaults:

```sh
dircomply /path/to/folder1 /path/to/folder2 --append_skip_dir dist --append_content_ext .toml
```

Overwrite skipped directories and content extensions from the JSON defaults:

```sh
dircomply /path/to/folder1 /path/to/folder2 --skip_dir .git,build --content_ext .py --content_ext .json
```

Launch GUI mode:

```sh
dircomply
```

Launch GUI mode with temporary larger text/zoom:

```sh
dircomply --font_size 16 --result_font_size 16 --result_line_spacing 8 --result_text_bold true --zoom 1.5
```

Launch GUI mode with light theme for one run:

```sh
dircomply --theme light
```

Show version info:

```sh
dircomply --version
```

Display author details:

```sh
dircomply --author
```

## 📌 Supported CLI Options

Option Description
--help, -h Show help message and exit
--version, -v Show version number and exit
--author, -a Show author name and exit
--email, -e Show author email and exit
--content_ext VALUE Overwrite JSON content_extensions
--append_content_ext VALUE Append to JSON content_extensions
--existence_ext VALUE Overwrite JSON existence_extensions
--append_existence_ext VALUE Append to JSON existence_extensions
--skip_dir VALUE Overwrite JSON skip_dirs
--append_skip_dir VALUE Append to JSON skip_dirs
--font_size VALUE Override GUI label/input/button font size
--result_font_size VALUE Override result popup text size
--result_line_spacing VALUE Override result popup line spacing in pixels
--result_text_bold VALUE Override result popup bold text: true or false
--zoom VALUE Override Tk scaling for high-DPI monitors
--theme {dark,light} Override GUI theme for this run

`VALUE` can be comma-separated or the flag can be repeated.
`--existance_ext` and `--append_existance_ext` are also accepted as aliases.
If no arguments are passed, GUI mode will be launched.

## 🔍 GUI Text Size / Zoom

The GUI reads user settings from:

```sh
~/.config/dircomply/settings.json
```

Example for a 2K/high-DPI monitor:

```json
{
    "ui": {
        "font_family": "Arial",
        "font_size": 16,
        "result_font_size": 16,
        "result_line_spacing": 6,
        "result_text_bold": true,
        "tk_scaling": 1.5,
        "window_width": 750,
        "window_height": 430,
        "popup_width": 950,
        "popup_height": 700,
        "theme": "dark"
    }
}
```

`tk_scaling` zooms the whole Tkinter UI. `font_size` and `result_font_size` control the text size. `result_line_spacing` controls extra pixels after each result text line. `result_text_bold` controls whether result popup text is bold. `theme` supports `dark` and `light`; dark is the default.

In the result popup, hold Ctrl and scroll the mouse wheel over the result text to increase or decrease the result font size dynamically. If your Wayland compositor intercepts Ctrl + mouse wheel, use Ctrl + plus or Ctrl + minus in the result window instead. This is temporary for the open result window and does not rewrite `settings.json`.

## 🔎 What Gets Compared?

dircomply compares only files with the following extensions:
```
        ".txt", ".py", ".bat", ".html", ".ts",".json",".scss",".tcl",".md",
        ".yaml",".yml",".ini",".in",".sh",".gitignore"
```

Also check below files on existence check rather than the content difference check.
```
        ".xlsx", ".csv", ".docx",
        ".png",".jpeg",".jpg",".ods",
        ".pdf", ".ico"
```

The default skipped directories are:
```
        ".git", ".venv", "nodemodules", ".vscode", "__pycache__", "build"
```

All other file types are ignored during the comparison.
