 		} else if let defaultValue = option.defaultValue {
 			return success(defaultValue)
 		} else {
-			// TODO: Flags vs. missing options will need to be differentiated
-			// once we support booleans.
-			return failure(option.invalidUsageError(""))
+			return failure(missingArgumentError(option.description))
 		}
 
 	case .Usage:

					case let .Value(value):
						foundValue = value
						continue argumentLoop
					
					default:
						break
					}
				}

				let description = "Missing value for argument --\(key)"
				return failure(CarthageError.InvalidArgument(description: description).error)
			} else {
				rawArguments.append(arg)
			}

			return "\"\(value)\""
		}
	}
}

/// Constructs an `InvalidArgument` error that indicates a missing value for
/// the argument by the given name.
private func missingArgumentError(argumentName: String) -> NSError {
	let description = "Missing argument for \(argumentName)"
	return CarthageError.InvalidArgument(description: description).error
}

/// Destructively parses a list of command-line arguments.
