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}