<?xml version="1.0">
<!--
  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.
-->
<ivysettings>
  <properties file="${ivy.settings.dir}/build.properties"/>
  <caches defaultCacheDir="${ivy.settings.dir}/../ivy-cache" />

  <settings defaultResolver="shared" circularDependencyStrategy="error" />

  <classpath file="${ivy.settings.dir}/../../../lib/sigil-ivy-plugin.jar" />
  <typedef name="sigil-parser" classname="org.cauldron.bld.ivy.SigilParser" />
  <typedef name="sigil-resolver" classname="org.cauldron.bld.ivy.SigilResolver" />

  <parsers>
    <sigil-parser quiet="true"/>
  </parsers>

  <resolvers>
    <sigil-resolver name="sigil" config="${ivy.settings.dir}/sigil-repos.properties" />
    <filesystem name="local">
      <ivy pattern="${repository.dir}/local/[module]-[revision].xml" />
      <artifact pattern="${repository.dir}/local/[artifact]-[revision].[ext]" />
    </filesystem>
    <filesystem name="shared">
      <ivy pattern="${repository.dir}/shared/[module]-[revision].xml" />
      <artifact pattern="${repository.dir}/shared/[module]/[artifact]-[revision].[ext]" />
    </filesystem>
  </resolvers>
  <modules>
    <!--<module organisation="org.apache.ivy.example" name=".*" resolver="shared"/>
    -->
    <module organisation="sigil" resolver="sigil"/>
  </modules>
</ivysettings>
