Populate README, add poetry.lock
This commit is contained in:
94
README.md
94
README.md
@@ -1 +1,95 @@
|
|||||||
# mirro
|
# mirro
|
||||||
|
|
||||||
|
**mirro** is a tiny safety-first editing wrapper for text files.
|
||||||
|
You edit a temporary file, **mirro** detects whether anything changed, and if it did, it saves a backup of the original before writing your changes.
|
||||||
|
|
||||||
|
|
||||||
|
## Why mirro?
|
||||||
|
|
||||||
|
Well... have you ever been in the _“ugh, I forgot to back this up first”_ situation?
|
||||||
|
|
||||||
|
No?
|
||||||
|
|
||||||
|
Stop lying... (:))
|
||||||
|
|
||||||
|
**mirro** gives you a built-in safety net:
|
||||||
|
|
||||||
|
- never edits the real file directly
|
||||||
|
|
||||||
|
- detects whether the edit actually changed content
|
||||||
|
|
||||||
|
- creates a timestamped backup only when changes occurred
|
||||||
|
|
||||||
|
- clearly labels backups so you know exactly what they came from
|
||||||
|
|
||||||
|
- respects the user’s `$EDITOR` when possible
|
||||||
|
|
||||||
|
- requires `sudo` only when actually needed
|
||||||
|
|
||||||
|
It’s simple, predictable, and hard to misuse.
|
||||||
|
|
||||||
|
I mean... the only thing you need to remember is _to use it_.
|
||||||
|
|
||||||
|
## How it works
|
||||||
|
|
||||||
|
**mirro** reads the original file (or pre-populates new files with a friendly message).
|
||||||
|
|
||||||
|
It writes that content into a temporary file.
|
||||||
|
|
||||||
|
It launches your `$EDITOR` to edit the temp file.
|
||||||
|
|
||||||
|
When the editor closes, **mirro** compares old vs new.
|
||||||
|
|
||||||
|
If nothing changed:
|
||||||
|
```
|
||||||
|
file hasn't changed
|
||||||
|
```
|
||||||
|
|
||||||
|
If changed:
|
||||||
|
```
|
||||||
|
file changed; original backed up at: ~/.local/share/mirro/ (or /root/.local/share/mirro/ under sudo)
|
||||||
|
```
|
||||||
|
|
||||||
|
Backed up files include a header:
|
||||||
|
```
|
||||||
|
# ---------------------------------------------
|
||||||
|
# mirro backup
|
||||||
|
# Original file: /path/to/whatever.conf
|
||||||
|
# Timestamp: 2025-11-10 17:44:00 UTC
|
||||||
|
# ---------------------------------------------
|
||||||
|
```
|
||||||
|
|
||||||
|
So you never lose track of the original location.
|
||||||
|
|
||||||
|
### Backup directory
|
||||||
|
|
||||||
|
By default all the backups will be stored at:
|
||||||
|
```
|
||||||
|
~/.local/share/mirro/
|
||||||
|
```
|
||||||
|
so under `sudo`:
|
||||||
|
```
|
||||||
|
/root/.local/share/mirro/
|
||||||
|
```
|
||||||
|
|
||||||
|
Backups are named like:
|
||||||
|
```
|
||||||
|
filename.ext.orig.20251110T174400.bak
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
**NOTE**: To use mirro with sudo, the path to mirro must be in the $PATH seen by root.
|
||||||
|
Either install mirro as root (preferred), use sudo -E mirro, or add the $PATH to /etc/sudoers using its Defaults secure_path parameter.
|
||||||
|
|
||||||
|
Install via PyPI (preferred):
|
||||||
|
```
|
||||||
|
pip install mirro
|
||||||
|
```
|
||||||
|
|
||||||
|
Or clone the repo and install locally:
|
||||||
|
```
|
||||||
|
git clone https://github.com/mdaleo404/mirro.git
|
||||||
|
cd mirro/
|
||||||
|
poetry install
|
||||||
|
```
|
||||||
|
|||||||
7
poetry.lock
generated
Normal file
7
poetry.lock
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
|
||||||
|
package = []
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
lock-version = "2.0"
|
||||||
|
python-versions = "^3.13"
|
||||||
|
content-hash = "f01b553f3895e558c34b4f10542e05acdef39bf0527c8090bd136d914dc73f94"
|
||||||
Reference in New Issue
Block a user