001package co.codewizards.cloudstore.client; 002 003import java.io.File; 004import java.util.UUID; 005 006import org.kohsuke.args4j.Argument; 007 008import co.codewizards.cloudstore.core.repo.local.LocalRepoRegistry; 009 010/** 011 * {@link SubCommand} implementation for showing information about a repository in the local file system. 012 * 013 * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de 014 */ 015public class DropRepoAliasSubCommand extends SubCommand 016{ 017 @Argument(metaVar="<alias>", index=0, required=true, usage="The alias to be dropped.") 018 private String alias; 019 020 public DropRepoAliasSubCommand() { } 021 022 @Override 023 public String getSubCommandDescription() { 024 return "Drop an alias."; 025 } 026 027 @Override 028 public void run() throws Exception { 029 LocalRepoRegistry localRepoRegistry = LocalRepoRegistry.getInstance(); 030 UUID oldRepositoryId = localRepoRegistry.getRepositoryId(alias); 031 032 File oldLocalRoot = null; 033 if (oldRepositoryId != null) { 034 oldLocalRoot = localRepoRegistry.getLocalRoot(oldRepositoryId); 035 if (oldLocalRoot == null || !oldLocalRoot.exists()) { 036 // orphaned entry to be ignored (should be cleaned up after a while, anyway) 037 oldRepositoryId = null; 038 oldLocalRoot = null; 039 } 040 } 041 042 if (oldRepositoryId != null) { 043 localRepoRegistry.removeRepositoryAlias(alias); 044 System.out.println(String.format("Dropped alias '%s' for repository %s (local-root '%s').", alias, oldRepositoryId, oldLocalRoot)); 045 } 046 else { 047 System.out.println(String.format("WARNING: The alias '%s' does not exist.", alias)); 048 } 049 } 050}