blowdryer icon indicating copy to clipboard operation
blowdryer copied to clipboard

declarative script plugin dependencies

Open nedtwigg opened this issue 6 years ago • 0 comments

It is common that script plugins will need to be applied in a specific order. It would be nice if these scripts gave nice declarative error messages if this was violated. Here is a draft API:

/**
  * Throws an error if `('base/java')` hasn't already been applied.
  * (Must be called only from within a script plugin.)
  */
void 干.requires('base/java') { ... }

/**
  * Throws an error if `('base/scala')` has been applied,
  * or if it is applied in the future.
  * (Must be called only from within a script plugin.)
  */
void 干.mutuallyExclusiveWith('base/scala') { ... }

/**
  * If `base/java` has already been applied, or is never applied, then this is fine.
  * But if `base/java` is ever applied in the future, then there will be an error,
  * because this plugin must run after 'base/java'.
  * (Must be called only from within a script plugin.)
  */
void 干.mustRunAfter('base/java') { ... }

void 干.mustRunBefore('base/java') { ... }

nedtwigg avatar Jan 10 '20 03:01 nedtwigg