blob: a0662e9beb54bad6cf3ed47356b8a68ac352badd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
#!/bin/bash
# Copyright 2015 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 an IntelliJ project in Bazel.
set -o errexit
cd $(dirname "$0")
cd ..
mkdir -p .idea/
cp -R scripts/resources/idea/*.* .idea/
source scripts/get_all_bazel_paths.sh
readonly iml_file=bazel.iml
# The content root output/classes is used for generated sources, specifically
# AutoValue.
cat > $iml_file <<EOH
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager">
<output url="file://\$MODULE_DIR\$/${IDE_OUTPUT_PATH}" />
<exclude-output />
<orderEntry type="inheritedJdk" />
<content url="file://\$MODULE_DIR\$/output/classes">
<sourceFolder url="file://\$MODULE_DIR\$/output/classes" isTestSource="false" />
<excludeFolder url="file://\$MODULE_DIR\$/output/classes/org" />
</content>
<content url="file://\$MODULE_DIR\$/src">
EOH
for source in ${JAVA_PATHS}; do
if [[ $source == *"javatests" ]]; then
is_test_source="true"
elif [[ $source == *"test/java" ]]; then
is_test_source="true"
else
is_test_source="false"
fi
echo ' <sourceFolder url="file://$MODULE_DIR$/'"${source}\" isTestSource=\"${is_test_source}\" />" >> $iml_file
done
cat >> $iml_file <<'EOF'
</content>
<content url="file://$MODULE_DIR$/third_party/java">
EOF
THIRD_PARTY_JAVA_PATHS="$(ls third_party/java | sort -u | sed -e 's%$%/java%')"
for third_party_java_path in ${THIRD_PARTY_JAVA_PATHS}; do
echo ' <sourceFolder url="file://$MODULE_DIR$/third_party/java/'${third_party_java_path}'" isTestSource="false" />' >> $iml_file
done
cat >> $iml_file <<'EOF'
</content>
<orderEntry type="sourceFolder" forTests="false" />
EOF
function write_jar_entry() {
local jar_file=$1
if [[ $# > 1 ]]; then
local source_path=$2
else
local source_path=""
fi
local readonly basename=${jar_file##*/}
cat >> $iml_file <<EOF
<orderEntry type="module-library">
<library name="${basename}">
<CLASSES>
<root url="jar://\$MODULE_DIR\$/${jar_file}!/" />
</CLASSES>
<JAVADOC />
EOF
if [[ -z "${source_path}" ]]; then
echo " <SOURCES />" >> $iml_file
else
cat >> $iml_file <<EOF
<SOURCES>
<root url="jar:/\$MODULE_DIR\$/${source_path}!/" />
</SOURCES>
EOF
fi
cat >> $iml_file <<'EOF'
</library>
</orderEntry>
EOF
}
for jar in ${THIRD_PARTY_JAR_PATHS}; do
write_jar_entry $jar
done
for source_path in ${PROTOBUF_PATHS}; do
write_jar_entry ${source_path%.proto_output} $source_path
done
for path_pair in ${GENERATED_PATHS}; do
write_jar_entry ${path_pair//:/ }
done
write_jar_entry tools/jdk/jdk/lib/tools.jar
cat >> $iml_file <<'EOF'
</component>
</module>
EOF
|