# If you're working on more than one datamapper gem at a time, then it's
# recommended to create a local Gemfile and use this instead of the git
# sources. This will make sure that you are  developing against your
# other local datamapper sources that you currently work on. Gemfile.local
# will behave identically to the standard Gemfile apart from the fact that
# it fetches the datamapper gems from local paths. This means that you can
# use the same environment variables, like ADAPTER(S) or PLUGIN(S) when
# running
# bundle commands. Gemfile.local is added to .gitignore, so you don't need
# to worry about accidentally checking local development paths into git.
# In order to create a local Gemfile, all you need to do is run:
#
#   bundle exec rake local_gemfile
#
# This will give you a Gemfile.local file that points to your local clones
# of the various datamapper gems. It's assumed that all datamapper repo
# clones reside in the same directory. You can use the Gemfile.local like
# so for running any bundle command:
#
#   BUNDLE_GEMFILE=Gemfile.local bundle foo
#
# You can also specify which adapter(s) should be part of the bundle by
# setting an environment variable. This of course also works when using the
# Gemfile.local
#
#   bundle foo                        # dm-sqlite-adapter
#
#   ADAPTER=mysql bundle foo          # dm-mysql-adapter
#
#   ADAPTERS=sqlite,mysql bundle foo  # dm-sqlite-adapter, dm-mysql-adapter
#
# Of course you can also use the ADAPTER(S) variable when using the
# Gemfile.local and running specs against selected adapters.
#
# For easily working with adapters supported on your machine, it's
# recommended that you first install all adapters that you are planning to
# use or work on by doing something like
#
#   ADAPTERS=sqlite,mysql,postgres bundle install
#
# This will clone the various repositories and make them available to
# bundler. Once you have them installed you can easily switch between
# adapters for the various development tasks. Running something like
#
#   ADAPTER=mysql bundle exec rake spec
#
# will make sure that the dm-mysql-adapter is part of the bundle, and will
# be used when running the specs.
#
# You can also specify which plugin(s) should be part of the bundle by
# setting an environment variable. This also works when using the
# Gemfile.local
#
#   bundle foo                                 # dm-migrations
#
#   PLUGINS=dm-validations bundle foo          # dm-migrations,
#                                              # dm-validations
#
#   PLUGINS=dm-validations,dm-types bundle foo # dm-migrations,
#                                              # dm-validations,
#                                              # dm-types
#
# Of course you can combine the PLUGIN(S) and ADAPTER(S) env vars to run
# specs for certain adapter/plugin combinations.
#
# Finally, to speed up running specs and other tasks, it's recommended to
# run
#
#   bundle lock
#
# after running 'bundle install' for the first time. This will make
# 'bundle exec' run a lot faster compared to the unlocked version. With an
# unlocked bundle you would typically just run 'bundle install' from time
# to time to fetch the latest sources from upstream. When you locked your
# bundle, you need to run
#
#   bundle install --relock
#
# to make sure to fetch the latest updates and then lock the bundle again.
# Gemfile.lock is added to the .gitignore file, so you don't need to worry
# about accidentally checking it into version control.

source 'https://rubygems.org'

DATAMAPPER = 'http://github.com/datamapper'
DM_VERSION = '~> 1.0'
DO_VERSION = '~> 0.10.2'
DM_DO_ADAPTERS = %w[ sqlite postgres mysql oracle sqlserver ]
RAILS = 'http://github.com/rails/rails.git'

gem 'bcrypt-ruby',	  ['~> 3.0', '>= 2.1']

gem 'dm-core',        DM_VERSION, :git => "#{DATAMAPPER}/dm-core.git"
gem 'dm-types',		    DM_VERSION, :git => "#{DATAMAPPER}/dm-types.git"
gem 'dm-validations',	DM_VERSION, :git => "#{DATAMAPPER}/dm-validations.git"

group :development do
  gem 'rake',		        '~> 10.0'
  gem 'rubygems-tasks',	'~> 0.1'
  gem 'rspec',		      '~> 2.4'

  gem 'kramdown',   '~> 0.12'
  gem 'yard',       '~> 0.7'
end

group :datamapper do
  # We need this because we want to pin these dependencies to their git
  # master sources

  adapters = ENV['ADAPTER'] || ENV['ADAPTERS']
  adapters = adapters.to_s.tr(',', ' ').split.uniq - %w[ in_memory ]

  if (do_adapters = DM_DO_ADAPTERS & adapters).any?
    options = {}
    options[:git] = "#{DATAMAPPER}/do.git" if ENV['DO_GIT'] == 'true'

    gem 'data_objects',  DO_VERSION, options.dup

    do_adapters.each do |adapter|
      adapter = 'sqlite3' if adapter == 'sqlite'
      gem "do_#{adapter}", DO_VERSION, options.dup
    end

    gem 'dm-do-adapter', DM_VERSION, :git => "#{DATAMAPPER}/dm-do-adapter.git"
  end

  adapters.each do |adapter|
    gem "dm-#{adapter}-adapter", DM_VERSION, :git => "#{DATAMAPPER}/dm-#{adapter}-adapter.git"
  end

  plugins = ENV['PLUGINS'] || ENV['PLUGIN']
  plugins = plugins.to_s.tr(',', ' ').split.push('dm-migrations').uniq

  plugins.each do |plugin|
    gem plugin, DM_VERSION, :git => "#{DATAMAPPER}/#{plugin}.git"
  end
end