diff --git a/bin/tools_lib/empty_file.rb b/bin/tools_lib/empty_file.rb deleted file mode 100644 index 72e69e7..0000000 --- a/bin/tools_lib/empty_file.rb +++ /dev/null @@ -1,5 +0,0 @@ -class EmptyFile - def lines - [] - end -end diff --git a/bin/tools_lib/tools.rb b/bin/tools_lib/tools.rb index 40917d6..68dc6cf 100644 --- a/bin/tools_lib/tools.rb +++ b/bin/tools_lib/tools.rb @@ -11,13 +11,25 @@ class Tools end def list_tools - tools.sort.each do |tool, version| - if available_tools.include? tool - puts "#{tool_icon(tool)}#{tool.ljust(max_length)} #{version}" + tools.sort.each do |tool, meta| + if available_tools.include?(tool) + puts "#{tool_icon(tool)}" \ + "#{tool.ljust(max_length)} " \ + "#{version(meta)}" end end end + private + + def version(meta) + if installed?(meta) + "\e[37m#{meta[:version]}" + else + "\e[31m#{meta[:version]}* (not installed)" + end + end + def max_length @max_length ||= installed_tools.max_by(&:length).length end @@ -29,4 +41,8 @@ class Tools def available_tools TOOL_ICONS.keys end + + def installed?(meta) + meta[:source].start_with?("/") + end end diff --git a/bin/tools_lib/tools_file.rb b/bin/tools_lib/tools_file.rb index d02efd4..76365f5 100644 --- a/bin/tools_lib/tools_file.rb +++ b/bin/tools_lib/tools_file.rb @@ -1,5 +1,3 @@ -require_relative "empty_file" - class ToolsFile def initialize end @@ -12,13 +10,12 @@ class ToolsFile def format_tools Hash[tools_file.lines.map do |tool| - tool.split + name, version, source = tool.split + [name, { version: version, source: source }] end] end def tools_file - File.read(".tool-versions") - rescue - EmptyFile.new + `asdf current 2>&1` end end