35 lines
		
	
	
		
			839 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			839 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
# Disable this task as we use pnpm
 | 
						|
 | 
						|
require 'semantic_range'
 | 
						|
 | 
						|
Rake::Task['webpacker:check_yarn'].clear
 | 
						|
 | 
						|
namespace :webpacker do
 | 
						|
  desc 'Verifies if Yarn is installed'
 | 
						|
  task check_yarn: :environment do
 | 
						|
    begin
 | 
						|
      yarn_version = `yarn --version`.strip
 | 
						|
      raise Errno::ENOENT if yarn_version.blank?
 | 
						|
 | 
						|
      yarn_range = '>=4 <5'
 | 
						|
      is_valid = begin
 | 
						|
        SemanticRange.satisfies?(yarn_version, yarn_range)
 | 
						|
      rescue
 | 
						|
        false
 | 
						|
      end
 | 
						|
 | 
						|
      unless is_valid
 | 
						|
        warn "Mastodon and Webpacker requires Yarn \"#{yarn_range}\" and you are using #{yarn_version}"
 | 
						|
        warn 'Exiting!'
 | 
						|
        exit!
 | 
						|
      end
 | 
						|
    rescue Errno::ENOENT
 | 
						|
      warn 'Yarn not installed. Please see the Mastodon documentation to install the correct version.'
 | 
						|
      warn 'Exiting!'
 | 
						|
      exit!
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |