Package restx.shell.commands

Source Code of restx.shell.commands.SystemCommands

package restx.shell.commands;

import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import restx.factory.Module;
import restx.factory.Provides;
import restx.shell.RestxShell;
import restx.shell.ShellCommand;
import restx.shell.ShellCommandRunner;
import restx.shell.StdShellCommand;

import java.io.File;
import java.util.List;

/**
* User: xavierhanin
* Date: 4/9/13
* Time: 10:11 PM
*/
@Module
public class SystemCommands {

    @Provides public ShellCommand cd() {
        return new StdShellCommand(ImmutableList.of("cd"), "change current directory") {
            @Override
            protected Optional<? extends ShellCommandRunner> doMatch(String line) {
                List<String> args = splitArgs(line);

                if (args.size() < 2) {
                    return Optional.absent();
                }

                final String to = args.get(1);

                return Optional.of(new ShellCommandRunner() {
                    @Override
                    public void run(RestxShell shell) throws Exception {
                        shell.cd(shell.currentLocation().resolve(to));
                    }
                });
            }
        };
    }

    @Provides public ShellCommand pwd() {
        return new StdShellCommand(ImmutableList.of("pwd"), "print current directory") {
            @Override
            protected Optional<? extends ShellCommandRunner> doMatch(String line) {
                return Optional.of(new ShellCommandRunner() {
                    @Override
                    public void run(RestxShell shell) throws Exception {
                        shell.println(shell.currentLocation().toAbsolutePath().toString());
                    }
                });
            }
        };
    }

    @Provides public ShellCommand ls() {
        return new StdShellCommand(ImmutableList.of("ls"), "print current directory content") {
            @Override
            protected Optional<? extends ShellCommandRunner> doMatch(String line) {
                return Optional.of(new ShellCommandRunner() {
                    @Override
                    public void run(RestxShell shell) throws Exception {
                        File currentDir = shell.currentLocation().toFile();
                        if (currentDir != null) {
                            if (currentDir.isDirectory()) {
                                if (currentDir.list().length > 0) {
                                    for (String contentFileName : currentDir.list()) {
                                        shell.println(contentFileName);
                                    }
                                } else {
                                    shell.println("Current directory is empty");
                                }
                            } else {
                                shell.println("Current location is not a directory");
                            }
                        }
                    }
                });
            }
        };
    }

}
TOP

Related Classes of restx.shell.commands.SystemCommands

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.