1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-12 10:55:20 +02:00

Fix identations

This commit is contained in:
Marcus Holl 2018-11-05 09:51:28 +01:00
parent 59bf6b0545
commit 30569102da

View File

@ -84,231 +84,227 @@ class TemplateHelper {
//
class Helper {
static getConfigHelper(classLoader, roots, script) {
static getConfigHelper(classLoader, roots, script) {
def compilerConfig = new CompilerConfiguration()
compilerConfig.setClasspathList( roots )
def compilerConfig = new CompilerConfiguration()
compilerConfig.setClasspathList( roots )
new GroovyClassLoader(classLoader, compilerConfig, true)
.parseClass(new File('src/com/sap/piper/ConfigurationHelper.groovy'))
.newInstance(script, [:])
}
static getPrepareDefaultValuesStep(def gse) {
def prepareDefaultValuesStep = gse.createScript('prepareDefaultValues.groovy', new Binding())
prepareDefaultValuesStep.metaClass.handlePipelineStepErrors {
m, c -> c()
}
prepareDefaultValuesStep.metaClass.libraryResource {
f -> new File("resources/${f}").text
}
prepareDefaultValuesStep.metaClass.readYaml {
m -> new Yaml().load(m.text)
}
prepareDefaultValuesStep
}
static getDummyScript(def prepareDefaultValuesStep, def stepName) {
def _prepareDefaultValuesStep = prepareDefaultValuesStep
def _stepName = stepName
return new Script() {
def STEP_NAME = _stepName
def prepareDefaultValues() {
_prepareDefaultValuesStep()
new GroovyClassLoader(classLoader, compilerConfig, true)
.parseClass(new File('src/com/sap/piper/ConfigurationHelper.groovy'))
.newInstance(script, [:])
}
def run() {
throw new UnsupportedOperationException()
}
}
}
static trim(List lines) {
static getPrepareDefaultValuesStep(def gse) {
removeLeadingEmptyLines(
removeLeadingEmptyLines(lines.reverse())
.reverse())
}
def prepareDefaultValuesStep = gse.createScript('prepareDefaultValues.groovy', new Binding())
private static removeLeadingEmptyLines(lines) {
prepareDefaultValuesStep.metaClass.handlePipelineStepErrors {
m, c -> c()
}
prepareDefaultValuesStep.metaClass.libraryResource {
f -> new File("resources/${f}").text
}
prepareDefaultValuesStep.metaClass.readYaml {
m -> new Yaml().load(m.text)
}
def _lines = new ArrayList(lines), trimmed = []
boolean empty = true
_lines.each() {
if(empty && ! it.trim()) return
empty = false
trimmed << it
prepareDefaultValuesStep
}
trimmed
}
static getDummyScript(def prepareDefaultValuesStep, def stepName) {
private static normalize(Set p) {
def _prepareDefaultValuesStep = prepareDefaultValuesStep
def _stepName = stepName
def normalized = [] as Set
return new Script() {
def interim = [:]
p.each {
def parts = it.split('/') as List
_normalize(parts, interim)
}
def STEP_NAME = _stepName
interim.each { k, v -> flatten (normalized, k, v) }
normalized
}
private static void _normalize(List parts, Map interim) {
if( parts.size >= 1) {
if( ! interim[parts.head()]) interim[parts.head()] = [:]
_normalize(parts.tail(), interim[parts.head()])
}
}
private static flatten(Set flat, def key, Map interim) {
if( ! interim ) flat << (key as String)
interim.each { k, v ->
def _key = "${key}/${k}"
if( v && v.size() > 0 )
flatten(flat, _key, v)
else {
flat << (_key as String)
}
}
}
static void scanDocu(File f, Map step) {
boolean docu = false,
value = false,
docuEnd = false
def docuLines = [],
valueLines = []
f.eachLine {
line ->
if(docuEnd) {
docuEnd = false
if(isHeader(line)) {
def _docu = []
docuLines.each { _docu << it }
_docu = Helper.trim(_docu)
step.description = _docu*.trim().join('\n')
} else {
def param = retrieveParameterName(line)
if(!param) {
throw new RuntimeException('Cannot retrieve parameter for a comment')
def prepareDefaultValues() {
_prepareDefaultValuesStep()
}
if(step.parameters[param].docu ||
step.parameters[param].value)
System.err << "[WARNING] There is already some documentation for parameter '${param}. Is this parameter documented twice?'\n"
def run() {
throw new UnsupportedOperationException()
}
}
}
def _docu = [], _value = []
docuLines.each { _docu << it }
valueLines.each { _value << it}
step.parameters[param].docu = _docu*.trim().join(' ').trim()
step.parameters[param].value = _value*.trim().join(' ').trim()
}
docuLines.clear()
valueLines.clear()
}
static trim(List lines) {
if( line.trim() ==~ /^\/\*\*/ ) {
docu = true
}
removeLeadingEmptyLines(
removeLeadingEmptyLines(lines.reverse())
.reverse())
}
if(docu) {
def _line = line
_line = _line.replaceAll('^\\s*', '') // leading white spaces
if(_line.startsWith('/**')) _line = _line.replaceAll('^\\/\\*\\*', '') // start comment
if(_line.startsWith('*/')) _line = _line.replaceAll('^\\*/', '') // end comment
if(_line.startsWith('*')) _line = _line.replaceAll('^\\*', '') // continue comment
if(_line ==~ /.*@possibleValues.*/) {
value = true
private static removeLeadingEmptyLines(lines) {
def _lines = new ArrayList(lines), trimmed = []
boolean empty = true
_lines.each() {
if(empty && ! it.trim()) return
empty = false
trimmed << it
}
if(value) {
if(_line) {
_line = (_line =~ /.*@possibleValues\s*?(.*)/)[0][1]
valueLines << _line
}
} else {
docuLines << _line.trim()
trimmed
}
private static normalize(Set p) {
def normalized = [] as Set
def interim = [:]
p.each {
def parts = it.split('/') as List
_normalize(parts, interim)
}
}
if(docu && line.trim() ==~ /^\*\//) {
docu = false
value = false
docuEnd = true
}
interim.each { k, v -> flatten (normalized, k, v) }
normalized
}
}
private static isHeader(line) {
Matcher headerMatcher = (line =~ /(def|void)\s*call\s*\(/ )
return headerMatcher.size() == 1 && headerMatcher[0].size() == 2
}
private static retrieveParameterName(line) {
Matcher m = (line =~ /.*'(.*)'.*/)
if(m.size() == 1 && m[0].size() == 2)
return m[0][1]
return null
}
static getScopedParameters(def script) {
def params = [:]
params.put('STEP_CONFIG', script.STEP_CONFIG_KEYS ?: [])
params.put('GENERAL_CONFIG', script.GENERAL_CONFIG_KEYS ?: [] )
params.put('PARAMS', script.PARAMETER_KEYS ?: [] )
return params
}
static getRequiredParameters(File f) {
def params = [] as Set
f.eachLine {
line ->
if( line ==~ /.*withMandatoryProperty.*/ ) {
def param = (line =~ /.*withMandatoryProperty\('(.*)'/)[0][1]
params << param
}
private static void _normalize(List parts, Map interim) {
if( parts.size >= 1) {
if( ! interim[parts.head()]) interim[parts.head()] = [:]
_normalize(parts.tail(), interim[parts.head()])
}
}
return params
}
static getValue(Map config, def pPath) {
def p =config[pPath.head()]
if(pPath.size() == 1) return p // there is no tail
if(p in Map) getValue(p, pPath.tail())
else return p
}
private static flatten(Set flat, def key, Map interim) {
if( ! interim ) flat << (key as String)
interim.each { k, v ->
def _key = "${key}/${k}"
if( v && v.size() > 0 )
flatten(flat, _key, v)
else
flat << (_key as String)
}
}
static void scanDocu(File f, Map step) {
boolean docu = false,
value = false,
docuEnd = false
def docuLines = [], valueLines = []
f.eachLine {
line ->
if(docuEnd) {
docuEnd = false
if(isHeader(line)) {
def _docu = []
docuLines.each { _docu << it }
_docu = Helper.trim(_docu)
step.description = _docu*.trim().join('\n')
} else {
def param = retrieveParameterName(line)
if(!param) {
throw new RuntimeException('Cannot retrieve parameter for a comment')
}
if(step.parameters[param].docu || step.parameters[param].value)
System.err << "[WARNING] There is already some documentation for parameter '${param}. Is this parameter documented twice?'\n"
def _docu = [], _value = []
docuLines.each { _docu << it }
valueLines.each { _value << it}
step.parameters[param].docu = _docu*.trim().join(' ').trim()
step.parameters[param].value = _value*.trim().join(' ').trim()
}
docuLines.clear()
valueLines.clear()
}
if( line.trim() ==~ /^\/\*\*/ ) {
docu = true
}
if(docu) {
def _line = line
_line = _line.replaceAll('^\\s*', '') // leading white spaces
if(_line.startsWith('/**')) _line = _line.replaceAll('^\\/\\*\\*', '') // start comment
if(_line.startsWith('*/')) _line = _line.replaceAll('^\\*/', '') // end comment
if(_line.startsWith('*')) _line = _line.replaceAll('^\\*', '') // continue comment
if(_line ==~ /.*@possibleValues.*/) {
value = true
}
if(value) {
if(_line) {
_line = (_line =~ /.*@possibleValues\s*?(.*)/)[0][1]
valueLines << _line
}
} else {
docuLines << _line.trim()
}
}
if(docu && line.trim() ==~ /^\*\//) {
docu = false
value = false
docuEnd = true
}
}
}
private static isHeader(line) {
Matcher headerMatcher = (line =~ /(def|void)\s*call\s*\(/ )
return headerMatcher.size() == 1 && headerMatcher[0].size() == 2
}
private static retrieveParameterName(line) {
Matcher m = (line =~ /.*'(.*)'.*/)
if(m.size() == 1 && m[0].size() == 2)
return m[0][1]
return null
}
static getScopedParameters(def script) {
def params = [:]
params.put('STEP_CONFIG', script.STEP_CONFIG_KEYS ?: [])
params.put('GENERAL_CONFIG', script.GENERAL_CONFIG_KEYS ?: [] )
params.put('PARAMS', script.PARAMETER_KEYS ?: [] )
return params
}
static getRequiredParameters(File f) {
def params = [] as Set
f.eachLine {
line ->
if( line ==~ /.*withMandatoryProperty.*/ ) {
def param = (line =~ /.*withMandatoryProperty\('(.*)'/)[0][1]
params << param
}
}
return params
}
static getValue(Map config, def pPath) {
def p =config[pPath.head()]
if(pPath.size() == 1) return p // there is no tail
if(p in Map) getValue(p, pPath.tail())
else return p
}
}
roots = [