{"id":23129832,"url":"https://github.com/detro/cronexplainer","last_synced_at":"2025-04-04T06:41:04.942Z","repository":{"id":66967172,"uuid":"113796531","full_name":"detro/CronExplainer","owner":"detro","description":"This is a simple utility, written in Java and using Gradle, that accepts  as input arguments a line of Cron configuration, and prints out an _\"explaination\"_ for it.","archived":false,"fork":false,"pushed_at":"2018-01-15T10:12:14.000Z","size":64,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-23T11:04:14.280Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/detro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-11T01:03:19.000Z","updated_at":"2019-01-30T03:11:10.000Z","dependencies_parsed_at":"2023-05-16T04:15:53.554Z","dependency_job_id":null,"html_url":"https://github.com/detro/CronExplainer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detro%2FCronExplainer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detro%2FCronExplainer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detro%2FCronExplainer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detro%2FCronExplainer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/detro","download_url":"https://codeload.github.com/detro/CronExplainer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247135125,"owners_count":20889420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-17T10:10:59.652Z","updated_at":"2025-04-04T06:41:04.914Z","avatar_url":"https://github.com/detro.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cron Explainer\n\nThis is a simple utility, written in Java and using Gradle, that accepts  as input arguments a line of Cron configuration,\nand prints out an _\"explaination\"_ for it.\n\nIn other words, given the [Cron format](https://en.wikipedia.org/wiki/Cron), it translates it into the\ncorresponding _minute/hour/day-of-month..._ values.\n\n## What Cron value formats does it handle?\n\nThe defaults\n\n* single (duh!): `30`\n* range: `10-20`\n* all: `*`\n* list: `1,5,10,15`\n* range step: `range/5` or `*/15`\n\nas well as some specials\n\n* _last_ possible value for field: `L`\n* _startup time_: `?`\n\n\n## Build executable\n\nThe packages the applicaiton as a JAR and provides portable executable that make launching the JAR really easy.\n\n```bash\n$\u003e ./gradlew installDist \n\n#...\n\n$\u003e ls ./build/install/cron-explainer/bin/\ncron-explainer*     cron-explainer.bat*\n```\n\n## Execution examples\n\nThose are just some working examples, to show how the output looks like.\n\n```bash\n$\u003e ./build/install/cron-explainer/bin/cron-explainer */12 0 1,15 */1 1-5 /usr/bin/find\nminute        0 12 24 36 48\nhour          0\nday of month  1 15\nmonth         1 2 3 4 5 6 7 8 9 10 11 12\nday of week   1 2 3 4 5\ncommand       /usr/bin/find\n\n$\u003e ./build/install/cron-explainer/bin/cron-explainer ? ? 1,15 */1 1-5 /usr/bin/find\nminute        31\nhour          0\nday of month  1 15\nmonth         1 2 3 4 5 6 7 8 9 10 11 12\nday of week   1 2 3 4 5\ncommand       /usr/bin/find\n\n$\u003e ./build/install/cron-explainer/bin/cron-explainer \"*/10 * L */1 1-5 /usr/bin/find\"\nminute        0 10 20 30 40 50\nhour          0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23\nday of month  31\nmonth         1 2 3 4 5 6 7 8 9 10 11 12\nday of week   1 2 3 4 5\ncommand       /usr/bin/find\n```\n\n## Error examples\n\n```bash\n$\u003e ./build/install/cron-explainer/bin/cron-explainer */12 0 1,15 */1 1-5\n2017-12-11 00:29:57,984 [main] ERROR org.github.detro.cronExplainer.Main - Malformed input '[*/12, 0, 1,15, */1, 1-5]'. It should be of exactly 6 fields and look something like this: '*/15 0 1,15 * 1-5 /usr/bin/find'\n\n$\u003e ./build/install/cron-explainer/bin/cron-explainer */12 0 1,15 */1 55 /usr/bin/find\nminute        0 12 24 36 48\nhour          0\nday of month  1 15\nmonth         1 2 3 4 5 6 7 8 9 10 11 12\n2017-12-11 00:30:19,087 [main] ERROR org.github.detro.cronExplainer.Main - Error processing field for input '[*/12, 0, 1,15, */1, 55, /usr/bin/find]'\n2017-12-11 00:30:19,088 [main] ERROR org.github.detro.cronExplainer.Main - Invalid single value selected for Field: 55\n```\n\n## What's left to do\n\n* Provide every `CronField` with a complete set of test: right now only `MinuteCronField` is well tested\n* Handle special cron value formats, like `@yearly` or `@monthly`\n* Handle input via `STDIN` instead of just arguments, allowing the command to be _pipelined_  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdetro%2Fcronexplainer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdetro%2Fcronexplainer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdetro%2Fcronexplainer/lists"}