On Wed, Apr 13, 2016 at 05:55:22PM +0200, stepharo wrote:
> > 
> > I'd be happy to, thanks.  Please let me know what I need to do to get
> > involved (and remember that this is my hobby and I don't get as much
> > time as I'd like, so my responses won't always be as fast as we'd like).
> 
> - start to see if you can write the scripts you want.
> - identify missing functionality
> - use OSSubprocess

Sure...

While the existing "st" handler has some uses, I think it will be a bit
limited as I expect that most of the scripts I would write would end up
being:

1. Load required packages
2. Maybe do some initialisation
3. Send (basically) a single message to start the real work

Which means that I have to maintain a separate file that adds little
value.

As implied above, I'd like the "script" to be distributable as either
one or two files and take advantage of:

* OO design
* Pharo's excellent development environment
* SUnit

I've hacked together a quick framework in which a "script" is actually a
a Monticello package.  The package name is supplied on the command line
along with some pre-defined options and anything else required by the
script.  The package is loaded and a message sent to the class of the
same name.  E.g.:

pharo script.image cliscript WorkedHours Hours.xlsx

would load ConfigurationOfWorkedHours, load the package, and
send WorkedHours>>runWithHandler: theCliHandler.  (The example script
then reads the Hours spreadsheet and calculates the total hours worked).

Current help text...

> ./pharo script.image cliscript --help
CliScript enables running "Monticello" scripts.

The script is identified by its package name.  CliScript looks for a
configuration package with the same name in the local package cache,
loads it, and sends the runWithHandler: message to the class with the
same name.

Command line parameters:

  packageName  The package to load and execute.

Command line options: 

  --debug  Halt at the start of the message
  --log-transcript  Redirect transcript output to transcript.log



I haven't had to use OSSubprocess yet, next steps include:

* Read XSLX spreadsheets instead of having to export to CSV.
  The script mostly does date and time calculations, I need to confirm
  that they are working properly in Tabular.
* Add logging (I haven't looked for any logging capability yet).
* Ideally, implement the ODS support in the Tabular package (stretch
  goal :-)).


Thanks!
Alistair

Reply via email to