mirror of
https://github.com/ivuorinen/a.git
synced 2026-03-12 11:58:02 +00:00
7d9f91991eb58dbcb7cb7181deca6342f836ea51
* ci: migrate codeql to composable workflow
* fix: correct codeql workflow permissions, cron, and action ref
- Set root-level permissions to {}
- Add job-level permissions (actions, contents, packages, security-events)
- Pin action ref to commit hash with version comment
- Fix mangled cron schedule
- Clean up workflow structure
* fix: correct codeql workflow language, queries, permissions, and action ref
- Use 'javascript' instead of 'javascript-typescript' for CodeQL language
- Add queries: security-and-quality parameter
- Set root-level permissions to {}
- Add job-level permissions (actions, contents, packages, security-events)
- Pin action ref to commit hash with version comment
- Fix mangled cron schedule
A CLI Wrapper for Age Encryption
A robust command-line interface (CLI) wrapper around the age encryption tool. This utility simplifies encryption and decryption using SSH keys, with integrated support for fetching public keys from GitHub.
Features
- Secure Encryption/Decryption: Utilize SSH and GitHub keys with
agefor strong encryption. - Configuration: Easily configurable via a YAML file.
- Structured Logging: JSON-formatted logs with configurable paths.
- Cross-platform: Supports Linux, macOS, and Windows.
- Shell Completion: Auto-generated completion scripts for Bash, Zsh, and Fish.
- Robust Error Handling: Comprehensive and clear error messaging.
Installation
Prerequisites
- Go (1.21+)
ageencryption tool
Build from source
git clone <repository-url>
cd <repository-directory>
go build -o a
Move binary to path (optional)
sudo mv a /usr/local/bin/
Usage
Basic usage
a [command] [flags]
Commands
config: Manage application settingsencrypt: Encrypt filesdecrypt: Decrypt filescompletion: Generate shell completion scripts
Examples
Configure the CLI
a config --ssh-key ~/.ssh/id_rsa --github-user yourusername --default-recipients ~/.ssh/id_rsa.pub --cache-ttl 120
Encrypt a file
a encrypt -o encrypted_file.txt input.txt
Decrypt a file
a decrypt -o decrypted_file.txt encrypted_file.txt
Generate shell completions
a completion bash > /etc/bash_completion.d/a
Configuration File
Configuration is stored at $HOME/.config/a/config.yaml:
ssh_key_path: "/home/user/.ssh/id_rsa"
github_user: "yourusername"
default_recipients:
- "/home/user/.ssh/id_rsa.pub"
cache_ttl_minutes: 120
log_file_path: "/home/user/.state/a/cli.log"
Logging
Structured JSON logs are written to a configurable log file (cli.log). Verbosity can be adjusted with the -v or --verbose flag.
Testing
Run unit tests with:
go test ./...
License
This project is licensed under the MIT License. See the LICENSE file for details.
Description
Languages
Go
96%
Just
4%