Mercurial > hg > mercurial
annotate mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/BaseCommand.java @ 999:1b1cc811e1b6 Jaipur-2018.1.x
Jaipur-2018.1.x branch created
author | pavel.sher |
---|---|
date | Thu, 21 Jun 2018 17:37:32 +0200 |
parents | 7bf4d943d5bb |
children |
rev | line source |
---|---|
266
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
1 /* |
976 | 2 * Copyright 2000-2018 JetBrains s.r.o. |
266
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
3 * |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
4 * Licensed under the Apache License, Version 2.0 (the "License"); |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
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:
229
diff
changeset
|
6 * You may obtain a copy of the License at |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
7 * |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
8 * http://www.apache.org/licenses/LICENSE-2.0 |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
9 * |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
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:
229
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:
229
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:
229
diff
changeset
|
13 * See the License for the specific language governing permissions and |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
14 * limitations under the License. |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
15 */ |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
16 package jetbrains.buildServer.buildTriggers.vcs.mercurial.command; |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
17 |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
495
diff
changeset
|
18 import jetbrains.buildServer.vcs.VcsException; |
266
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
19 import org.jetbrains.annotations.NotNull; |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
20 |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
21 import java.io.File; |
369 | 22 import java.util.Set; |
23 | |
24 import static java.util.Collections.emptySet; | |
266
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
25 |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
26 /** |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
27 * @author pavel |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
28 */ |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
29 public class BaseCommand { |
280
8c1fd2e565ae
Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
276
diff
changeset
|
30 |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
31 protected final CommandSettings myCommandSettings; |
280
8c1fd2e565ae
Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
276
diff
changeset
|
32 private final String myHgPath; |
276
8c10f5cec37d
TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
275
diff
changeset
|
33 private final File myWorkDirectory; |
266
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
34 |
773
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
35 public BaseCommand(@NotNull final CommandSettings commandSettings, |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
36 @NotNull final String hgPath, |
773
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
37 @NotNull final File workingDir) { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
38 myCommandSettings = commandSettings; |
280
8c1fd2e565ae
Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
276
diff
changeset
|
39 myHgPath = hgPath; |
276
8c10f5cec37d
TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
275
diff
changeset
|
40 myWorkDirectory = workingDir; |
266
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
41 } |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
42 |
276
8c10f5cec37d
TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
275
diff
changeset
|
43 public File getWorkDirectory() { |
266
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
44 return myWorkDirectory; |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
45 } |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
46 |
825 | 47 @NotNull |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
48 protected MercurialCommandLine createCommandLine() { |
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
49 MercurialCommandLine cli = createCL(); |
276
8c10f5cec37d
TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
275
diff
changeset
|
50 cli.setWorkDirectory(myWorkDirectory.getAbsolutePath()); |
266
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
51 return cli; |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
52 } |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
53 |
825 | 54 @NotNull |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
55 protected MercurialCommandLine createCL() { |
773
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
56 final MercurialCommandLine cl = new MercurialCommandLine(getPrivateData()); |
380 | 57 cl.setExePath(myHgPath); |
493
236d0866a45f
Make tests independent from mercurial settings on agent
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
58 cl.setEnvParams(myCommandSettings.getHgEnv()); |
883
39ff04730ccc
Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
852
diff
changeset
|
59 cl.setDescription(getDescription()); |
773
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
60 |
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
61 //include global arguments if any |
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
62 cl.addParameters(myCommandSettings.getGlobalArguments()); |
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
63 |
266
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
64 return cl; |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
65 } |
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
66 |
773
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
67 @NotNull |
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
68 protected final CommandResult runCommand(@NotNull MercurialCommandLine cli) throws VcsException { |
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
69 return runCommand(cli, myCommandSettings); |
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
70 } |
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
71 |
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
72 @NotNull |
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
73 protected final CommandResult runCommand(@NotNull final MercurialCommandLine cli, |
bb37c581f463
use same way to run every command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
74 @NotNull final CommandSettings commandSettings) throws VcsException { |
823
7a7a6e255c71
bind BaseCommand to new settings (work in progress)
eugene.petrenko@jetbrains.com
parents:
819
diff
changeset
|
75 |
852
d746a9351572
Fix command line lenght limit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
828
diff
changeset
|
76 if (!myCommandSettings.getUseCommandlineViaFileWrapper()) { |
889
62ebe9e449a3
Move logging into mercurial command
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
886
diff
changeset
|
77 cli.logCommandStarted(commandSettings.getProgress()); |
883
39ff04730ccc
Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
852
diff
changeset
|
78 try { |
39ff04730ccc
Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
852
diff
changeset
|
79 return CommandUtil.runCommand(cli, commandSettings.setPrivateData(getPrivateData())); |
39ff04730ccc
Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
852
diff
changeset
|
80 } finally { |
889
62ebe9e449a3
Move logging into mercurial command
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
886
diff
changeset
|
81 cli.logCommandFinished(commandSettings.getProgress()); |
883
39ff04730ccc
Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
852
diff
changeset
|
82 } |
823
7a7a6e255c71
bind BaseCommand to new settings (work in progress)
eugene.petrenko@jetbrains.com
parents:
819
diff
changeset
|
83 } |
7a7a6e255c71
bind BaseCommand to new settings (work in progress)
eugene.petrenko@jetbrains.com
parents:
819
diff
changeset
|
84 |
828
8d02c7b1f812
use HG extension to pass infinite commandline arguments list
eugene.petrenko@jetbrains.com
parents:
827
diff
changeset
|
85 return CommandUtil.runWrappedCommand(cli, commandSettings); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
495
diff
changeset
|
86 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
495
diff
changeset
|
87 |
827
194c8f8d6e4c
add helper to enable bundled plugins for Mercurial
eugene.petrenko@jetbrains.com
parents:
825
diff
changeset
|
88 protected void setupExtensionsFromResource(@NotNull final MercurialCommandLine cli, |
194c8f8d6e4c
add helper to enable bundled plugins for Mercurial
eugene.petrenko@jetbrains.com
parents:
825
diff
changeset
|
89 @NotNull final File tempDir, |
194c8f8d6e4c
add helper to enable bundled plugins for Mercurial
eugene.petrenko@jetbrains.com
parents:
825
diff
changeset
|
90 @NotNull final String commandPy) throws VcsException{ |
194c8f8d6e4c
add helper to enable bundled plugins for Mercurial
eugene.petrenko@jetbrains.com
parents:
825
diff
changeset
|
91 CommandUtil.setupExtensionsFromResource(cli, tempDir, commandPy); |
194c8f8d6e4c
add helper to enable bundled plugins for Mercurial
eugene.petrenko@jetbrains.com
parents:
825
diff
changeset
|
92 } |
194c8f8d6e4c
add helper to enable bundled plugins for Mercurial
eugene.petrenko@jetbrains.com
parents:
825
diff
changeset
|
93 |
777 | 94 @NotNull |
369 | 95 protected Set<String> getPrivateData() { |
96 return emptySet(); | |
266
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
97 } |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
380
diff
changeset
|
98 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
380
diff
changeset
|
99 protected String getHgPath() { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
380
diff
changeset
|
100 return myHgPath; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
380
diff
changeset
|
101 } |
883
39ff04730ccc
Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
852
diff
changeset
|
102 |
39ff04730ccc
Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
852
diff
changeset
|
103 @NotNull |
39ff04730ccc
Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
852
diff
changeset
|
104 protected String getDescription() { |
39ff04730ccc
Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
852
diff
changeset
|
105 return ""; |
39ff04730ccc
Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
852
diff
changeset
|
106 } |
266
643fa1236f4e
Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
229
diff
changeset
|
107 } |