It's a little odd to me that sometimes this returns `:ok` to indicate the version is OK and other times it returns `nil`.  Specifically, when the major and minor parts are the same, and the patch is equal or greater, this returns `nil`.  Might be worth adding an `else :ok` clause for consistency.