## [setup_crontab](../../scripts/setup_crontab)

Sets up automated cron jobs from a configuration file.

## Description

This script manages cron jobs by reading from `mycronjobs.txt` and merging them into the system crontab. It intelligently avoids duplicate entries and ensures the cron service is running.

## Usage

```bash
./setup_crontab.sh
```

## Configuration File

The script expects a cron job definition file at:
`~/.local/bin/mycronjobs.txt`

Example `mycronjobs.txt`:
```
# Daily backup at 2 AM
0 2 * * * /home/user/.local/bin/backup.sh

# Weekly cleanup on Sundays
0 0 * * 0 /home/user/.local/bin/cleanup.sh
```

## Features

- **Smart Merging**: Only adds new jobs, skips existing duplicates
- **Comments Support**: Lines starting with `#` are ignored
- **Service Management**: Automatically starts cron service on Linux
- **Cross-Platform**: Works on Linux (systemd) and macOS (launchd)

## Platform Behavior

### Linux
- Starts cron via `systemctl` if not running
- Uses standard crontab

### macOS
- Uses launchd (cron runs automatically)
- No additional service management needed

## Example Output

```
✅  Added 2 new cron job(s):
   + 0 2 * * * /home/user/.local/bin/backup.sh
   + 0 0 * * 0 /home/user/.local/bin/cleanup.sh
```

Or if jobs already exist:
```
ℹ️  No new cron jobs to add; all jobs already present.
```

## Notes

- The script uses `set -euo pipefail` for strict error handling
- Existing crontab entries are preserved
- Empty lines are ignored during processing
