- why "sudo make"? Wouldn't it be cleaner to separate the compilation part and the installation part, and only run the second one as root (and if you want to install system-wide)?
- what's the license of this code?
By the way, you might want to steal ideas from Taskwarrior, which is very similar (but without the git part).
- You might want to drop object files, backup files and the like from your repo.
- The limitation to 255 chars is weird. Not sure if C was the best tool for this kind of job, but if you're using it, you might want to check getline(3).
- Maybe it would make sense to have a way to store the task db as a visible TODO file, and store it in a human-editable format? That way, people who aren't using tigger can just see and manage tasks with a text editor, and you're just providing convenient hooks and commands to edit the TODO file. It's probably a bad idea to use this name by default because projects tend to have TODO files already, but maybe it would be a useful option.
So if you wanted to add a task without using the command line you just open up the .tigger file in the project directory - maybe I should make this visible to the average user?
I literally only chose C by looking at what Git is written and deciding that I wanted to try going back to C after a few years away from it. I'm curious what you think would have been a better choice and why?
Well, I don't see any good reason to write this in C. The operations performed are very basic, and it only obscures what you're doing. Further, your program relies on Ruby and Grit (that gem itself an onerous dependency) to do things that require neither tool. This seems to be the sort of thing that should either be in pure C if you really want that, or as a standalone script that requires nothing, given its simplicity. And if it were a standalone Python script, for instance, you could easily use the "inspect" module to write some inline source to file. All that Ruby source in a C header is a very odd decision to me.
If I were writing this with the understanding that it were not to work on Windows (which you seem to have decided, upon reading the source), I think I'd just use a simple shell script.
I will add that there is no good reason at all to require an "init" command, as that could be a simple get-or-set method when another command is used.
Viewing the commit history, you need to be far more careful with how you use git and how you define your .gitignore.
That's a good idea to separate the installation from compilation. This is my first command-line utility, and I wrote it pretty quickly so I haven't thought about a few things like that, nor have I thought about the license.
Is there a good way to choose between the different open-source licenses?
I saw taskwarrior in another comment and I'll definitely check it out. Thanks for the feedback!
- why "sudo make"? Wouldn't it be cleaner to separate the compilation part and the installation part, and only run the second one as root (and if you want to install system-wide)?
- what's the license of this code?
By the way, you might want to steal ideas from Taskwarrior, which is very similar (but without the git part).