Commit c8186e750735aa9a0f8efafbe2925ce8c6b33293

Thomas de Grivel 2023-02-22T23:35:25

wip upgrade

diff --git a/lib/rbpkg/repo.rb b/lib/rbpkg/repo.rb
index 5c71f25..ae81ab0 100644
--- a/lib/rbpkg/repo.rb
+++ b/lib/rbpkg/repo.rb
@@ -174,14 +174,16 @@ class Rbpkg::Repo
   end
 
   def inspect
-    """%Repo{
- name: #{name.inspect}
- dir: #{dir.inspect}
- git_url: #{git_url.inspect}
- src_dir: #{src_dir.inspect}
- src_parent_dir: #{src_parent_dir.inspect}
- head: #{head.inspect}
- hash: #{hash.inspect}
+    """%#{self.class.name}{
+ name: #{name.inspect},
+ dir: #{dir.inspect},
+ git_url: #{git_url.inspect},
+ src_dir: #{src_dir.inspect},
+ src_parent_dir: #{src_parent_dir.inspect},
+ head: #{head.inspect},
+ hash: #{hash.inspect},
+ version:           #{version.inspect},
+ installed_version: #{installed_version.inspect}
 }"""
   end
 
@@ -224,6 +226,18 @@ class Rbpkg::Repo
     File.dirname(installed)
   end
 
+  def installed_version
+    if installed?
+      File.open(installed, "r") do |input|
+        while line = input.gets
+          if version = line.scan(/^Version: (.*)$/)[0]
+            return version[0]
+          end
+        end
+      end
+    end
+  end
+
   def name
     self.class.name.to_s.downcase.scan(/::([^:]*)$/)[0][0]
   end
@@ -366,6 +380,11 @@ class Rbpkg::Repo
     end
   end
 
+  def upgrade
+    pull
+    return if installed_version == version
+  end
+
   def version
     if File.directory?(src_dir)
       "#{head}-#{hash}"