tikhomirov@2: /** tikhomirov@2: * Copyright (c) 2010 Artem Tikhomirov tikhomirov@2: */ tikhomirov@2: package com.tmate.hgkit.fs; tikhomirov@2: tikhomirov@2: import java.io.File; tikhomirov@2: tikhomirov@2: import com.tmate.hgkit.ll.HgRepository; tikhomirov@2: import com.tmate.hgkit.ll.LocalHgRepo; tikhomirov@2: tikhomirov@2: /** tikhomirov@2: * @author artem tikhomirov@2: */ tikhomirov@2: public class RepositoryLookup { tikhomirov@2: tikhomirov@2: public HgRepository detect(String[] commandLineArgs) throws Exception { tikhomirov@2: if (commandLineArgs.length == 0) { tikhomirov@2: return detectFromWorkingDir(); tikhomirov@2: } tikhomirov@2: return detect(commandLineArgs[0]); tikhomirov@2: } tikhomirov@2: tikhomirov@2: public HgRepository detectFromWorkingDir() throws Exception { tikhomirov@2: return detect(System.getProperty("user.dir")); tikhomirov@2: } tikhomirov@2: tikhomirov@2: public HgRepository detect(String location) throws Exception /*FIXME Exception type, RepoInitException? */ { tikhomirov@2: File dir = new File(location); tikhomirov@2: File repository; tikhomirov@2: do { tikhomirov@2: repository = new File(dir, ".hg"); tikhomirov@2: if (repository.exists() && repository.isDirectory()) { tikhomirov@2: break; tikhomirov@2: } tikhomirov@2: repository = null; tikhomirov@2: dir = dir.getParentFile(); tikhomirov@2: tikhomirov@2: } while(dir != null); tikhomirov@2: if (repository == null) { tikhomirov@2: return new LocalHgRepo(location); tikhomirov@2: } tikhomirov@2: return new LocalHgRepo(repository); tikhomirov@2: } tikhomirov@2: }