Files

301 lines
5.1 KiB
Markdown
Raw Permalink Normal View History

# How to Run the Postiz CLI
There are several ways to run the CLI, depending on your needs.
## Option 1: Direct Execution (Quick Test) ⚡
The built file at `apps/cli/dist/index.js` is already executable!
```bash
# From the monorepo root
node apps/cli/dist/index.js --help
# Or run it directly (it has a shebang)
./apps/cli/dist/index.js --help
# Example command
export POSTIZ_API_KEY=your_key
node apps/cli/dist/index.js posts:list
```
## Option 2: Link Globally (Recommended for Development) 🔗
This creates a global `postiz` command you can use anywhere:
```bash
# From the monorepo root
cd apps/cli
pnpm link --global
# Now you can use it anywhere!
postiz --help
postiz posts:list
postiz posts:create -c "Hello!" -i "twitter-123"
# To unlink later
pnpm unlink --global
```
**After linking, you can use `postiz` from any directory!**
## Option 3: Use pnpm Filter (From Root) 📦
```bash
# From the monorepo root
pnpm --filter postiz start -- --help
pnpm --filter postiz start -- posts:list
pnpm --filter postiz start -- posts:create -c "Hello" -i "twitter-123"
```
## Option 4: Use npm/npx (After Publishing) 🌐
Once published to npm:
```bash
# Install globally
npm install -g postiz
# Or use with npx (no install)
npx postiz --help
npx postiz posts:list
```
## Quick Setup Guide
### Step 1: Build the CLI
```bash
# From monorepo root
pnpm run build:cli
```
### Step 2: Set Your API Key
```bash
export POSTIZ_API_KEY=your_api_key_here
# To make it permanent, add to your shell profile:
echo 'export POSTIZ_API_KEY=your_api_key' >> ~/.bashrc
# or ~/.zshrc if you use zsh
```
### Step 3: Choose Your Method
**For quick testing:**
```bash
node apps/cli/dist/index.js --help
```
**For regular use (recommended):**
```bash
cd apps/cli
pnpm link --global
postiz --help
```
## Troubleshooting
### "Command not found: postiz"
If you linked globally but still get this error:
```bash
# Check if it's linked
which postiz
# If not found, try linking again
cd apps/cli
pnpm link --global
# Or check your PATH
echo $PATH
```
### "POSTIZ_API_KEY is not set"
```bash
export POSTIZ_API_KEY=your_key
# Verify it's set
echo $POSTIZ_API_KEY
```
### Permission Denied
If you get permission errors:
```bash
# Make the file executable
chmod +x apps/cli/dist/index.js
# Then try again
./apps/cli/dist/index.js --help
```
### Rebuild After Changes
After making code changes, rebuild:
```bash
pnpm run build:cli
```
If you linked globally, the changes will be reflected immediately (no need to re-link).
## Testing the CLI
### Test Help Command
```bash
postiz --help
postiz posts:create --help
```
### Test with Sample Command (requires API key)
```bash
export POSTIZ_API_KEY=your_key
# List integrations
postiz integrations:list
# Create a test post
postiz posts:create \
-c "Test post from CLI" \
-i "your-integration-id"
```
## Development Workflow
### 1. Make Changes
Edit files in `apps/cli/src/`
### 2. Rebuild
```bash
pnpm run build:cli
```
### 3. Test
```bash
# If linked globally
postiz --help
# Or direct execution
node apps/cli/dist/index.js --help
```
### 4. Watch Mode (Auto-rebuild)
```bash
# From apps/cli directory
pnpm run dev
# In another terminal, test your changes
postiz --help
```
## Environment Variables
### Required
- `POSTIZ_API_KEY` - Your Postiz API key (required for all operations)
### Optional
- `POSTIZ_API_URL` - Custom API endpoint (default: `https://api.postiz.com`)
### Setting Environment Variables
**Temporary (current session):**
```bash
export POSTIZ_API_KEY=your_key
export POSTIZ_API_URL=https://custom-api.com
```
**Permanent (add to shell profile):**
```bash
# For bash
echo 'export POSTIZ_API_KEY=your_key' >> ~/.bashrc
source ~/.bashrc
# For zsh
echo 'export POSTIZ_API_KEY=your_key' >> ~/.zshrc
source ~/.zshrc
```
## Using Aliases
Create a convenient alias:
```bash
# Add to ~/.bashrc or ~/.zshrc
alias pz='postiz'
# Now you can use
pz posts:list
pz posts:create -c "Quick post" -i "twitter-123"
```
## Production Deployment
### Publish to npm
```bash
# From monorepo root
pnpm run publish-cli
# Or from apps/cli
cd apps/cli
pnpm run publish
```
### Install from npm
```bash
# Global install
npm install -g postiz
# Project-specific
npm install postiz
npx postiz --help
```
## Summary of Methods
| Method | Command | Use Case |
|--------|---------|----------|
| **Direct Node** | `node apps/cli/dist/index.js` | Quick testing, no installation |
| **Direct Execution** | `./apps/cli/dist/index.js` | Same as above, slightly shorter |
| **Global Link** | `postiz` (after `pnpm link --global`) | **Recommended** for development |
| **pnpm Filter** | `pnpm --filter postiz start --` | From monorepo root |
| **npm Global** | `postiz` (after `npm i -g postiz`) | After publishing to npm |
| **npx** | `npx postiz` | One-off usage without installing |
## Recommended Setup
For the best development experience:
```bash
# 1. Build
pnpm run build:cli
# 2. Link globally
cd apps/cli
pnpm link --global
# 3. Set API key
export POSTIZ_API_KEY=your_key
# 4. Test
postiz --help
postiz integrations:list
# 5. Start using!
postiz posts:create -c "My first post" -i "twitter-123"
```
Now you can use `postiz` from anywhere! 🚀