mirror of https://github.com/sipwise/jitsi.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
5.0 KiB
174 lines
5.0 KiB
/*
|
|
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
|
|
*
|
|
* Copyright @ 2015 Atlassian Pty Ltd
|
|
*
|
|
* Licensed 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 org.apache.tools.ant.*;
|
|
|
|
import java.io.*;
|
|
import java.util.*;
|
|
|
|
public class GenerateFelixConfigs
|
|
extends Task
|
|
{
|
|
private File baseConfig;
|
|
|
|
private String os;
|
|
|
|
private File libdir;
|
|
|
|
private File bundledir;
|
|
|
|
private File output;
|
|
|
|
public void setFile(File f)
|
|
{
|
|
baseConfig = f;
|
|
}
|
|
|
|
public void setOs(String os)
|
|
{
|
|
this.os = os;
|
|
}
|
|
|
|
public void setBundledir(File bundledir)
|
|
{
|
|
this.bundledir = bundledir;
|
|
}
|
|
|
|
public void setLibdir(File libdir)
|
|
{
|
|
this.libdir = libdir;
|
|
}
|
|
|
|
public void setOutput(File output)
|
|
{
|
|
this.output = output;
|
|
}
|
|
|
|
public void execute() throws BuildException
|
|
{
|
|
try
|
|
{
|
|
execute0();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
e.printStackTrace();
|
|
throw new BuildException(e);
|
|
}
|
|
}
|
|
|
|
public void execute0() throws BuildException
|
|
{
|
|
Properties pIn = new Properties();
|
|
Properties pOut = new Properties();
|
|
try
|
|
{
|
|
pIn.load(new FileInputStream(baseConfig));
|
|
}
|
|
catch (FileNotFoundException e)
|
|
{
|
|
throw new BuildException(e);
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
throw new BuildException(e);
|
|
}
|
|
|
|
for (Map.Entry<Object, Object> e : pIn.entrySet())
|
|
{
|
|
if (((String) e.getKey()).startsWith("felix.auto.start."))
|
|
{
|
|
String[] refs = ((String) e.getValue()).split("\\s");
|
|
StringBuilder value = new StringBuilder();
|
|
for (String jar : refs)
|
|
{
|
|
if (jar.startsWith("reference:file:sc-bundles/"))
|
|
{
|
|
String name =
|
|
jar.substring("reference:file:sc-bundles/".length());
|
|
if (contains(
|
|
new File(bundledir, "os-specific/" + os).list(),
|
|
name))
|
|
{
|
|
value.append("@URL@/sc-bundles/");
|
|
value.append("os-specific/");
|
|
value.append(os);
|
|
value.append("/");
|
|
value.append(name);
|
|
}
|
|
else if (contains(bundledir.list(), name))
|
|
{
|
|
value.append("@URL@/sc-bundles/");
|
|
value.append(name);
|
|
}
|
|
else
|
|
{
|
|
log("Bundle <" + name + "> not found in <"
|
|
+ bundledir.getName()
|
|
+ ">. Seems like this bundle was ignored.");
|
|
}
|
|
}
|
|
else if (jar.startsWith("reference:file:lib/bundle/"))
|
|
{
|
|
String name =
|
|
jar.substring("reference:file:lib/bundle/".length());
|
|
if (contains(libdir.list(), name))
|
|
{
|
|
value.append("@URL@/lib/bundle/");
|
|
value.append(name);
|
|
}
|
|
else
|
|
{
|
|
log("Lib <" + name + "> not found in <" + libdir
|
|
+ ">. Seems like this lib was ignored.");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
throw new BuildException(
|
|
"unsupported reference prefix: " + jar);
|
|
}
|
|
value.append(" ");
|
|
}
|
|
pOut.put(e.getKey(), value.toString());
|
|
}
|
|
else
|
|
{
|
|
pOut.put(e.getKey(), e.getValue());
|
|
}
|
|
}
|
|
try
|
|
{
|
|
pOut.store(new FileOutputStream(output),
|
|
"--- autogenerated by GenerateFelixConfigs, do not edit! ---");
|
|
}
|
|
catch (FileNotFoundException e)
|
|
{
|
|
throw new BuildException(e);
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
throw new BuildException(e);
|
|
}
|
|
}
|
|
|
|
private boolean contains(String[] files, String file)
|
|
{
|
|
return Arrays.asList(files).contains(file);
|
|
}
|
|
}
|