It's been many months since wajig was released, but this was about as good as any since I probably did far more work on it than on any other release so far:
-
The most user-visible change is that I changed the UI to feel more standard/natural, where each of the wajig COMMANDS are 1st-class citizens. Let me give an example of user wanting to install a package named nautilus, but avoid installing its Recommends dependencies:
# ole wajig —norecommends INSTALL nautilus # new wajig INSTALL —norecommends nautilusI call this natural because it makes more sense to have the
--norecommendscommand line option to be specified after the (wajig) subcommand it modifies. Also, the way it was implemented previously, the option would silently be ignored if it was used in a case where it was irrelevant. That's not good, and it links to the next user-visible change. -
There is less magic and more strictness. Previously, these commands resulted in the same outcome:
wajig REMOVEORPHANS wajig REMOVE-ORPHANS wajig R-____EMOVE-ORPH+++-___AN_SWhat wajig did was simply sanitise the commands, getting rid of the junk. Well, I don't like that, but since I didn't want to break people's commands/aliases/scripts I actually tried to preserve that functionality, but argparse didn't let me do that, and messing around with
sys.argvbefore argparse jumped in was an error-prone mess, which links us to the next change, this time behind-the-scenes. -
I replaced the archaic
getoptCLI parser with a far more powerfulargparse. This change alone, when I truly embraced it, using its subcommand methods (see point 1 above), resulting in a ridiculous work that involved mainly unfun work and resulted in changing (adding and removing) thousands of lines code. -
The output of command
wajig COMMANDSis now generated dynamically, instead of simply being read from a separate file. Advantage is that it should now remain more up-to-date. -
The usage info for each COMMAND was store on its own file, and the aliases were symbolic links to them. Now that's ugly, but I did it that was some time ago because I could not think of a better, quick way. The ugly solution is simple, but it added over a 100 files in user machines, which is just bad design. Well, modern Linux-based package management makes such invisible to all but the most avid/curious users, but I never liked it anyways. Now, all of that help info is auto-generated by
argparse(you can imagine I'm a big fan of that module by now). -
There's bunch of other changes, though most was code stuff. As for the user-visible stuff, a few COMMANDS were removed, a few options added/removed. Here's 'all' the gory details.