1 package org.argeo.cli.posix; 2 3 import java.util.List; 4 5 import org.apache.commons.cli.CommandLine; 6 import org.apache.commons.cli.Option; 7 import org.apache.commons.cli.Options; 8 import org.argeo.cli.DescribedCommand; 9 10 public class Echo implements DescribedCommand<String> { 11 12 @Override 13 public Options getOptions() { 14 Options options = new Options(); 15 options.addOption(Option.builder("n").desc("do not output the trailing newline").build()); 16 return options; 17 } 18 19 @Override 20 public String getDescription() { 21 return "Display a line of text"; 22 } 23 24 @Override 25 public String getUsage() { 26 return "[STRING]..."; 27 } 28 29 @Override 30 public String apply(List<String> args) { 31 CommandLine cl = toCommandLine(args); 32 33 StringBuffer sb = new StringBuffer(); 34 for (String s : cl.getArgList()) { 35 sb.append(s).append(' '); 36 } 37 38 if (cl.hasOption('n')) { 39 sb.deleteCharAt(sb.length() - 1); 40 } else { 41 sb.setCharAt(sb.length() - 1, '\n'); 42 } 43 return sb.toString(); 44 } 45 46 }