/*
 * Copyright 2000-2012 JetBrains s.r.o.
 *
 * 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.
 */
def ctx = context(scope: scriptScope(), filetypes : ["gant"])

contributor ([ctx], {
  property name:"project", type:"org.jetbrains.jps.model.JpsProject"
  property name:"global", type:"org.jetbrains.jps.model.JpsGlobal"
  property name:"projectBuilder", type:"org.jetbrains.jps.gant.JpsGantProjectBuilder"
  method name:"jdk", type:"void", params:[name:"String", jdkPath:"String"]
  method name:"jdk", type:"void", params:[name:"String", jdkPath:"String", initializer:{}]

  method name:"layout", type:"org.jetbrains.jps.gant.LayoutInfo", params: [name:"String", layout:{}]
  method name:"module", type:"void", params: [name:"String"]
  method name:"module", type:"void", params: [name:"String", layout:{}]
  ["jar", "dir", "zip"].each { methodName ->
    method name:methodName, type:"void", params: [name:"String", layout:{}]
  }
})
