# 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
```
Raw data
{
"_id": null,
"home_page": null,
"name": "halig",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "cli, notes, age, rage, encryption, notebook",
"author": null,
"author_email": "=?utf-8?b?Y8SDdMSDbGlu?= <185504a9@duck.com>",
"download_url": "https://files.pythonhosted.org/packages/e0/e3/2416cecd14b440f75436cd48fa4d357729eeae0cb9dce398a6371e281cea/halig-0.6.1.tar.gz",
"platform": null,
"description": "# halig\n\n[![Build status](https://git.roboces.dev/catalin/halig/badges/workflows/ci.yaml/badge.svg)](https://git.roboces.dev/catalin/halig/actions)\n![PyPI](https://img.shields.io/pypi/v/halig?logo=python)\n![PyPI - License](https://img.shields.io/pypi/l/halig)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/halig)\n[![pdm-managed](https://img.shields.io/badge/pdm-managed-blueviolet)](https://pdm.fming.dev)\n\n[(R)age](https://github.com/woodruffw/pyrage) encrypted note-taking CLI app.\n\n`halig` opens, using your favorite `$EDITOR`, an in-memory copy of a file and upon save-and-exit,\nit encrypts the new contents into an [age](https://github.com/FiloSottile/age) file that\nyou can store, _relatively_ safe, anywhere.\n\n## Features\n\n- Simple notebooks management with paths autocompletion\n- Passphrase-less, fully-encrypted notes, compatible with existing SSH keys\n- No external `age` binary needed\n- Almost all `age` advantages, like having multiple keys for encryption and decryption\n- Remote (HTTP) public keys import: e.g: github.com/\\<username\\>.keys\n\n## Install\n\n```shell\npipx install halig # or pip\n```\n\n## Setup TLDR\n\n```shell\nset -e\nssh-keygen -t ed25519\nmkdir -p \"${XDG_CONFIG_HOME:-$HOME/.config}/halig\"\ncat << EOF > \"${XDG_CONFIG_HOME:-$HOME/.config}/halig/halig.yml\"\n---\nnotebooks_root_path: ~/Documents/Notebooks\nidentity_paths:\n - ~/.ssh/id_ed25519\nrecipient_paths:\n - ~/.ssh/id_ed25519.pub\n - https://github.com/<username>.keys\n - https://gitlab.com/<username>.keys\nEOF\n```\n\n## Usage TLDR\n\n```shell\nhalig edit some_notebook # edit today's note relative to <notebooks_root_path>/some_notebook\nhalig edit some_notebook/foo # edit <notebooks_root_path>/some_notebook/foo.age\nhalig notebooks # list current notebooks\nhalig git commit\nhalig git push\n```\n",
"bugtrack_url": null,
"license": "GPL-3.0-or-later",
"summary": "age-encrypted, file-based, note-taking CLI app",
"version": "0.6.1",
"project_urls": {
"Changelog": "https://git.roboces.dev/catalin/halig",
"Documentation": "https://git.roboces.dev/catalin/halig",
"Homepage": "https://git.roboces.dev/catalin/halig",
"Repository": "https://git.roboces.dev/catalin/halig"
},
"split_keywords": [
"cli",
" notes",
" age",
" rage",
" encryption",
" notebook"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5b5cf90b8b90f05b5001131bb24a1031bcebf81d7ef5031706437cfe9619607b",
"md5": "09b76187a35a99a23296c0aa36fa23ed",
"sha256": "07f2660fa8c62489bf03b5eec0d2142978c79342f8848c8a1c33ab5907395437"
},
"downloads": -1,
"filename": "halig-0.6.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "09b76187a35a99a23296c0aa36fa23ed",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 28739,
"upload_time": "2024-09-10T20:54:44",
"upload_time_iso_8601": "2024-09-10T20:54:44.537409Z",
"url": "https://files.pythonhosted.org/packages/5b/5c/f90b8b90f05b5001131bb24a1031bcebf81d7ef5031706437cfe9619607b/halig-0.6.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e0e32416cecd14b440f75436cd48fa4d357729eeae0cb9dce398a6371e281cea",
"md5": "f7d44b3e1013a382d9a2c27e6d99b16f",
"sha256": "dba1071fc1e74b88a4ab8a7aa6cced8679eae75dd47ec56b2f36a6abcc54b403"
},
"downloads": -1,
"filename": "halig-0.6.1.tar.gz",
"has_sig": false,
"md5_digest": "f7d44b3e1013a382d9a2c27e6d99b16f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 29663,
"upload_time": "2024-09-10T20:54:46",
"upload_time_iso_8601": "2024-09-10T20:54:46.058401Z",
"url": "https://files.pythonhosted.org/packages/e0/e3/2416cecd14b440f75436cd48fa4d357729eeae0cb9dce398a6371e281cea/halig-0.6.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-10 20:54:46",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "halig"
}