lib/core/util.rb in rise-cli-0.2.0 vs lib/core/util.rb in rise-cli-0.2.1

- old
+ new

@@ -1,113 +1,109 @@ -require 'fileutils' -require 'paint' -require 'json' -require 'http' -require 'digest' -require 'io/console' -require 'whirly' -require 'os' -require 'json' -require_relative 'constants' - -module Rise - # - # Utility methods - # - module Util - # - # Checks if rise is being run for the first time - # - def self.first_run? - !File.directory?(File.join(Dir.home, '.rise')) - end - - # - # Check for a new version of the gem - # - def self.check_for_update! - src = git_or_gem - begin - if src == 2 # if the gem was downloaded from rubygems - current_version = JSON.parse(HTTP.get('https://rubygems.org/api/v1/versions/rise-cli/latest.json'))['version'] - if current_version != Rise::Constants::VERSION - Whirly.start( - spinner: 'line', - status: "New version available (#{Paint[Rise::Constants::VERSION, 'red']} -> #{Paint[current_version, '#3498db']}), updating..." - ) do - system("gem uninstall rise-cli -v #{Rise::Constants::VERSION} > /dev/null") - system("gem install rise-cli > /dev/null") - puts Paint["Update complete, just run #{Paint['`rise`', '#3498db']} to deploy"] - end - end - elsif src == 1 - if `git log HEAD..origin/master --oneline` != '' - puts "It seems you're on bleeding edge, fetching new changes..." - vputs("Updating from #{`git show --no-color --oneline -s`.split(' ')[0]} to #{`git rev-parse --short HEAD`}") - `git pull` - puts Paint["Update complete, just run #{Paint['`rise`', '#3498db']} to deploy"] - end - end - rescue StandardError => e - puts "Unable to check for updates. Error: #{Paint[e.message, 'red']}" - exit 1 - end - end - - # - # Creates all of the necessary files and login information - # - def self.setup - puts Paint['Detected first time run, creating necessary files...', :blue] - FileUtils.mkdir(RISE_DATA_DIR) - FileUtils.mkdir(File.join(RISE_DATA_DIR, 'auth')) - - # TODO: Reimplement when the backend server actually works - # Get the input from the user - # print Paint['1. Log in\n2. Sign up\n > ', :bold] - # while (choice = gets.chomp!) - # if choice == '1' - # login - # break - # elsif choice == '2' - # signup - # break - # else - # puts Paint['Please type `1` or `2`', :red] - # next - # end - # end - end - - # - # Opens +url+ in a web browser if possible - # - def self.open_deployment_in_browser(url) - if OS.windows? - system("START \"\" \"#{url}\"") - else - system("open #{url}") - end - end - - - - protected - # - # 1 = git, 2 = gem, 3 = unknown - # - def git_or_gem - gem = nil - 1 if File.exist?(File.join(Rise::Constants::VERSION, '.git')) - if OS.windows? - gem = system('which gem > NUL') - else - gem = system('which gem > /dev/null') - end - - 2 if gem == true - 3 - end - - - end -end +require 'fileutils' +require 'paint' +require 'json' +require 'http' +require 'digest' +require 'io/console' +require 'whirly' +require 'os' +require 'json' +require_relative 'constants' + +module Rise + # + # Utility methods + # + module Util + # + # Checks if rise is being run for the first time + # + def self.first_run? + !File.directory?(File.join(Dir.home, '.rise')) + end + + # + # 1 = git, 2 = gem, 3 = unknown + # + def self.git_or_gem + gem = nil + 1 if File.exist?(File.join(Rise::Constants::VERSION, '.git')) + if OS.windows? + gem = system('which gem > NUL') + else + gem = system('which gem > /dev/null') + end + + 2 if gem == true + 3 + end + + # + # Check for a new version of the gem + # + def self.check_for_update! + src = Rise::Util.git_or_gem + begin + if src == 2 # if the gem was downloaded from rubygems + current_version = JSON.parse(HTTP.get('https://rubygems.org/api/v1/versions/rise-cli/latest.json'))['version'] + if current_version != Rise::Constants::VERSION + Whirly.start( + spinner: 'line', + status: "New version available (#{Paint[Rise::Constants::VERSION, 'red']} -> #{Paint[current_version, '#3498db']}), updating..." + ) do + system("gem uninstall rise-cli -v #{Rise::Constants::VERSION} > /dev/null") + system("gem install rise-cli > /dev/null") + puts Paint["Update complete, just run #{Paint['`rise`', '#3498db']} to deploy"] + end + end + elsif src == 1 + if `git log HEAD..origin/master --oneline` != '' + puts "It seems you're on bleeding edge, fetching new changes..." + vputs("Updating from #{`git show --no-color --oneline -s`.split(' ')[0]} to #{`git rev-parse --short HEAD`}") + `git pull` + puts Paint["Update complete, just run #{Paint['`rise`', '#3498db']} to deploy"] + end + end + rescue StandardError => e + puts "Unable to check for updates. Error: #{Paint[e.message, 'red']}" + exit 1 + end + end + + # + # Creates all of the necessary files and login information + # + def self.setup + puts Paint['Detected first time run, creating necessary files...', :blue] + FileUtils.mkdir(RISE_DATA_DIR) + FileUtils.mkdir(File.join(RISE_DATA_DIR, 'auth')) + + # TODO: Reimplement when the backend server actually works + # Get the input from the user + # print Paint['1. Log in\n2. Sign up\n > ', :bold] + # while (choice = gets.chomp!) + # if choice == '1' + # login + # break + # elsif choice == '2' + # signup + # break + # else + # puts Paint['Please type `1` or `2`', :red] + # next + # end + # end + end + + # + # Opens +url+ in a web browser if possible + # + def self.open_deployment_in_browser(url) + if OS.windows? + system("START \"\" \"#{url}\"") + else + system("open #{url}") + end + end + + end +end