prereqs.rake 1.77 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
PREREQS_MD5_DIR = ENV["PREREQ_CACHE_DIR"] || File.join(REPO_ROOT, '.prereqs_cache')

CLOBBER.include(PREREQS_MD5_DIR)

directory PREREQS_MD5_DIR

desc "Install all prerequisites needed for the lms and cms"
task :install_prereqs => [:install_node_prereqs, :install_ruby_prereqs, :install_python_prereqs]

desc "Install all node prerequisites for the lms and cms"
11
task :install_node_prereqs => "ws:migrate" do
12
    unchanged = 'Node requirements unchanged, nothing to install'
13
    when_changed(unchanged, ['package.json']) do
14 15 16 17 18
        sh('npm install')
    end unless ENV['NO_PREREQ_INSTALL']
end

desc "Install all ruby prerequisites for the lms and cms"
19
task :install_ruby_prereqs => "ws:migrate" do
20
    unchanged = 'Ruby requirements unchanged, nothing to install'
21
    when_changed(unchanged, ['Gemfile']) do
22 23 24 25 26
        sh('bundle install')
    end unless ENV['NO_PREREQ_INSTALL']
end

desc "Install all python prerequisites for the lms and cms"
27
task :install_python_prereqs => "ws:migrate" do
28 29 30 31
    site_packages_dir = `python -c 'import os; import distutils.sysconfig as dusc; print dusc.get_python_lib()'`.chomp
    unchanged = 'Python requirements unchanged, nothing to install'
    when_changed(unchanged, ['requirements/**/*'], [site_packages_dir]) do
        ENV['PIP_DOWNLOAD_CACHE'] ||= '.pip_download_cache'
32
        sh('pip install --exists-action w -r requirements/edx/pre.txt')
33 34 35 36 37 38
        sh('pip install --exists-action w -r requirements/edx/base.txt')
        sh('pip install --exists-action w -r requirements/edx/post.txt')
        # requirements/private.txt is used to install our libs as
        # working dirs, or for personal-use tools.
        if File.file?("requirements/private.txt")
            sh('pip install -r requirements/private.txt')
39 40
        end
    end unless ENV['NO_PREREQ_INSTALL']
41
end