Skip to content
Snippets Groups Projects
BindingsIntrospectionCommand.h 906 B
Newer Older
  • Learn to ignore specific revisions
  • #ifndef _CLI_BINDINGS_INTROSPECTION_COMMAND_H_
    #define _CLI_BINDINGS_INTROSPECTION_COMMAND_H_
    
    #include <command/Command.h>
    #include <environment/Environment.h>
    
    namespace cli {
    
    class BindingsIntrospectionCommand : public Command {
    	std::unique_ptr < cli::Arg > m_param;
    
    public:
    	BindingsIntrospectionCommand ( std::unique_ptr < cli::Arg > param ) : m_param ( std::move ( param ) ) {
    	}
    
    	virtual Command::Result run ( Environment & environment ) const override {
    		std::string param;
    		if ( m_param != nullptr )
    			param = m_param->eval ( environment );
    
    		if ( param == "" )
    			for ( const std::string & name : environment.getBindingNames ( ) )
    				common::Streams::out << name << std::endl;
    		else
    			common::Streams::out << param << " " << environment.getBinding ( param ) << std::endl;
    
    		return Command::Result::OK;
    	}
    };
    
    } /* namespace cli */
    
    #endif /* _CLI_BINDINGS_INTROSPECTION_COMMAND_H_ */