301 lines
5.1 KiB
Markdown
301 lines
5.1 KiB
Markdown
# 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! 🚀
|