Advertisement
Guest User

Untitled

a guest
Aug 18th, 2012
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.88 KB | None | 0 0
  1.  
  2. $data = {}
  3.  
  4. $data['cat'] = <<'EOF'
  5. def cat *args
  6.   puts args.map{|arg| $data[arg]}.join "\n"
  7. end
  8. EOF
  9.  
  10. $data['set'] = <<'EOF'
  11. def set arg
  12.   $data[arg] = STDIN.read
  13. end
  14. EOF
  15.  
  16. $data['edit'] = <<'EOF'
  17. def edit key
  18.   require 'tempfile'
  19.   path = ""
  20.   Tempfile.open "-meta--#{key}-" do |temp|
  21.     path = temp.path
  22.     temp.print $data[key]
  23.   end
  24.   system(ENV['EDITOR'] || ENV['VISUAL'] || '/usr/bin/nano', path)
  25.   File.open(path, 'r') {|f| $data[key] = f.read }
  26. end
  27. EOF
  28.  
  29. $data['code'] = <<'EOF'
  30. eval $data['cat']
  31. eval $data['set']
  32. eval $data['edit']
  33. command = ARGV.shift
  34. send command.to_sym, *ARGV
  35. File.open $0, 'w' do |f|
  36.   f.print '$data = {}', "\n"
  37.   $data.each_key do |k|
  38.     f.print '$data[\'', k, '\'] = <<\'EOF\'', "\n#{$data[k]}EOF\n"
  39.   end
  40.   f.print $data['bootstrap']
  41. end
  42. EOF
  43.  
  44. $data['bootstrap'] = <<'EOF'
  45. eval $data['code']
  46. EOF
  47.  
  48. eval $data['code']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement