View Javadoc

1   /*
2    *  LICENSE
3    *
4    * "THE BEER-WARE LICENSE" (Revision 43):
5    * "Sven Strittmatter" <weltraumschaf@googlemail.com> wrote this file.
6    * As long as you retain this notice you can do whatever you want with
7    * this stuff. If we meet some day, and you think this stuff is worth it,
8    * you can buy me a non alcohol-free beer in return.
9    *
10   * Copyright (C) 2012 "Sven Strittmatter" <weltraumschaf@googlemail.com>
11   */
12  package org.jenkinsci.plugins.darcs.cmd;
13  
14  import hudson.util.ArgumentListBuilder;
15  import org.apache.commons.lang.Validate;
16  
17  /**
18   * Builder for `darcs get` command.
19   *
20   * Example: {@literal `darcs get FROM TO`}
21   *
22   * @author Sven Strittmatter <weltraumschaf@googlemail.com>
23   */
24  public class DarcsGetBuilder extends DarcsBaseCommandBuilder implements DarcsCommandCreator {
25  
26      /**
27       * Darcs subcommand.
28       */
29      private static final String COMMAND = "get";
30      /**
31       * From where to get.
32       */
33      private String from = "";
34      /**
35       * To where to get.
36       */
37      private String to = "";
38  
39      /**
40       * Initializes the {@link DarcsBaseCommandBuilder#command} with {@value #COMMAND}.
41       *
42       * @param darcsExe name of Darcs executable, e.g. "darcs" or "/usr/local/bin/darcs"
43       */
44      DarcsGetBuilder(final String darcsExe) {
45          super(darcsExe, COMMAND);
46      }
47  
48      /**
49       * From where to get the repository.
50       *
51       * @param location file or URI
52       * @return the builder itself
53       * CHECKSTYLE:OFF
54       * @throws IllegalArgumentException if location is {@code null} or empty
55       * CHECKSTYLE:ON
56       */
57      public DarcsGetBuilder from(final String location) {
58          Validate.notEmpty(location);
59          from = location;
60          return this;
61      }
62  
63      /**
64       * To where the repository will be checked out.
65       *
66       * @param location file path
67       * @return the builder itself
68       * CHECKSTYLE:OFF
69       * @throws IllegalArgumentException if location is {@code null}
70       * CHECKSTYLE:ON
71       */
72      public DarcsGetBuilder to(final String location) {
73          Validate.notNull(location);
74          to = location;
75          return this;
76      }
77  
78      @Override
79      public DarcsCommand create() {
80          Validate.notEmpty(from, "Set from where to get the repo!");
81          final ArgumentListBuilder arguments = createArgumentList();
82          arguments.add(from);
83  
84          if (to.length() > 0) {
85              arguments.add(to);
86          }
87  
88          return new DarcsCommand(arguments);
89      }
90  
91  }