1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.scm.provider.local.command.mkdir;
20
21 import java.io.File;
22 import java.util.ArrayList;
23 import java.util.List;
24
25 import org.apache.maven.scm.CommandParameter;
26 import org.apache.maven.scm.CommandParameters;
27 import org.apache.maven.scm.ScmException;
28 import org.apache.maven.scm.ScmFile;
29 import org.apache.maven.scm.ScmFileSet;
30 import org.apache.maven.scm.ScmFileStatus;
31 import org.apache.maven.scm.command.add.AddScmResult;
32 import org.apache.maven.scm.command.mkdir.AbstractMkdirCommand;
33 import org.apache.maven.scm.command.mkdir.MkdirScmResult;
34 import org.apache.maven.scm.provider.ScmProviderRepository;
35 import org.apache.maven.scm.provider.local.command.add.LocalAddCommand;
36 import org.apache.maven.scm.provider.local.repository.LocalScmProviderRepository;
37 import org.codehaus.plexus.util.FileUtils;
38
39
40
41
42
43 public class LocalMkdirCommand extends AbstractMkdirCommand {
44 protected MkdirScmResult executeMkdirCommand(
45 ScmProviderRepository repository, ScmFileSet fileSet, String message, boolean createInLocal)
46 throws ScmException {
47 LocalScmProviderRepository repo = (LocalScmProviderRepository) repository;
48 List<ScmFile> createdDirs = new ArrayList<>();
49
50
51 if (!createInLocal) {
52 File file = fileSet.getFileList().get(0);
53 File modulePath = new File(repo.getRoot(), repo.getModule());
54 File dir = new File(modulePath, file.getName());
55
56 if (dir.exists()) {
57 return new MkdirScmResult(null, "Directory already exists!", "Directory already exists.", false);
58 } else {
59 if (logger.isInfoEnabled()) {
60 logger.info("Creating directory in '" + modulePath.getAbsolutePath() + "'");
61 }
62
63 FileUtils.mkdir(dir.getAbsolutePath());
64 createdDirs.add(new ScmFile(dir.getPath(), ScmFileStatus.ADDED));
65 }
66 } else {
67
68 LocalAddCommand addCmd = new LocalAddCommand();
69
70 CommandParameters parameters = new CommandParameters();
71 parameters.setString(CommandParameter.MESSAGE, message);
72 parameters.setString(CommandParameter.BINARY, "false");
73
74 String path = (fileSet.getFileList().get(0)).getPath();
75 if (repo.isFileAdded(path)) {
76 return new MkdirScmResult(null, "Directory already exists!", "Directory already exists.", false);
77 }
78
79 AddScmResult result = (AddScmResult) addCmd.execute(repository, fileSet, parameters);
80 createdDirs.addAll(result.getAddedFiles());
81 }
82
83 return new MkdirScmResult(null, createdDirs);
84 }
85 }