UNPKG

dotenvx-interactive-cli

Version:

An interactive CLI tool for managing .env files with dotenvx - encrypt, decrypt, and manage environment variables with ease.

192 lines (138 loc) 5.41 kB
> [!NOTE] > Dotenvx team made vscode plugin to do the same thing -> https://marketplace.visualstudio.com/items?itemName=dotenv.dotenvx-vscode&ssr=false#overview # dotenvx-interactive-cli A powerful CLI tool for managing your .env files with dotenvx. Built with [@effect/cli](https://www.npmjs.com/package/@effect/cli), this tool provides both command-line and interactive interfaces for encrypting and decrypting environment files, as well as setting up precommit hooks. ## Why? This tool was created to simplify the process of working with dotenvx encryption and decryption. Whether you prefer command-line efficiency or interactive guidance, you can quickly: - Encrypt or decrypt .env files via direct commands or interactive menus - Work with all files at once or target specific .env files - Avoid typing lengthy dotenvx commands manually - Set up precommit hooks with a single command - Integrate seamlessly into CI/CD pipelines and scripts ## Prerequisites - [Node.js](https://nodejs.org/) (v22 or higher) - [dotenvx](https://github.com/dotenvx/dotenvx) must be installed globally (`npm install -g @dotenvx/dotenvx`) ## Installation You can install this package globally: ```bash npm install -g dotenvx-interactive-cli ``` Or use it directly with npx: ```bash npx dotenvx-interactive-cli ``` ## Features - 🔒 **Encrypt .env files** - Command-line or interactive file selection - 🔓 **Decrypt .env files** - Batch or targeted decryption - 🪝 **Precommit hook installation** - One-command setup - ⚡ **Built on @effect/cli** - Modern, type-safe CLI framework - 🎯 **Hybrid interface** - Direct commands, interactive selection, wizard, or help-guided - 🗂️ **Interactive file selection** - Beautiful checkbox interface when no files specified - 🔍 **Smart file detection** - Automatically finds .env files (excludes .keys and .vault) - ✨ **Professional CLI features** - Help, version, completions, and more - 🛡️ **Robust error handling** - Clear error messages and graceful failures ## Usage ### Command Line Interface Navigate to your project directory and use any of these commands: #### Quick Actions ```bash # Encrypt all .env files dotenvx-interactive-cli encrypt # Decrypt all .env files dotenvx-interactive-cli decrypt # Install precommit hook dotenvx-interactive-cli precommit ``` #### Target Specific Files ```bash # Encrypt specific files dotenvx-interactive-cli encrypt .env .env.production # Decrypt specific files dotenvx-interactive-cli decrypt .env.development ``` #### Interactive File Selection ```bash # Run without file arguments to get an interactive selection menu dotenvx-interactive-cli encrypt # Shows checkbox menu to select files dotenvx-interactive-cli decrypt # Interactive selection for decryption # The interactive menu allows you to: # - Select individual files with spacebar # - Choose "All files" option to select everything # - Navigate with arrow keys # - Confirm with Enter # - Cancel with Ctrl+C ``` #### Get Help and Information ```bash # Show main help dotenvx-interactive-cli --help # Show command-specific help dotenvx-interactive-cli encrypt --help # Show version dotenvx-interactive-cli --version ``` #### Interactive Mode ```bash # Launch wizard mode for guided command building dotenvx-interactive-cli --wizard # Run without arguments to see available commands dotenvx-interactive-cli ``` #### Shell Completions ```bash # Generate completions for your shell dotenvx-interactive-cli --completions bash # for bash dotenvx-interactive-cli --completions zsh # for zsh dotenvx-interactive-cli --completions fish # for fish # Install completions (example for bash) source <(dotenvx-interactive-cli --completions bash) ``` ### NPX Usage All commands work with npx as well: ```bash npx dotenvx-interactive-cli encrypt .env npx dotenvx-interactive-cli --wizard npx dotenvx-interactive-cli --help ``` ### Requirements - A `.env.keys` file must be present in your project directory - dotenvx must be installed globally ## Examples ### Basic Workflow ```bash # 1. Interactive encryption with file selection dotenvx-interactive-cli encrypt # ✨ Shows a checkbox menu to select which .env files to encrypt # 2. Set up precommit hook to auto-encrypt on commits dotenvx-interactive-cli precommit # 3. Later, interactive decryption for development dotenvx-interactive-cli decrypt # ✨ Interactive menu to choose which files to decrypt ``` ### Quick Commands (No Interaction) ```bash # Direct file specification (no prompts) dotenvx-interactive-cli encrypt .env .env.production dotenvx-interactive-cli decrypt .env.development ``` ### CI/CD Integration ```bash # In your CI/CD pipeline npx dotenvx-interactive-cli decrypt .env.production ``` ### Development Workflow ```bash # Start with wizard mode if unsure dotenvx-interactive-cli --wizard # Or get help for specific commands dotenvx-interactive-cli encrypt --help ``` ## Migration from v0.3.x If you're upgrading from the previous interactive-only version: - **Old**: `dotenvx-interactive-cli` (interactive menu only) - **New**: `dotenvx-interactive-cli [command]` (direct commands with fallback to guidance) The tool now supports both approaches - you can use direct commands for scripting or run without arguments to see available options. ## License MIT ## Contributing Contributions, issues, and feature requests are welcome!