I found myself missing mozharness at various points over the past 10 months. Several things kept me from using it at my then-new job:
Even though we had kept
mozharness.base.*largely non-Mozilla-specific, the mozharness clone-and-run model meant there was a lot of Mozilla-specific code that came along with it.
- The monolithic BaseScript + mixins model had a very steep barrier of entry. There's a significant learning curve, and scripts need to be fully ported to mozharness to take advantage of its features.
I had wanted to address these issues for years, but never had time to devote fully to harness-specific development.
Now I do.
Introducing scriptharness 0.1.0:
Release Notes: http://python-scriptharness.readthedocs.
The release notes highlight differences between scriptharness and mozharness, as well as known issues.
- The release notes highlight differences between scriptharness and mozharness, as well as known issues.
Read the Docs: http://python-scriptharness.readthedocs.
I'm proud of this. I'm also aware it's not mature [yet], and it's currently missing some functionality.
There are some ideas I'd love to explore before 1.0.0:
multiple Script objects with threading and separate logs
Config Type Definitions
rethink how to enable/disable actions. I could keep mozharness'
--add-action clobber --no-uploadstructure, or play with
--actions +clobber -uploador something. (The - before the upload in the latter might cause argparse issues?)
also, explore Maven-style actions (all actions before target action are enabled) and actions with dependencies on other actions. I prefer keeping each action independent, idempotent, and individually targetable, but I can see someone wanting the other behavior for certain scripts.
I've already split out strings from code in a number of places, for unit testing. I'm curious what it would take to make scriptharness localizable, and if there would be demand for it.
ahal suggested adding structured logging; I'd love to investigate that.
I already have 0.2.0 on the brain. I'd love any feedback or patches.