MAKEYOUR OWN
TOOLS
ChristopherCotton.com @_cotton 2013-03-07
Nashville Ruby on Rails Meetup
Why?
Repetition Sucks Repetition Sucks
Text
Repetition Sucks
Repetition Sucks
Repetition Sucks
Repetition Sucks
Repetition Sucks
Repetition SucksRepetition Sucks
Repetition Sucks
Repetition Sucks
Repetition Sucks
Repetition SucksRepetition Sucks
Repetition Sucks
Repetition Sucks
Repetition Sucks
Repetition SucksRepetition Sucks
Why?
Code Easier than Manual
Why?
Transferof Knowledge
What?
Simple Lines of Ruby
Command Line Tools
Simple Webapps
Apply lots of Regex, Regex, Regex
HOW?DOES IT WORK?
NOT PRETTYHOW?
I BUILT WHAT? HOW?
EXAMPLES
build.rbAndroid Building
OptionParser.new do |o| o.on('-d', '--deploy [DIR]', 'Deploy to HST, can pass in directory') { |dir| $deploy_dir = dir || "#{ENV['HOME']}/Hst/Dropbox" o.on('-r', '--release KEYSTORE', 'Keystore for the relase build') { |key| $keystore = key } o.on('-h', 'Print out help') { puts o; exit } o.parse!end
ensure_local_properies(File.join(buildtarget_dir, "facebook"), android_sdk_location)
# modify the AndroidManifest.xmlReplacement.file(File.join(buildtarget_dir, "AndroidManifest.xml")) do |rp| rp.buffer.gsub!(/package="#{package_prefix}.#{old_package}"/, "package=\"#{package_prefix}.#{package}\"")end
copy_assets.rbImage Asset Copying
rsync to copy assets
scale for non-retina versions
create .h/.m Object C for constants
File.open(File.join(root_dir, "Primer", "AssetConstants.h"),'w') do |file| file.puts "// Do not edit this file, it is auto generated by #{File.basename(__FILE__)}" file.puts "" image_files.each do |image| file.puts "FOUNDATION_EXPORT NSString *const kAsset_#{File.basename(image, File.extname(image))};" endend
Mini Server
translation helper
def trans2(eng, language) File.open("otherresources/#{ARGV[0]}_trans2.txt", "w") do |o| eng.each_with_index.select do |line, index| if line =~ /<key>(.+)<\/key>/ o.puts("") o.puts("Category\t#{unquote($1)}") end
if line =~ /<string>(.+)<\/string>/ o.print("\t#{unquote($1)}") language[index] =~ /<string>(!?)(.+)<\/string>/ o.puts("\t#{unquote($2)}\t#{$1}") end end endend
check_assets.rb
assets = {}total_dirs = 0
Dir.glob(File.join(dropbox, "*")).each do |root_dir|! next unless File.directory?(root_dir)! total_dirs += 1! dir_name = File.basename(root_dir)! Dir.glob(File.join(root_dir, "*")).each do |file|! ! name = File.basename(file)! ! assets[name] = (assets[name] || []).push(dir_name) ! !! end!end
assets.each do |key,value|!! puts "#{key} = #{value.inspect}" unless total_dirs == value.lengthend
Image Extraction, Composition
Spaceward Ho!
Share Your Tool
Open Source
Can Happen Much Later
Version Control
Q & A