1*90c8c64dSAndroid Build Coastguard Worker#!/bin/bash 2*90c8c64dSAndroid Build Coastguard Worker# 3*90c8c64dSAndroid Build Coastguard Worker# Copyright (C) 2012 The Android Open Source Project 4*90c8c64dSAndroid Build Coastguard Worker# 5*90c8c64dSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*90c8c64dSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*90c8c64dSAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*90c8c64dSAndroid Build Coastguard Worker# 9*90c8c64dSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*90c8c64dSAndroid Build Coastguard Worker# 11*90c8c64dSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*90c8c64dSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*90c8c64dSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*90c8c64dSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*90c8c64dSAndroid Build Coastguard Worker# limitations under the License. 16*90c8c64dSAndroid Build Coastguard Worker# 17*90c8c64dSAndroid Build Coastguard Worker# To use, run the following command from either your repo root or 18*90c8c64dSAndroid Build Coastguard Worker# development/tools/idegen: 19*90c8c64dSAndroid Build Coastguard Worker# intellij-gen.sh project_dir <module_dir>... 20*90c8c64dSAndroid Build Coastguard Worker# 21*90c8c64dSAndroid Build Coastguard Worker# if no module_dir is provided, we assume project_dir is also a module_dir. 22*90c8c64dSAndroid Build Coastguard Worker# 23*90c8c64dSAndroid Build Coastguard Worker# For example, to generate a project for framework/base, use: 24*90c8c64dSAndroid Build Coastguard Worker# intellij-gen.sh framework/base 25*90c8c64dSAndroid Build Coastguard Worker# 26*90c8c64dSAndroid Build Coastguard Worker# The project directory (.idea) will be put in the project_dir. Sharable 27*90c8c64dSAndroid Build Coastguard Worker# iml files will be put into each respective module directory. 28*90c8c64dSAndroid Build Coastguard Worker# 29*90c8c64dSAndroid Build Coastguard Worker# Only tested on linux. Should work for macs but have not tried. 30*90c8c64dSAndroid Build Coastguard Worker# 31*90c8c64dSAndroid Build Coastguard Workerset -e 32*90c8c64dSAndroid Build Coastguard Worker 33*90c8c64dSAndroid Build Coastguard Workerprogname=`basename $0` 34*90c8c64dSAndroid Build Coastguard Workerif [ $# -lt 1 ]; then 35*90c8c64dSAndroid Build Coastguard Worker echo "Usage: $progname project_dir <module_dir>..." 36*90c8c64dSAndroid Build Coastguard Worker exit 1 37*90c8c64dSAndroid Build Coastguard Workerfi 38*90c8c64dSAndroid Build Coastguard Workerproject_dir=$1 39*90c8c64dSAndroid Build Coastguard Workershift 40*90c8c64dSAndroid Build Coastguard Workerif [ -z $@ ]; then 41*90c8c64dSAndroid Build Coastguard Worker module_dirs=${project_dir} 42*90c8c64dSAndroid Build Coastguard Workerelse 43*90c8c64dSAndroid Build Coastguard Worker module_dirs=$@ 44*90c8c64dSAndroid Build Coastguard Workerfi 45*90c8c64dSAndroid Build Coastguard Workerecho $module_dirs 46*90c8c64dSAndroid Build Coastguard Workerscript_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 47*90c8c64dSAndroid Build Coastguard Workerroot_dir=$PWD 48*90c8c64dSAndroid Build Coastguard Workerif [ ! -e $root_dir/.repo ]; then 49*90c8c64dSAndroid Build Coastguard Worker root_dir=$PWD/../../.. 50*90c8c64dSAndroid Build Coastguard Worker if [ ! -e $root_dir/.repo ]; then 51*90c8c64dSAndroid Build Coastguard Worker echo "Repo root not found. Run this script from your repo root or the idegen directory." 52*90c8c64dSAndroid Build Coastguard Worker exit 1 53*90c8c64dSAndroid Build Coastguard Worker fi 54*90c8c64dSAndroid Build Coastguard Workerfi 55*90c8c64dSAndroid Build Coastguard Workerindex_file=$root_dir/module-index.txt 56*90c8c64dSAndroid Build Coastguard Workeridegenjar=$script_dir/idegen.jar 57*90c8c64dSAndroid Build Coastguard Workerif [ ! -e $idegenjar ]; then 58*90c8c64dSAndroid Build Coastguard Worker # See if the jar is in the build directory. 59*90c8c64dSAndroid Build Coastguard Worker platform="linux" 60*90c8c64dSAndroid Build Coastguard Worker if [ "Darwin" = "$(uname)" ]; then 61*90c8c64dSAndroid Build Coastguard Worker platform="darwin" 62*90c8c64dSAndroid Build Coastguard Worker fi 63*90c8c64dSAndroid Build Coastguard Worker idegenjar="$root_dir/out/host/$platform-x86/framework/idegen.jar" 64*90c8c64dSAndroid Build Coastguard Workerfi 65*90c8c64dSAndroid Build Coastguard Worker 66*90c8c64dSAndroid Build Coastguard Workerif [ ! -e "$index_file" ]; then 67*90c8c64dSAndroid Build Coastguard Worker echo "Module index file missing; generating this is only done the first time." 68*90c8c64dSAndroid Build Coastguard Worker echo "If any dependencies change, you should generate a new index file by running index-gen.sh." 69*90c8c64dSAndroid Build Coastguard Worker $script_dir/index-gen.sh 70*90c8c64dSAndroid Build Coastguard Workerfi 71*90c8c64dSAndroid Build Coastguard Worker 72*90c8c64dSAndroid Build Coastguard Workerecho "Checking for $idegenjar" 73*90c8c64dSAndroid Build Coastguard Workerif [ -e "$idegenjar" ]; then 74*90c8c64dSAndroid Build Coastguard Worker echo "Generating project files for $module_dirs" 75*90c8c64dSAndroid Build Coastguard Worker cmd="java -cp $idegenjar com.android.idegen.IntellijProject $index_file $project_dir $module_dirs" 76*90c8c64dSAndroid Build Coastguard Worker echo $cmd 77*90c8c64dSAndroid Build Coastguard Worker $cmd 78*90c8c64dSAndroid Build Coastguard Workerelse 79*90c8c64dSAndroid Build Coastguard Worker echo "Couldn't find idegen.jar. Please run make first." 80*90c8c64dSAndroid Build Coastguard Workerfi 81