{"id":13338093,"url":"https://gitlab.com/Narrat/gitodoc","last_synced_at":"2025-03-11T08:32:30.623Z","repository":{"id":58161209,"uuid":"2004860","full_name":"Narrat/gitodoc","owner":"Narrat","description":"Kinda a clone of [gitodo](https://www.uninformativ.de/git/gitodo/file/README.html) written in C.\r\nGitodoc is a ToDo manager with git as its backend.","archived":false,"fork":false,"pushed_at":null,"size":null,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":null,"default_branch":"master","last_synced_at":"2024-10-23T20:12:25.036Z","etag":null,"topics":["git","manager","todo"],"latest_commit_sha":null,"homepage":null,"language":null,"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":null,"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}},"created_at":"2016-11-14T02:27:28.175Z","updated_at":"2024-07-03T19:54:05.186Z","dependencies_parsed_at":"2022-09-15T17:50:23.065Z","dependency_job_id":null,"html_url":"https://gitlab.com/Narrat/gitodoc","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/Narrat%2Fgitodoc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/Narrat%2Fgitodoc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/Narrat%2Fgitodoc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/Narrat%2Fgitodoc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners/Narrat","download_url":"https://gitlab.com/Narrat/gitodoc/-/archive/master/gitodoc-master.zip","host":{"name":"gitlab.com","url":"https://gitlab.com","kind":"gitlab","repositories_count":4518026,"owners_count":6814,"icon_url":"https://github.com/gitlab.png","version":null,"created_at":"2022-05-30T11:31:42.605Z","updated_at":"2024-07-18T11:24:13.055Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners"}},"keywords":["git","manager","todo"],"created_at":"2024-07-29T19:15:29.988Z","updated_at":"2025-03-11T08:32:30.611Z","avatar_url":null,"language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# gitodoc(lone)\n\nA trial to replicate [gitodo](http://www.uninformativ.de/git/gitodo/file/README.html) in C instead of Ruby.\nDoing it just for the cause to learn a bit more about programming in C.\nI needed a project and since I kinda \"dislike\" the fact, that I only have ruby installed because of gitodo...  \nWell not really bothering, as a Ruby Installation isn't requiring that amount of space on a disk, and I really like gitodo.  \nBut it makes a good reason to start something :D\n\n## What is it?\ngitodoc is a personal task manager for your command line.\nHere's how you should think about the program:\n* An important task comes up, but you don't have to do it right now.\n* You write that task down and throw it on a big pile: You create a new gitodoc item.\n* While doing so, you tell gitodoc how important your task is. Does it have a deadline? Is it more important than other tasks? Or is it totally unimportant and you don't want it to show up for the next couple of months?\n* gitodoc can then sort your tasks for you and what you do with that information is up to you.\n\nIt also offers some options for scripting.\nYou could setup `cron jobs` or `systemd timer` which sends you e-mails about upcoming tasks and you can integrate it with bars like the one of dwm.\n\ngitodoc can be used with a little tool called `highcal`:\nIt's much like cal(1), but it uses colors and can highlight days.  \nThere it either a version written in [Ruby](http://www.uninformativ.de/git/gitodo/file/highcal.html) or in [C](http://www.uninformativ.de/git/highcal/file/README.html)\n\n## Differences with gitodo\n\nMain difference is caused by the usage of getopt for option parsing.\nIt only allows one argument per option, so multiple assignments aren't possible.\nFor example, if more than one item should be deleted, the deletion option needs to supplied twice, as regex isn't allowed for write operations.  \nAnother difference are optional arguments for options.\nThose need to come directly after the option with no whitespace allowed inbetween.\nExample: `-n3` is good, `-n 3` is not.\nSee [this](https://stackoverflow.com/questions/26431682/why-cant-i-have-a-space-between-option-and-optional-argument-using-getopt) for an explanation.  \n\nFurthermore with `Ruby` it made no difference if it was called as an argument or an option.\nEither variants of `--list` like `list` or in shortform `l` were working.  \n\nThe raw output (`--raw/-r`) dropped the column about timetype.\nNot really clear what it meant and seemed to be there for compatibility reasons.\n\nThere are currently no language files for editors included, although it would be trivial to port the one for `vi/m`.\n\nAnd finally it should be noted that there may be differences in usage because of partial or missing implementations of various features from `gitodo`.\n\n## Dependencies and Installation\n`gitodoc` is written in C and therefore requires a respective toolchain.\nIt can be compiled with either [GCC](https://gcc.gnu.org/) or [Clang/LLVM](https://clang.llvm.org/) if the following requirements are satisfied:\n\n * glibc (2.25+)\n * libgit2 (0.20.0+)\n * pcre2 (10.40+)\n\nFor ease of compilation one can either use `make` (via the `Makefile`) or `Meson`.\n\n### Makefile procedure:\n```shell\n$ cd path/to/src/\n$ make\n```\nThe `Makefile` doesn't have a `install` routine, therefore the classical `make install` won't work.\nAfter it successfully compiled the files can be placed where one wants them to be.\n\n### Meson procedure:\n```shell\n$ meson setup --prefix=/usr --buildtype=plain [source] builddir\n$ meson compile -C builddir\n```\nand optionally\n```shell\n# meson install -C builddir --destdir \"$pkgdir\"\n```\n\n## Running\nBefore you're using `gitodoc` for the very first time, you must initialize your TODO repository:\n```shell\n$ cd \"$XDG_DATA_HOME\"\n$ mkdir gitodoc.items\n$ git init gitodoc.items\n```\nAs with typical `git repositories` this can be shared with other machines.\n\nAfter the prerequisit is satiesfied simply run the program on your terminal of choice and from any directory:\n```shell \n$ gitodoc\n```\nRefer to the manpage for all options.\nThe manpage also explains how you can combine `gitodoc` with `highcal`.\n\n## ToDo\n\nPreviously this section was used to inform about features still not reimplemented.\nNow it tries to list the stuff where `gitodoc` differs and should be adjusted.\n* Restrict regular expressions (`-b/--body` searches whole file, the rest only subject)\n* Special identifiers for options (dead, close, today, week)\n* Write operations capable of regex\n* Automatic maintenance (to recognize manually emptied files)?\n* Language files for editors?\n* Rework usage of getopt\n    * optional arguments are kinda frowned upon\n    * switch to something different? Like [cargs](https://github.com/likle/cargs)?\n\nAnd in general one can get an overview from the issues as I try to keep them updated.\n\n## Bugs and such\nAs I'm not a programmer by profession, but interest, there will be parts in the code where others will scratch their head.  \nOr find bugs.  \nReports on such misbehavings and commentary on what could be done better are greatly appreciated and welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2FNarrat%2Fgitodoc","html_url":"https://awesome.ecosyste.ms/projects/gitlab.com%2FNarrat%2Fgitodoc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2FNarrat%2Fgitodoc/lists"}