Metadata-Version: 2.1
Name: halig
Version: 0.5.1a2
Summary: age-encrypted, file-based, note-taking CLI app
Keywords: cli,notes,age,rage,encryption,notebook
Author-Email: =?utf-8?b?Y8SDdMSDbGlu?= <185504a9@duck.com>
License: GPL-3.0-or-later
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Terminals
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Project-URL: Homepage, https://git.roboces.dev/catalin/halig
Project-URL: Repository, https://git.roboces.dev/catalin/halig
Project-URL: Documentation, https://git.roboces.dev/catalin/halig
Project-URL: Changelog, https://git.roboces.dev/catalin/halig
Requires-Python: >=3.10
Requires-Dist: typer>=0
Requires-Dist: rich>=13.8
Requires-Dist: pydantic>=2.8
Requires-Dist: pyyaml>=6.0
Requires-Dist: pyrage>=1
Requires-Dist: httpx>=0
Requires-Dist: platformdirs>=4.2
Requires-Dist: pydantic-settings>=2
Requires-Dist: hishel>=0
Requires-Dist: whenever>=0.6.6
Requires-Dist: gitpython>=3.1.43
Requires-Dist: pytest>=7; extra == "testing"
Requires-Dist: pytest-cov>=4; extra == "testing"
Requires-Dist: pyfakefs>=5; extra == "testing"
Requires-Dist: pytest-clarity>=1; extra == "testing"
Requires-Dist: pytest-reportlog>=0; extra == "testing"
Requires-Dist: pytest-duration-insights>=0; extra == "testing"
Requires-Dist: pytest-pretty>=1; extra == "testing"
Requires-Dist: pytest-mock>=3; extra == "testing"
Requires-Dist: mock>=5; extra == "testing"
Requires-Dist: faker>=28.1.0; extra == "testing"
Requires-Dist: ruff>=0.4; extra == "linting"
Requires-Dist: pyright>=1.1; extra == "linting"
Requires-Dist: mypy>=1.1; extra == "linting"
Requires-Dist: types-PyYAML>=6.0; extra == "linting"
Requires-Dist: mkdocs-material>=9.1.5; extra == "docs"
Requires-Dist: mkdocstrings[python]>=0.20.0; extra == "docs"
Requires-Dist: bump-pydantic>=0.6.0; extra == "dev"
Provides-Extra: testing
Provides-Extra: linting
Provides-Extra: docs
Provides-Extra: dev
Description-Content-Type: text/markdown

# halig

[![Build status](https://git.roboces.dev/catalin/halig/badges/workflows/ci.yaml/badge.svg)](https://git.roboces.dev/catalin/halig/actions)
![PyPI](https://img.shields.io/pypi/v/halig?logo=python)
![PyPI - License](https://img.shields.io/pypi/l/halig)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/halig)
[![pdm-managed](https://img.shields.io/badge/pdm-managed-blueviolet)](https://pdm.fming.dev)

[(R)age](https://github.com/woodruffw/pyrage) encrypted note-taking CLI app.

`halig` opens, using your favorite `$EDITOR`, an in-memory copy of a file and upon save-and-exit,
it encrypts the new contents into an [age](https://github.com/FiloSottile/age) file that
you can store, _relatively_ safe, anywhere.

## Features

- Simple notebooks management with paths autocompletion
- Passphrase-less, fully-encrypted notes, compatible with existing SSH keys
- No external `age` binary needed
- Almost all `age` advantages, like having multiple keys for encryption and decryption
- Remote (HTTP) public keys import: e.g: github.com/\<username\>.keys

## Install

```shell
pipx install halig # or pip
```

## Setup TLDR

```shell
set -e
ssh-keygen -t ed25519
mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/halig"
cat << EOF > "${XDG_CONFIG_HOME:-$HOME/.config}/halig/halig.yml"
---
notebooks_root_path: ~/Documents/Notebooks
identity_paths:
  - ~/.ssh/id_ed25519
recipient_paths:
  - ~/.ssh/id_ed25519.pub
  - https://github.com/<username>.keys
  - https://gitlab.com/<username>.keys
EOF
```

## Usage TLDR

```shell
halig edit some_notebook     # edit today's note relative to <notebooks_root_path>/some_notebook
halig edit some_notebook/foo # edit  <notebooks_root_path>/some_notebook/foo.age
halig notebooks              # list current notebooks
halig git commit
halig git push
```
