001/**
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements.  See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License.  You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018package org.jetbrains.jet.cli.jvm;
019
020import com.sampullara.cli.Argument;
021import org.jetbrains.jet.cli.common.CompilerArguments;
022
023import java.util.List;
024
025/**
026 * Command line arguments for the {@link K2JVMCompiler}
027 */
028@SuppressWarnings("UnusedDeclaration")
029public class K2JVMCompilerArguments extends CompilerArguments {
030
031
032    // TODO ideally we'd unify this with 'src' to just having a single field that supports multiple files/dirs
033    private List<String> sourceDirs;
034
035    public List<String> getSourceDirs() {
036        return sourceDirs;
037    }
038
039    public void setSourceDirs(List<String> sourceDirs) {
040        this.sourceDirs = sourceDirs;
041    }
042
043    @Argument(value = "jar", description = "jar file name")
044    public String jar;
045
046    @Argument(value = "src", description = "source file or directory")
047    public String src;
048
049    @Argument(value = "classpath", description = "classpath to use when compiling")
050    public String classpath;
051
052    @Argument(value = "annotations", description = "paths to external annotations")
053    public String annotations;
054
055    @Argument(value = "includeRuntime", description = "include Kotlin runtime in to resulting jar")
056    public boolean includeRuntime;
057
058    @Argument(value = "noJdk", description = "don't include Java runtime into classpath")
059    public boolean noJdk;
060
061    @Argument(value = "noStdlib", description = "don't include Kotlin runtime into classpath")
062    public boolean noStdlib;
063
064    @Argument(value = "noJdkAnnotations", description = "don't include JDK external annotations into classpath")
065    public boolean noJdkAnnotations;
066
067    @Argument(value = "notNullAssertions", description = "generate not-null assertion after each invokation of method returning not-null")
068    public boolean notNullAssertions;
069
070    @Argument(value = "notNullParamAssertions", description = "generate not-null assertions on parameters of methods accessible from Java")
071    public boolean notNullParamAssertions;
072
073    @Argument(value = "builtins", description = "compile builtin classes (internal)")
074    public boolean builtins;
075
076    @Argument(value = "output", description = "output directory")
077    public String outputDir;
078
079    @Argument(value = "module", description = "module to compile")
080    public String module;
081
082    @Argument(value = "script", description = "evaluate script")
083    public boolean script;
084
085    @Argument(value = "tags", description = "Demarcate each compilation message (error, warning, etc) with an open and close tag")
086    public boolean tags;
087
088    @Argument(value = "verbose", description = "Enable verbose logging output")
089    public boolean verbose;
090
091    @Argument(value = "version", description = "Display compiler version")
092    public boolean version;
093
094    @Argument(value = "help", alias = "h", description = "show help")
095    public boolean help;
096
097    @Argument(value = "kotlinHome", description = "Path to Kotlin compiler home directory, used for annotations and runtime libraries discovery")
098    public String kotlinHome;
099
100    public String getKotlinHome() {
101        return kotlinHome;
102    }
103
104    public void setKotlinHome(String kotlinHome) {
105        this.kotlinHome = kotlinHome;
106    }
107
108    public String getClasspath() {
109        return classpath;
110    }
111
112    public void setClasspath(String classpath) {
113        this.classpath = classpath;
114    }
115
116    @Override
117    public boolean isHelp() {
118        return help;
119    }
120
121    public void setHelp(boolean help) {
122        this.help = help;
123    }
124
125    public boolean isIncludeRuntime() {
126        return includeRuntime;
127    }
128
129    public void setIncludeRuntime(boolean includeRuntime) {
130        this.includeRuntime = includeRuntime;
131    }
132
133    public String getJar() {
134        return jar;
135    }
136
137    public void setJar(String jar) {
138        this.jar = jar;
139    }
140
141    public String getModule() {
142        return module;
143    }
144
145    public void setModule(String module) {
146        this.module = module;
147    }
148
149    public String getOutputDir() {
150        return outputDir;
151    }
152
153    public void setOutputDir(String outputDir) {
154        this.outputDir = outputDir;
155    }
156
157    public String getSrc() {
158        return src;
159    }
160
161    public void setSrc(String src) {
162        this.src = src;
163    }
164
165    @Override
166    public boolean isTags() {
167        return tags;
168    }
169
170    @Override
171    public boolean isVersion() {
172        return version;
173    }
174
175    @Override
176    public boolean isVerbose() {
177        return verbose;
178    }
179
180    public void setTags(boolean tags) {
181        this.tags = tags;
182    }
183
184    public void setNoStdlib(boolean noStdlib) {
185        this.noStdlib = noStdlib;
186    }
187}