Skip to content

Commit

Permalink
Help text shows command name and version
Browse files Browse the repository at this point in the history
  • Loading branch information
dblevins committed Feb 10, 2024
1 parent 705b3c9 commit e27b6f1
Show file tree
Hide file tree
Showing 16 changed files with 247 additions and 77 deletions.
4 changes: 3 additions & 1 deletion tomitribe-crest/src/main/java/org/tomitribe/crest/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ public Builder version(final String version) {
* and finally to System.getenv("CMD").
*/
public Builder name(final String name) {
this.version = name;
this.name = name;
return this;
}

Expand Down Expand Up @@ -501,6 +501,8 @@ public Main build() {
.in(in)
.err(err)
.properties(properties)
.name(name)
.version(version)
.build();

final Iterable<Class<?>> commands = this.commands.size() == 0 ? Commands.load() : this.commands;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
import org.tomitribe.crest.cmds.processors.Item;
import org.tomitribe.crest.cmds.processors.OptionParam;
import org.tomitribe.crest.cmds.processors.Param;
import org.tomitribe.crest.cmds.targets.SimpleBean;
import org.tomitribe.crest.cmds.targets.Substitution;
import org.tomitribe.crest.cmds.targets.Target;
import org.tomitribe.crest.cmds.utils.CommandLine;
Expand Down Expand Up @@ -144,11 +143,6 @@ public List<Param> getArguments() {
}
}

public CmdMethod(final Method method, final DefaultsContext defaultsFinder,
final BeanValidationImpl beanValidation) {
this(method, new SimpleBean(null), defaultsFinder, beanValidation);
}

public CmdMethod(final Method method, final Target target, final DefaultsContext defaultsFinder,
final BeanValidationImpl beanValidation) {
this.target = target;
Expand Down Expand Up @@ -410,8 +404,14 @@ private void validate() {
*/
@Override
public String getUsage() {

String commandName = name;

final String prefix = Environment.get().getName();
if (prefix != null && prefix.length() > 0) {
commandName = prefix + " " + commandName;
}

final Class<?> declaringClass = method.getDeclaringClass();
final Map<String, Cmd> commands = Commands.get(declaringClass);
if (commands.size() == 1 && commands.values().iterator().next() instanceof CmdGroup) {
Expand Down Expand Up @@ -655,11 +655,11 @@ public void manual(final PrintStream out) {

final Javadoc javadoc = JavadocParser.parse(commandJavadoc.getJavadoc());

if (javadoc.isEmpty()){
if (javadoc.isEmpty()) {
help(out);
return;
}

final Document.Builder manual = Document.builder()
.heading("NAME")
.paragraph(name)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.tomitribe.crest.api.Command;
import org.tomitribe.crest.cmds.Cmd;
import org.tomitribe.crest.cmds.CmdGroup;
import org.tomitribe.crest.environments.Environment;
import org.tomitribe.crest.help.CommandJavadoc;
import org.tomitribe.crest.help.Document;
import org.tomitribe.crest.help.DocumentParser;
Expand Down Expand Up @@ -91,6 +92,21 @@ public static void optionHelp(final Method method, final String commandName,

// out.println();
}

final Environment environment = Environment.ENVIRONMENT_THREAD_LOCAL.get();
final String name = environment.getName();
final String version = environment.getVersion();

if (name == null && version == null) {
return;
}

if (name == null) {
out.printf("%nVersion %s%n", version);
return;
}

out.printf("%n%s %s%n", name, version);
}

public static List<Item> getItems(final Method method, final String commandName, final Collection<OptionParam> optionParams) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import java.util.Map;
import java.util.Properties;

@Deprecated
public interface Environment {

ThreadLocal<Environment> ENVIRONMENT_THREAD_LOCAL = new ThreadLocal<Environment>() {
Expand All @@ -31,6 +30,16 @@ protected Environment initialValue() {
}
};

static Environment get() {
return ENVIRONMENT_THREAD_LOCAL.get();
}

static Environment set(final Environment environment) {
final Environment old = ENVIRONMENT_THREAD_LOCAL.get();
ENVIRONMENT_THREAD_LOCAL.set(environment);
return old;
}

PrintStream getOutput();

PrintStream getError();
Expand All @@ -44,4 +53,12 @@ default Map<String, String> getEnv() {
}

<T> T findService(Class<T> type);

default String getName() {
return null;
}

default String getVersion() {
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,28 +32,42 @@ public class SystemEnvironment implements Environment {
private final PrintStream err;
private final InputStream in;
private final Properties properties;
private final String name;
private final String version;

public SystemEnvironment(final Map<Class<?>, Object> services) {
this(services, System.out, System.err, System.in, System.getProperties());
this(services, System.out, System.err, System.in, System.getProperties(), null, null);
}

protected SystemEnvironment(final Map<Class<?>, Object> services,
final PrintStream out,
final PrintStream err,
final InputStream in,
final Properties properties) {
final Properties properties, final String name, final String version) {
this.services = new HashMap<>(services);
this.out = out;
this.err = err;
this.in = in;
this.properties = properties;
this.name = name;
this.version = version;
init();
}

public SystemEnvironment() {
this(new HashMap<>());
}

@Override
public String getName() {
return name;
}

@Override
public String getVersion() {
return version;
}

@Override
public PrintStream getOutput() {
return out;
Expand Down Expand Up @@ -87,6 +101,8 @@ public static Builder builder() {
}

public static final class Builder {
private String name;
private String version;
private Map<Class<?>, Object> services = new HashMap<>();
private PrintStream out;
private PrintStream err;
Expand All @@ -96,6 +112,7 @@ public static final class Builder {
private Builder() {
}


public Builder services(Map<Class<?>, Object> services) {
this.services = services;
return this;
Expand All @@ -111,6 +128,16 @@ public Builder out(PrintStream out) {
return this;
}

public Builder name(String name) {
this.name = name;
return this;
}

public Builder version(String version) {
this.version = version;
return this;
}

public Builder err(PrintStream err) {
this.err = err;
return this;
Expand All @@ -127,7 +154,7 @@ public Builder properties(Properties properties) {
}

public SystemEnvironment build() {
return new SystemEnvironment(services, out, err, in, properties);
return new SystemEnvironment(services, out, err, in, properties, name, version);
}
}
}
Loading

0 comments on commit e27b6f1

Please sign in to comment.