Sha256: 22b71e0759155503a80a0898bc8cbc85f35bded772653a1d593ed6ac04c43a66

Contents?: true

Size: 1.35 KB

Versions: 4

Compression:

Stored size: 1.35 KB

Contents

require "fileutils"
require "gems"

module Jets::Thor
  class VersionCheck
    def check!
      return unless check_needed?

      remote_version = Gems.info("jets")["version"]
      local_version = Gem.loaded_specs["jets"].version

      return if remote_version.nil?

      if Gem::Version.new(remote_version) > Gem::Version.new(local_version)
        puts <<~EOL
          jets has a newer version available.

          installed version: #{local_version}
          latest version:    #{remote_version}

          Please update jets
        EOL
      end

      save_last_checked_time
    end

    def check_needed?
      check_interval = 24 * 60 * 60  # 24 hours in seconds
      Time.now - last_checked_time >= check_interval
    end

    def last_checked_time
      last_time = File.exist?(last_check_file) ? File.read(last_check_file) : "1970-01-01 00:00:00 UTC"
      Time.parse(last_time)
    end

    def save_last_checked_time
      FileUtils.mkdir_p(File.dirname(last_check_file))
      File.write(last_check_file, Time.now)
    end

    def last_check_file
      # Do not define last_check_file as a LAST_CHECK_FILE constant
      # On AWS lambda, Jets eager load errors since ENV["HOME"] is nil
      # Note: Added an extra safeguard in case ENV["HOME"] is nil
      home = ENV["HOME"] || "/root"
      File.join(home, ".jets/tmp/last-checked.txt")
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
jets-6.0.5 lib/jets/thor/version_check.rb
jets-6.0.4 lib/jets/thor/version_check.rb
jets-6.0.3 lib/jets/thor/version_check.rb
jets-6.0.2 lib/jets/thor/version_check.rb