Sha256: 852763130e77d23bc52d30cfd5813c059f5b6566c47855a23a93fe279bbc155b

Contents?: true

Size: 1.52 KB

Versions: 2

Compression:

Stored size: 1.52 KB

Contents

namespace :nvm do
  task :validate do
    on release_roles(fetch(:nvm_roles)) do |host|
      nvm_node = fetch(:nvm_node)
      if nvm_node.nil?
        info 'nvm: nvm_node is not set; node version will be defined by the remote hosts via nvm'
      end

      # don't check the nvm_node_dir if :nvm_node is not set (it will always fail)
      unless nvm_node.nil? || (test "[ -d #{fetch(:nvm_node_dir)} ]")
        warn "nvm: #{nvm_node} is not installed or not found in #{fetch(:nvm_node_dir)} on #{host}"
        exit 1
      end
    end
  end

  task :map_bins do
    SSHKit.config.default_env.merge!({ nvm_root: fetch(:nvm_path), node_version: fetch(:nvm_node) })
    nvm_prefix = fetch(:nvm_prefix, proc { "source #{fetch(:nvm_path)}/nvm.sh; " })
    SSHKit.config.command_map[:nvm] = "#{fetch(:nvm_path)}/nvm.sh"

    fetch(:nvm_map_bins).uniq.each do |command|
      SSHKit.config.command_map.prefix[command.to_sym].unshift(nvm_prefix)
    end
  end
end

Capistrano::DSL.stages.each do |stage|
  after stage, 'nvm:validate'
  after stage, 'nvm:map_bins'
end

namespace :load do
  task :defaults do
    set :nvm_path, -> {
      nvm_path = fetch(:nvm_custom_path)
      nvm_path ||= case fetch(:nvm_type, :user)
      when :system
        '/usr/local/opt/nvm'
      when :fullstaq
        '/usr/lib/nvm'
      else
        '$HOME/.nvm'
      end
    }

    set :nvm_roles, fetch(:nvm_roles, :all)

    set :nvm_node_dir, -> { "#{fetch(:nvm_path)}/versions/node/#{fetch(:nvm_node)}" }
    set :nvm_map_bins, %w{rake gem bundle yarn rails}
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
capistrano-nvm202x-3.0.0 lib/capistrano/tasks/nvm.rake
capistrano-nvm202x-2.2.0 lib/capistrano/tasks/nvm.rake