Tag Archive > git

Xcode and git - Another build script

stompy » 14 August 2008 » In Mac OS X » 1 Comment

Update: Got broke somehow - so I fixed it.

I’ve rewritten the script from Cocoa Is My Girlfriend in ruby to append the git commit hash into an application’s Info.plist file.

This way, it keeps the version string that is added in Xcode, so the default About panel looks like this:

Bonsoir.png

Here is the script

#!/usr/bin/env ruby

# Xcode auto-versioning script for Subversion by Axel Andersson
# Updated for git by Marcus S. Zarra and Matt Long
# Converted to ruby by Abizern
# Appends the git sha to the version number set in Xcode.

# These are the common places where git is installed.
# Change this if your path isn’t here
common_git_paths = %w[/usr/local/bin/git /usr/local/git/bin/git /opt/local/bin/git]
git_path = “” 

common_git_paths.each do |p|
  if File.exist?(p)
    git_path = p
    break
  end
end

if git_path == “”
  puts “Path to git not found”
  exit
end

command_line = git_path + ” rev-parse —-short HEAD”
sha = `#{command_line}`.chomp
puts sha

info_file = ENV['BUILT_PRODUCTS_DIR'] + “/” + ENV['INFOPLIST_PATH']

f = File.open(info_file, “r”).read
re = /([\t ]+<key>CFBundleVersion<\/key>\n[\t ]+<string>)(.*?)(<\/string>)/
f =~ re

# Get the version info from the source Info.plist file
# If the script has already been run we need to remove the git sha
# from the bundle’s Info.plist.
open = $1
orig_version = $2
close = $3

# If the git has has not already been injected into the Info.plist, this will set version to nil
version = $2.sub!(/\s\(git sha [\w]+\)/, )
if (!version)
  version = orig_version
end

# Inject the git hash into the bundle’s Info.plist
sub = #{open}#{version} (git sha #{sha})#{close}
puts sub
f.gsub!(re, sub)
File.open(info_file, “w”) { |file| file.write(f) }

Make sure that the shell is set to /usr/bin/ruby

Shell_setting.png

Continue reading...

Tags: , , , ,

Bonsoir Redux

stompy » 12 August 2008 » In Bonsoir, Mac OS X » No Comments

About 2 years ago R. Tyler Ballance went to BarCampTexas and, finding himself with no place to stay, holed himself up in a coffee shop for the night and knocked up a demo application Bonsoir in about six hours.

When this app is running, it uses Apple’s Bonjour service to find other running Bonsoir apps on the network and allows swapping of AddressBook cards. The idea is that it would be useful at get togethers such as BarCamp for people to swap contact details.

This code has been placed into the public domain but it doesn’t look like anybody is working on it. So I’ve put the code up on github and I’ll see if I can’t make this a more polished app.

Actually, this is prompted a little by guilt. I was looking through my iChat transcripts the other day and I said I’d do some work on it - and that was back in 2006.

Continue reading...

Tags: , , , ,