תגית: scm

ניהול מאגרים מ scm

אני משתמש אצלי ב bundle עבור vim. זהו מנגנון אשר טוען אוטומטית תוספים עבור vim בתוך ספרייה מיוחדת:

$ $HOME/.vim/bundle/

כל התוספים בהם אני משתמש עבור vim, לקוחים מהמאגרים שלהם מscm כלשהו (בעיקר git), וכל פעם מחדש לעדכן ידנית את הכל זו משימה די מעצבנת.
אז החלטתי לכתוב סקריפט לנושא, והיות ואני לא מת על bash שמסוגל לעשות עבודה טובה כאן, החלטתי לכתוב זאת ברובי:

#!/usr/bin/env ruby
#

def update(dir, type) 
  Dir.chdir(dir)
  puts "Going to update #{dir}"
  system("#{type.to_s} pull")
  Dir.chdir('..')
end

scm = [ :git, :hg ]

Dir['*'].each do |f|
  if File.ftype(f) == 'directory'
     scm.each do |s|
       if Dir[f + "/.#{s.to_s}"][0]
         update(f, s)
         break
       end # if Dir[f + "/.#{s.to_s}"][0]
     end # scm.each do |s|
  end # if File.ftype(f) == 'directory'
end # Dir['*'].each do |f|

puts 'done'

הקוד נכתב ב5 דקות וגם נראה ככה, אבל עובד כמו שצריך.
הוא עובר על כל הקבצים במערכת הספריות הנוכחית, ובודק האם הם ספריה. במידה וכן, הוא נכנס פנימה ובודק האם יש בתוכה ספריית scm כלשהי אשר מוכר לי, ובמידה וכן, הוא נכנס פנימה ומעדכן לפי הscm.
הסקריפט חייב לשבת במיקום תחת bundle בשביל לעבוד (ככה תכננתי אותו).

תהנו.