{"id":24490255,"url":"https://github.com/cptpiepmatz/timetable-gen","last_synced_at":"2025-03-15T01:27:06.274Z","repository":{"id":190949843,"uuid":"683537463","full_name":"cptpiepmatz/timetable-gen","owner":"cptpiepmatz","description":"📅 A command-line tool to generate a neatly organized, configurable timetable PDF.","archived":false,"fork":false,"pushed_at":"2024-12-08T18:08:48.000Z","size":1246,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-08T20:57:03.070Z","etag":null,"topics":["cli","rust","timetable","timetable-generator"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cptpiepmatz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-08-26T22:17:42.000Z","updated_at":"2024-12-08T18:08:52.000Z","dependencies_parsed_at":"2024-08-07T20:47:00.557Z","dependency_job_id":"35e3c643-b345-46a6-b045-c74cc4bd1e51","html_url":"https://github.com/cptpiepmatz/timetable-gen","commit_stats":null,"previous_names":["cptpiepmatz/timetable-gen"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cptpiepmatz%2Ftimetable-gen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cptpiepmatz%2Ftimetable-gen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cptpiepmatz%2Ftimetable-gen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cptpiepmatz%2Ftimetable-gen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cptpiepmatz","download_url":"https://codeload.github.com/cptpiepmatz/timetable-gen/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243670433,"owners_count":20328475,"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":["cli","rust","timetable","timetable-generator"],"created_at":"2025-01-21T17:17:40.000Z","updated_at":"2025-03-15T01:27:06.254Z","avatar_url":"https://github.com/cptpiepmatz.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003etimetable-gen\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003cb\u003e\n    📅 A command-line tool to generate a neatly organized, configurable \n    timetable PDF.\n  \u003c/b\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n  [![Version](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fcptpiepmatz%2Ftimetable-gen%2Frefs%2Fheads%2Fmain%2FCargo.toml\u0026query=package.version\u0026style=for-the-badge\u0026label=version)](https://github.com/cptpiepmatz/timetable-gen)\n  [![License](https://img.shields.io/crates/l/nu-plugin-highlight?style=for-the-badge)](https://github.com/cptpiepmatz/nu-plugin-highlight/blob/main/LICENSE)\n\n\u003c/div\u003e\n\n\n## About\n`timetable-gen` is a command-line tool designed to simplify the creation of \ntimetables. \nIt takes a configuration file in TOML format as input, processes the given data, \nand outputs a neatly organized timetable in PDF format. \nThe output PDF will be in A4 landscape orientation, with the classes matrix \nfitted as needed according to your configuration file.\n\n![sample timetable](example/timetable.svg)\n\n## Installation\n### Pre-built Binary\nPre-built binaries for `timetable-gen` can be found on the \n[Releases](https://github.com/cptpiepmatz/timetable-gen/releases) page of the \nrepository. \nDownload the appropriate binary for your operating system. \nYou can run the binary directly without any dependencies.\n\n### Building from Source\nTo build `timetable-gen` from source, you need to have Rust installed on your \nmachine. \nIf you don't have Rust installed, you can install it via \n[rustup](https://rustup.rs).\n\nOnce you have Rust installed, you can build `timetable-gen` by cloning the \nrepository and running `cargo build --release`:\n\n```shell\ngit clone https://github.com/cptpiepmatz/timetable-gen.git\ncd timetable-gen\ncargo build --release\n```\n\nThe built binary can be found in the `target/release` directory and can be run \ndirectly without any dependencies.\n\n## Usage\nThe `timetable-gen` tool is controlled via command-line arguments. \nThe basic usage is as follows:\n\n```shell\ntimetable-gen [OPTIONS]\n```\n\n### Arguments\n- `-c, --config \u003cFile\u003e`:\n  The path to the TOML configuration file required to generate the timetable. \n  Defaults to `timetable.toml`.\n\n- `-o, --out \u003cFile\u003e`:\n  The path where the output PDF should be generated. \n  Defaults to `timetable.pdf`.\n\nFor example:\n```shell\ntimetable-gen --config path/to/config.toml --out path/to/timetable.pdf\n```\n\n## Configuration\nThe configuration of `timetable-gen` is done through a TOML file. \nHere's the structure of the configuration file:\n\n```toml\nclass_name = \"0x\"\nclass_room = \"RN\"\nclass_teacher = \"Class Teacher\"\n\ntitle = \"School Year\"\nsubtitle = \"Semester\"\n\nschool_name = \"School Name\"\nschool_address = \"School Address\"\n\nclass_durations = [\n    \"07:55 - 08:40\",\n    ...\n    \"16:05 - 16:50\"\n]\n\n[day_identifiers]\nmonday = \"Mo\"\n...\n\n[[monday]]\nclass = \"Subject 1\"\nteacher = \"Teacher 1\"\nroom = \"Room 1\"\n\n[[monday]]\nclass = \"Subject 2\"\nteacher = true\nroom = true\n...\n```\n\n- `class_name`: The name of the class.\n- `class_room`: The room code for the classroom.\n- `class_teacher`: The name for the class teacher.\n- `title`: The title of the timetable.\n- `subtitle`: The subtitle of the timetable.\n- `school_name`: The name of the school.\n- `school_address`: The address of the school.\n- `class_durations`: The duration of each class throughout the day.\n- `day_identifiers`: The abbreviations for each day of the week.\n- `monday`, `tuesday`, ..., `sunday`: \n  The subjects, teachers, and rooms for each day of the week. \n  Each day is represented as a list of `ClassEntry` objects, all fields are \n  optional.\n  For `teacher` and `room` the values may also be `true`, to use the class \n  teacher/room.\n  - `class`: The subject being taught.\n  - `teacher`: The teacher teaching the subject.\n  - `room`: The room in which the class is being held.\n\n### Example Configuration\nA complete example of a configuration file can be found in the repository:\n[`example/timetable.toml`](example/timetable.toml).\n\nIt is recommended to name your own configuration file also `timetable.toml`, \nas this is the default file aht the CLI will look for.\n\n\n## License\n`timetable-gen` is licensed under the [MIT License](LICENSE).\n\nThe LiberationSans font, used in this project, is licensed under its own \nlicense. \nThe font files and accompanying license can be found in the `fonts` directory.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcptpiepmatz%2Ftimetable-gen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcptpiepmatz%2Ftimetable-gen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcptpiepmatz%2Ftimetable-gen/lists"}