diff --git a/commands/request.go b/commands/request.go
index d13a06673df1cdfccfbb7f48d5cdec18a90c977f..0b6f87f95ee8b17897a28ec2c9ec37ba31e9be97 100644
--- a/commands/request.go
+++ b/commands/request.go
@@ -61,6 +61,7 @@ type Request interface {
 	Option(name string) *OptionValue
 	Options() optMap
 	SetOption(name string, val interface{})
+	SetOptions(opts map[string]interface{}) error
 	Arguments() []string
 	SetArguments([]string)
 	Files() File
@@ -144,6 +145,12 @@ func (r *request) SetOption(name string, val interface{}) {
 	r.options[name] = val
 }
 
+// SetOptions sets the option values, unsetting any values that were previously set
+func (r *request) SetOptions(opts map[string]interface{}) error {
+	r.options = opts
+	return r.ConvertOptions()
+}
+
 // Arguments returns the arguments slice
 func (r *request) Arguments() []string {
 	return r.arguments