annotate mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CatCommand.java @ 802:005ea6b2dc0f

@NotNull
author eugene.petrenko@jetbrains.com
date Fri, 30 May 2014 10:25:05 +0200
parents f0327df85b9d
children 578eab848c5d
rev   line source
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
1 /*
732
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 480
diff changeset
2 * Copyright 2000-2014 JetBrains s.r.o.
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
3 *
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
4 * Licensed under the Apache License, Version 2.0 (the "License");
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
5 * you may not use this file except in compliance with the License.
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
6 * You may obtain a copy of the License at
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
7 *
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
8 * http://www.apache.org/licenses/LICENSE-2.0
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
9 *
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
10 * Unless required by applicable law or agreed to in writing, software
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
11 * distributed under the License is distributed on an "AS IS" BASIS,
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
13 * See the License for the specific language governing permissions and
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
14 * limitations under the License.
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
15 */
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
16 package jetbrains.buildServer.buildTriggers.vcs.mercurial.command;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
17
417
74487e2c6356 Use shorter temp directory names
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 399
diff changeset
18 import jetbrains.buildServer.buildTriggers.vcs.mercurial.HgFileUtil;
743
ff89f023a3c8 change Cat command commandline size (select max possible value)
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
19 import jetbrains.buildServer.buildTriggers.vcs.mercurial.OS;
478
0a33f3dbd261 Ensure temp dirs are deleted
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 476
diff changeset
20 import jetbrains.buildServer.log.Loggers;
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
21 import jetbrains.buildServer.vcs.VcsException;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
22 import org.jetbrains.annotations.NotNull;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
23
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
24 import java.io.File;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
25 import java.io.IOException;
399
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
26 import java.util.ArrayList;
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
27 import java.util.LinkedList;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
28 import java.util.List;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
29 import java.util.Queue;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
30
399
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
31 import static java.util.Collections.singletonList;
478
0a33f3dbd261 Ensure temp dirs are deleted
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 476
diff changeset
32 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.HgFileUtil.deleteDir;
352
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
33
781
3cd449e58f70 Hg arch and cat commands can require an authentication in case of largefiles
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 743
diff changeset
34 public class CatCommand extends AuthCommand {
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
35 private String myRevId;
743
ff89f023a3c8 change Cat command commandline size (select max possible value)
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
36
399
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
37 private List<String> myRelativePaths = new ArrayList<String>();
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
38 private boolean myCheckForFailure = true;
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
39
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 478
diff changeset
40 public CatCommand(@NotNull CommandSettings commandSettings,
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 478
diff changeset
41 @NotNull String hgPath,
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 478
diff changeset
42 @NotNull File workingDir,
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 478
diff changeset
43 @NotNull AuthSettings authSettings) {
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 478
diff changeset
44 super(commandSettings, hgPath, workingDir, authSettings);
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
45 }
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
46
399
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
47 public CatCommand files(@NotNull String relativePath) {
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
48 myRelativePaths = singletonList(relativePath);
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
49 return this;
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
50 }
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
51
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
52 public CatCommand files(@NotNull List<String> relativePaths) {
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
53 myRelativePaths = relativePaths;
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
54 return this;
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
55 }
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
56
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
57 public CatCommand setRevId(final String revId) {
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
58 myRevId = revId;
399
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
59 return this;
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
60 }
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
61
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
62 public CatCommand atRevision(@NotNull ChangeSet cset) {
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
63 myRevId = cset.getId();
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
64 return this;
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
65 }
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
66
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
67 public CatCommand checkForFailure(boolean doCheckForFailure) {
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
68 myCheckForFailure = doCheckForFailure;
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
69 return this;
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
70 }
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
71
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
72 public File call() throws VcsException {
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367
diff changeset
73 return execute(myRelativePaths, myCheckForFailure);
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
74 }
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
75
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
76 public File execute(List<String> relPaths) throws VcsException {
304
e9cdb499350d Do clean checkout if subrepository URL changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
77 return execute(relPaths, true);
e9cdb499350d Do clean checkout if subrepository URL changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
78 }
e9cdb499350d Do clean checkout if subrepository URL changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
79
e9cdb499350d Do clean checkout if subrepository URL changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
80 public File execute(List<String> relPaths, boolean checkFailure) throws VcsException {
352
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
81 File tempDir = null;
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
82 try {
352
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
83 tempDir = createTmpDir();
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
84 createDirectories(relPaths, tempDir);
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
85 catFiles(relPaths, checkFailure, tempDir);
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
86 return tempDir;
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
87 } catch (VcsException e) {
478
0a33f3dbd261 Ensure temp dirs are deleted
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 476
diff changeset
88 deleteDir(tempDir, Loggers.VCS);
352
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
89 throw e;
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
90 }
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
91 }
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
92
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
93 private File createTmpDir() throws VcsException {
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
94 try {
417
74487e2c6356 Use shorter temp directory names
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 399
diff changeset
95 return HgFileUtil.createTempDir();
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
96 } catch (IOException e) {
476
aa19481a91c3 Include cause of the error
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 417
diff changeset
97 throw new VcsException("Unable to create temporary directory", e);
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
98 }
352
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
99 }
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
100
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
101 private void createDirectories(List<String> relPaths, File tempDir) throws VcsException {
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
102 for (String path: relPaths) {
352
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
103 File parentFile = new File(tempDir, path).getParentFile();
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
104 if (!parentFile.isDirectory() && !parentFile.mkdirs())
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
105 throw new VcsException("Failed to create directory: " + parentFile.getAbsolutePath());
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
106 }
352
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
107 }
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
108
352
1b3be513520e TW-13178 clean tmp dir when cat command fails
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 339
diff changeset
109 private void catFiles(List<String> relPaths, boolean checkFailure, File tempDir) throws VcsException {
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
110 Queue<String> paths = new LinkedList<String>(relPaths);
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
111 while (!paths.isEmpty()) {
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 478
diff changeset
112 MercurialCommandLine cli = createCommandLine(tempDir);
743
ff89f023a3c8 change Cat command commandline size (select max possible value)
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
113 int cmdSize = cli.getCommandLineString().length() + 42;
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
114
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
115 do {
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
116 String path = paths.poll();
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
117 cli.addParameter(path);
743
ff89f023a3c8 change Cat command commandline size (select max possible value)
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
118 cmdSize += path.length() + 3; //quotes + space
ff89f023a3c8 change Cat command commandline size (select max possible value)
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
119 } while (cmdSize < OS.getMaxCommandLineSize() && !paths.isEmpty());
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
120
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 478
diff changeset
121 runCommand(cli, myCommandSettings.setCheckForFailure(checkFailure));
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
122 }
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
123 }
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
124
802
005ea6b2dc0f @NotNull
eugene.petrenko@jetbrains.com
parents: 784
diff changeset
125 private MercurialCommandLine createCommandLine(@NotNull final File tempDir) {
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 478
diff changeset
126 MercurialCommandLine cli = createCommandLine();
781
3cd449e58f70 Hg arch and cat commands can require an authentication in case of largefiles
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 743
diff changeset
127 addHttpAuthParams(cli);
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
128 cli.addParameter("cat");
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
129 cli.addParameter("-o");
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
130 cli.addParameter(tempDir.getAbsolutePath() + File.separator + "%p");
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
131 if (myRevId != null) {
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
132 cli.addParameter("-r");
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
133 cli.addParameter(myRevId);
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
134 }
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
135 return cli;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
136 }
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
137 }