]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.cli/src/org/argeo/cms/cli/FileSync.java
1 package org
.argeo
.cms
.cli
;
4 import java
.net
.URISyntaxException
;
5 import java
.nio
.file
.Path
;
6 import java
.nio
.file
.Paths
;
9 import org
.apache
.commons
.cli
.CommandLine
;
10 import org
.apache
.commons
.cli
.Option
;
11 import org
.apache
.commons
.cli
.Options
;
12 import org
.argeo
.api
.cli
.CommandArgsException
;
13 import org
.argeo
.api
.cli
.DescribedCommand
;
14 import org
.argeo
.cms
.file
.PathSync
;
15 import org
.argeo
.cms
.file
.SyncResult
;
17 public class FileSync
implements DescribedCommand
<SyncResult
<Path
>> {
18 final static Option deleteOption
= Option
.builder().longOpt("delete").desc("delete from target").build();
19 final static Option recursiveOption
= Option
.builder("r").longOpt("recursive").desc("recurse into directories")
21 final static Option progressOption
= Option
.builder().longOpt("progress").hasArg(false).desc("show progress")
25 public SyncResult
<Path
> apply(List
<String
> t
) {
27 CommandLine line
= toCommandLine(t
);
28 List
<String
> remaining
= line
.getArgList();
29 if (remaining
.size() == 0) {
30 throw new CommandArgsException("There must be at least one argument");
32 URI sourceUri
= new URI(remaining
.get(0));
34 if (remaining
.size() == 1) {
35 targetUri
= Paths
.get(System
.getProperty("user.dir")).toUri();
37 targetUri
= new URI(remaining
.get(1));
39 boolean delete
= line
.hasOption(deleteOption
.getLongOpt());
40 boolean recursive
= line
.hasOption(recursiveOption
.getLongOpt());
41 PathSync pathSync
= new PathSync(sourceUri
, targetUri
, delete
, recursive
);
42 return pathSync
.call();
43 } catch (URISyntaxException e
) {
44 throw new CommandArgsException(e
);
49 public Options
getOptions() {
50 Options options
= new Options();
51 options
.addOption(recursiveOption
);
52 options
.addOption(deleteOption
);
53 options
.addOption(progressOption
);
58 public String
getUsage() {
59 return "[source URI] [target URI]";
62 public static void main(String
[] args
) {
63 DescribedCommand
.mainImpl(new FileSync(), args
);
64 // Options options = new Options();
65 // options.addOption("r", "recursive", false, "recurse into directories");
66 // options.addOption(Option.builder().longOpt("progress").hasArg(false).desc("show progress").build());
68 // CommandLineParser parser = new DefaultParser();
70 // CommandLine line = parser.parse(options, args);
71 // List<String> remaining = line.getArgList();
72 // if (remaining.size() == 0) {
73 // System.err.println("There must be at least one argument");
74 // printHelp(options);
77 // URI sourceUri = new URI(remaining.get(0));
79 // if (remaining.size() == 1) {
80 // targetUri = Paths.get(System.getProperty("user.dir")).toUri();
82 // targetUri = new URI(remaining.get(1));
84 // PathSync pathSync = new PathSync(sourceUri, targetUri);
86 // } catch (Exception exp) {
87 // exp.printStackTrace();
88 // printHelp(options);
93 // public static void printHelp(Options options) {
94 // HelpFormatter formatter = new HelpFormatter();
95 // formatter.printHelp("sync SRC [DEST]", options, true);
99 public String
getDescription() {
100 return "Synchronises files";