Sha256: 31698527c4fdb9d9cfb5f7ed2b5cee668bc295ec2f59c7010c315546c30f0a6a

Contents?: true

Size: 1.55 KB

Versions: 2

Compression:

Stored size: 1.55 KB

Contents

module Depec
  module Target
    class Node < Base
      #
      # @return [String]
      #
      def node_version_file
        File.join(@dir, '.node-version')
      end

      #
      # @return [String]
      #
      def package_json
        File.join(@dir, 'package.json')
      end

      #
      # @return [String]
      #
      def yarn_lock
        File.join(@dir, 'yarn.lock')
      end

      #
      # @return [Boolean]
      #
      def used?
        File.exists?(package_json)
      end
      
      #
      # @return [String]
      #
      def version
        if File.exists?(node_version_file)
          File.open(node_version_file) { |f| return f.gets.strip }
        elsif File.exists?(package_json)
          engine_section = false
          File.open(package_json) do |f|
            f.each_line do |line|
              engine_section = true if line.include?('"engines"')
              if engine_section && line.include?('"node"')
                return line.match(/"node": "(?<version>.*)"/)[:version]
              end
            end
          end

          return nil
        end
      end
  
      #
      # @param [String] npm
      # @return [String]
      #
      def npm_version(npm)
        return unless File.exists?(yarn_lock)
        
        version_line = false
        File.open(yarn_lock) do |f|
          f.each_line do |line|
            return line.match(/version \"(?<version>.*)\"/)[:version] if version_line
            version_line = true if line.match?(/^#{npm}@/)
          end
        end
        
        return nil
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
depec-1.0.1 lib/depec/target/node.rb
depec-1.0.0 lib/depec/target/node.rb