# psupdsh - a ports tool



## rmoe (Oct 26, 2014)

I'm pleased to announce a major upgrade to psupdsh to v. 1.2.0.

Based on some ever again upcoming problem that I myself have also experienced due to being human and sometimes lazy, I have come to the conclusion to work on a solution a while ago.

Short introduction:

psupdsh runs `portsnap fetch update` (configurable) and then shows you all new UPDATING entries so you don't forget (like myself sometimes) to dutifully look at UPDATING. As UPDATING changes can be quite massive and I wanted a _comfortable_ way to look at it, psupdsh offers to separate entries by lines and/or to show them one by one, one after another.

By default psupdsh shows all entries since the last portsnap update. Sometimes, however, one needs to look for older entries or for a certain timespan. This is what the --date option of psupdsh offers to do.

NEW:

Finally, and quite much based on threads here talking about certain problems again and again, psupdsh also allows to search for certain ports like "ruby" or "ruby19". Of course, this can be combined with the --date option to perform searches like "show me all UPDATING entries about ruby since May 2012". psupdsh can, of course, also offer its services without running portsnap thanks to an option, which BTW is auto-activated when you search and/or do date-based lookups.

And there is another very convenient feature that should, however, be used with some reasoning and care (and experience), namely the option to have your favourite upgrader (like portmaster or portupgrade) be run _after_ looking at new UPDATING entries. (Please take that "after" seriously! Ports quite often need different options.) I mention this feature as the last one because on one hand it makes psupdsh a very convenient all-in-one solution but on the other hand one should know one's ways in FreeBSD ports and, again, one should have carefully read any new UPDATING entries.

psupdsh has been tested quite a while and has been refactored using a state machine verifier. There have not been any known bugs since. v.1.0.

There is also a man page for psupdsh showing quite an assortment of usage examples, from the very simple to the more complicated ones. Don't worry, though, as psupdsh has been designed with very reasonable defaults which allows probably 90% of its users to simply run it without any parameters and have it do the right thing.

It's, of course, free using the same license FreeBSD uses and it needs only basic Python (no add-ons or other ports needed).

You can find psupdsh on my private project page at http://rmoe.anukis.de/psupdsh.html

P.S. I'm, of course, available if there are any questions or problems.

Enjoy.


----------



## fonz (Nov 9, 2014)

rmoe said:


> psupdsh can, of course, also offer its services without running portsnap thanks to an option, which BTW is auto-activated when you search and/or do date-based lookups.


Sounds great and I'll be sure to check it out   However, rather than hardwiring portsnap, might it be possible to have it simply use `make update` so that the exact updating method (portsnap, SVN, Git, ...) is transparent to the user?


----------



## rmoe (Nov 9, 2014)

Yes that would certainly be possible. In fact, its actually _is_ possible right now,  but there are buts...

I have developed psupdsh expressedly to work with portsnap. The reason being that I use to run portsnap on a daily basis and occasionally forget (or am too lazy) to look at UPDATING.

Unfortunately the date logic is a little complex and so one can not simply put psupdsh into a shell script together with, say, CVS.

Let me think about it. I have a solution for you in mind (to basically call any updater script/program) from psupdsh. Right now, however, I'm concentrated and working on another utility that addresses another (unrelated but almost certainly even wider spread) problem plaguing particular developers.

So, kindly give me some time and you'll get your "universal updater capable" psupdsh, OK.


----------



## fonz (Nov 9, 2014)

rmoe said:


> So, kindly give me some time and you'll get your "universal updater capable" psupdsh, OK.


Of course; there's no rush


----------

