/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import java.util.stream.Stream import java.util.stream.Collectors mkdir "${rootDir}/plugins" // The ‘file’ argument can be either a string or a file. Stream xmlChildren(file) { new XmlParser().parse(file).children().stream() } Stream subdirs(File dir) { def res = [] dir.eachDir res.&add res.stream() } boolean isComponentEnabled(File componentDir) { File componentFile = file(componentDir.toString() + '/ofbiz-component.xml') componentFile.exists() && new XmlParser().parse(componentFile) .with { it.@enabled in [null, 'true'] } } List activeComponents() { xmlChildren("${rootDir}/framework/base/config/component-load.xml") .map { "${rootDir}/" + it.@'parent-directory' } .flatMap({ dir -> File loader = file(dir + '/component-load.xml') if (loader.exists()) { xmlChildren(loader).map { file dir + '/' + it.@'component-location' } } else { subdirs file(dir) } }) .filter(this.&isComponentEnabled) .collect(Collectors.toList()) + file("${rootDir}/framework/start") } ext { subdirs = this.&subdirs activeComponents = this.&activeComponents.memoize() isComponentEnabled = this.&isComponentEnabled.memoize() }