38 lines
1.4 KiB
Markdown
38 lines
1.4 KiB
Markdown
# PySentry
|
|
|
|
PySentry is a cross-platform desktop scheduler inspired by cron.
|
|
|
|
The project is starting with the GUI shell first, then the scheduling core.
|
|
|
|
## Requirements
|
|
|
|
- Go 1.22 or newer
|
|
- A C compiler for Fyne builds on Windows, for example MSYS2/MinGW-w64
|
|
|
|
## Run
|
|
|
|
```powershell
|
|
go mod tidy
|
|
go run ./cmd/pysentry
|
|
```
|
|
|
|
If Go is installed but not available in `PATH`, use the full path:
|
|
|
|
```powershell
|
|
& 'C:\Program Files\Go\bin\go.exe' run ./cmd/pysentry
|
|
```
|
|
|
|
## Current shape
|
|
|
|
- `cmd/pysentry` starts the desktop app.
|
|
- `internal/app` contains the first Fyne-based interface prototype.
|
|
- `internal/core` contains YAML storage, command execution, and the first scheduler loop.
|
|
- Jobs can be created, edited, paused/resumed, run manually, and persisted to YAML.
|
|
- Settings are stored in `pysentry.yaml` next to the executable.
|
|
- Jobs are stored in one `jobs.yaml` file. The job directory is configured by `jobs_dir` and defaults to the executable directory.
|
|
- Command output is also written to per-run `.log` files in `logs_dir`. Log filenames include the run timestamp and job name.
|
|
- Log cleanup is controlled by `max_log_files` and `max_log_age_days`.
|
|
- The current scheduler supports `@every` schedules such as `@every 10s` and `@every 1m`.
|
|
- Run history records include a `trigger` value such as `Manual`, `Schedule`, or `UI`.
|
|
- Cron expression parsing is planned for the next phase.
|