A simple class, whose only purpose is to house static strings referencing the Jervis wiki, to be used as helpful hints when throwing exceptions.
To run this example, clone Jervis and execute ./gradlew console to bring up a Groovy Console with the classpath set up.
When overriding the URLs you must override the getter method using meta programming. The following is an example of overriding the LIFECYCLES_SPEC.
import net.gleske.jervis.exceptions.WikiPages
WikiPages.metaClass.static.getLifecyclesSpec = {-> 'https://wiki.example.com/lifecycle_explanation.html'}
import net.gleske.jervis.lang.LifecycleValidator
LifecycleValidator lifecycles = new LifecycleValidator()
lifecycles.loadYamlString('''
ruby:
defaultKey: rake1
rake1:
fileExistsCondition: Gemfile.lock
fallbackKey: rake2
env: export BUNDLE_GEMFILE=$PWD/Gemfile
install: bundle install --jobs=3 --retry=3 --deployment
script: bundle exec rake
rake2:
env: export BUNDLE_GEMFILE=$PWD/Gemfile
install: bundle install --jobs=3 --retry=3
script: bundle exec rake
''')
lifecycles.validate()
The important part of the above example is the following excerpt.
import net.gleske.jervis.exceptions.WikiPages
WikiPages.metaClass.static.getLifecyclesSpec = {-> 'https://wiki.example.com/lifecycle_explanation.html'}
import net.gleske.jervis.lang.LifecycleValidator
What is important is that we modified the WikiPages class
before we imported the LifecycleValidator class.
This is important because the class can't be statically modified from within the
LifecycleValidator after it is imported.
Here's an example error message from the above sample.
net.gleske.jervis.exceptions.LifecycleMissingKeyException: ERROR: Lifecycle validation failed. Missing key: ruby.friendlyName See wiki page: https://wiki.example.com/lifecycle_explanation.html at net.gleske.jervis.lang.LifecycleValidator$_validate_closure1.doCall(LifecycleValidator.groovy:118) at net.gleske.jervis.lang.LifecycleValidator.validate(LifecycleValidator.groovy:112) at net.gleske.jervis.lang.LifecycleValidator$validate$0.call(Unknown Source)
Modifiers | Name | Description |
---|---|---|
static String |
LIFECYCLES_SPEC |
A static reference to the lifecycles file spec wiki page. |
static String |
PIPELINE_SUPPORT |
A static reference to the pipeline support wiki page. |
static String |
PLATFORMS_SPEC |
A static reference to the platforms file spec wiki page. |
static String |
SECURE_SECRETS |
A static reference to the secure secrets in repositories wiki page. |
static String |
SUPPORTED_LANGUAGES |
A static reference to the supported languages wiki page. |
static String |
SUPPORTED_TOOLS |
A static reference to the supported tools wiki page. |
static String |
TOOLCHAINS_SPEC |
A static reference to the toolchains file spec wiki page. |
A static reference to the lifecycles file spec wiki page.
A static reference to the pipeline support wiki page.
A static reference to the platforms file spec wiki page.
A static reference to the secure secrets in repositories wiki page.
A static reference to the supported languages wiki page.
A static reference to the supported tools wiki page.
A static reference to the toolchains file spec wiki page.