lib/pbmenv.rb in pbmenv-0.1.12 vs lib/pbmenv.rb in pbmenv-0.1.13
- old
+ new
@@ -1,9 +1,10 @@
# frozen_string_literal: true
require "securerandom"
require "pathname"
+require "logger"
require_relative "pbmenv/version"
require_relative "pbmenv/cli"
require_relative "pbmenv/pbm"
require_relative "pbmenv/helper"
@@ -14,12 +15,45 @@
require_relative "pbmenv/services/destroy_version_service"
require_relative "pbmenv/services/use_version_service"
require_relative "pbmenv/services/download_src_service"
module Pbmenv
- PBM_DIR = "/usr/share/pbm"
+ PBM_DIR = "/usr/share/pbm" # NOTE: pbmから参照している
+ DEFAULT_PBM_DIR = PBM_DIR
+ class << self
+ attr_accessor :logger
+ end
+
+ @current_pbm_dir = DEFAULT_PBM_DIR
+
+ self.logger = Logger.new($stdout)
+ self.logger.formatter = proc do |severity, datetime, progname, message|
+ "#{message}\n"
+ end
+
+ # @param [String] to_dir
+ # @return [void]
+ # NOTE: テスト用
+ def self.chdir(to_dir)
+ raise(ArgumentError, 'テスト以外では実行できません') unless defined?(RSpec)
+ @current_pbm_dir = to_dir
+ end
+
+ # @return [String]
+ def self.pbm_dir
+ @current_pbm_dir
+ end
+
+ # @return [void]
+ def self.slice_logger
+ previous_logger = self.logger
+ self.logger = Logger.new(File.open(File::NULL, "w"))
+ yield
+ self.logger = previous_logger
+ end
+
# @return [Pbmenv::DirectoryObject]
def self.current_directory
Pbmenv::DirectoryObject.new(path: VersionPathname.current)
end
@@ -27,25 +61,25 @@
Pbmenv::PBM.new.available_versions.map { |x| x["name"] =~ /^v([\d.]+)/ && $1 }.compact
end
# @return [Array<Pbmenv::VersionObject>]
def self.installed_versions
- unsorted_dirs = Dir.glob("#{Pbmenv::PBM_DIR}/v*")
+ unsorted_dirs = Dir.glob("#{Pbmenv.pbm_dir}/v*")
sorted_version_names = unsorted_dirs.map { |name| Pathname.new(name).basename.to_s =~ /^v([\d.]+)/ && $1 }.compact.sort_by {|x| Gem::Version.new(x) }
sorted_version_names.map do |version_name|
VersionObject.new(
version_name: version_name,
is_latest: sorted_version_names.last == version_name,
is_current: Pbmenv.current_directory.readlink&.end_with?(version_name) || false,
)
end
end
- # @deprecated
- def self.versions
- unsorted_dirs = Dir.glob("#{Pbmenv::PBM_DIR}/v*")
- unsorted_dirs.map { |name| Pathname.new(name).basename.to_s =~ /^v([\d.]+)/ && $1 }.compact.sort_by {|x| Gem::Version.new(x) }.compact
+ def self.command_versions
+ self.installed_versions.map do |version|
+ version.current_version? ? "* #{version.name}" : " #{version.name}"
+ end
end
def self.install(version, use_option: false, enable_pbm_cloud: false)
raise "Need a version" if version.nil?
version =
@@ -78,10 +112,10 @@
def self.use(version)
raise "Need a version" if version.nil?
version =
if version == 'latest'
- self.versions.last
+ self.installed_versions.last.name
else
Helper.normalize_version(version) or raise "mismatch version number!"
end
begin