#!/bin/bash -e # Copyright 2018 Google Inc. All rights reserved. # # 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. # Generates kotlinc module xml file to standard output based on rsp files if [[ -z "$1" ]]; then echo "usage: $0 <classpath> <outDir> <rspFiles>..." >&2 exit 1 fi # Classpath variable has a tendency to be prefixed by "-classpath", remove it. if [[ $1 == "-classpath" ]]; then shift fi; classpath=$1 out_dir=$2 shift 2 # Path in the build file may be relative to the build file, we need to make them # absolute prefix="$(pwd)" get_abs_path () { local file="$1" if [[ "${file:0:1}" == '/' ]] ; then echo "${file}" else echo "${prefix}/${file}" fi } # Print preamble echo "<modules><module name=\"name\" type=\"java-production\" outputDir=\"${out_dir}\">" # Print classpath entries for file in $(echo "$classpath" | tr ":" "\n"); do path="$(get_abs_path "$file")" echo " <classpath path=\"${path}\"/>" done # For each rsp file, print source entries while (( "$#" )); do for file in $(cat "$1"); do path="$(get_abs_path "$file")" if [[ $file == *.java ]]; then echo " <javaSourceRoots path=\"${path}\"/>" elif [[ $file == *.kt ]]; then echo " <sources path=\"${path}\"/>" else echo "Unknown source file type ${file}" exit 1 fi done shift done echo "</module></modules>"