// ĠCopyright Ġ 2 0 0 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġgit 4 idea . repo Ċ Ċ import Ġcom . intellij . openapi . application . run Read Action Ċ import Ġcom . intellij . openapi . diagnostic . logger Ċ import Ġcom . intellij . openapi . vfs . V fs Util Ċ Ċ private Ġval ĠLOG Ġ= Ġlogger < Git Sub module >() Ċ Ċ class ĠGit Sub module ( ĊĠ Ġval Ġrepository : ĠGit Repository , ĊĠ Ġval Ġparent : ĠGit Repository ) Ċ Ċ fun ĠGit Repository . as Sub module () Ġ: ĠGit Sub module ? Ġ{ ĊĠ Ġval Ġrepository Manager Ġ= ĠGit Repository Manager . getInstance ( project ) ĊĠ Ġval Ġparent Ġ= Ġrepository Manager . repositories . find Ġ{ Ġit . is Parent Repository For ( this ) Ġ} ĊĠ Ġreturn Ġif Ġ( parent Ġ!= Ġnull ) ĠGit Sub module ( this , Ġparent ) Ġelse Ġnull Ċ } Ċ Ċ private Ġfun ĠGit Repository . is Parent Repository For ( sub module : ĠGit Repository ): ĠBoolean Ġ{ ĊĠ Ġreturn ĠV fs Util . is Ancestor ( root , Ġsubmodule . root , Ġtrue ) Ġ&& ĊĠĠĠĠĠĠĠĠ Ġsub modules . isNotEmpty () Ġ&& ĊĠĠĠĠĠĠĠĠ Ġrun Read Action Ġ{ Ġsub modules . any Ġ{ Ġmodule Ġ-> Ġroot . find File By RelativePath ( module . path ) Ġ== Ġsubmodule . root Ġ} Ġ} Ċ } Ċ Ċ fun ĠGit Repository . is Sub module (): ĠBoolean Ġ= Ġas Sub module () Ġ!= Ġnull Ċ Ċ fun ĠGit Repository . get Direct Sub modules (): ĠCollection < Git Repository > Ġ{ ĊĠ Ġreturn Ġsub modules . map NotNull Ġ{ Ġmodule Ġ-> ĊĠĠĠ Ġval Ġsubmodule Dir Ġ= Ġrun Read Action Ġ{ Ġroot . find File By RelativePath ( module . path ) Ġ} ĊĠĠĠ Ġif Ġ( sub module Dir Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠLOG . debug (" sub module Ġdir Ġnot Ġfound Ġat Ġdeclared Ġpath Ġ[ ${ module . path }] Ġof Ġroot Ġ[$ root ]") ĊĠĠĠĠĠ Ġreturn @ map NotNull Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġrepository Ġ= ĠGit Repository Manager . getInstance ( project ). getRepository For Root ( sub module Dir ) ĊĠĠĠ Ġif Ġ( repository Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠLOG . warn (" Sub module Ġnot Ġregistered Ġas Ġa Ġrepository : Ġ$ sub module Dir ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn @ map NotNull Ġrepository ĊĠ Ġ} Ċ } Ċ