1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /*
- * Copyright (C) 2016, Ned Twigg <ned.twigg@diffplug.com> and others
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0 which is available at
- * https://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
- package org.eclipse.jgit.pgm;
-
- import java.io.IOException;
- import java.text.MessageFormat;
- import java.util.Set;
-
- import org.eclipse.jgit.api.Git;
- import org.eclipse.jgit.api.errors.GitAPIException;
- import org.eclipse.jgit.errors.NoWorkTreeException;
- import org.eclipse.jgit.pgm.internal.CLIText;
- import org.kohsuke.args4j.Option;
-
- @Command(common = true, usage = "usage_Clean")
- class Clean extends TextBuiltin {
- @Option(name = "-d", usage = "usage_removeUntrackedDirectories")
- private boolean dirs = false;
-
- @Option(name = "--force", aliases = {
- "-f" }, usage = "usage_forceClean")
- private boolean force = false;
-
- @Option(name = "--dryRun", aliases = { "-n" })
- private boolean dryRun = false;
-
- /** {@inheritDoc} */
- @Override
- protected void run() {
- try (Git git = new Git(db)) {
- boolean requireForce = git.getRepository().getConfig()
- .getBoolean("clean", "requireForce", true); //$NON-NLS-1$ //$NON-NLS-2$
- if (requireForce && !(force || dryRun)) {
- throw die(CLIText.fatalError(CLIText.get().cleanRequireForce));
- }
- // Note that CleanCommand's setForce(true) will delete
- // .git folders. In the cgit cli, this behavior
- // requires setting "-f" twice, not sure how to do
- // this with args4j, so this feature is unimplemented
- // for now.
- Set<String> removedFiles = git.clean().setCleanDirectories(dirs)
- .setDryRun(dryRun).call();
- for (String removedFile : removedFiles) {
- outw.println(MessageFormat.format(CLIText.get().removing,
- removedFile));
- }
- } catch (NoWorkTreeException | GitAPIException | IOException e) {
- throw die(e.getMessage(), e);
- }
- }
- }
|