Guest User

Untitled

a guest
May 2nd, 2018
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. require 'net/ssh'
  2. require 'fileutils'
  3.  
  4. class MinhaGem
  5.  
  6. VERSION = '0.0.1'
  7.  
  8. def initialize(server, user, pass)
  9. @server = server
  10. @user = user
  11. @pass = pass
  12. @name = "testegem"
  13. end
  14.  
  15. def remote
  16. @shell = start(@server, @user, @pass)
  17. create_repo(@name)
  18. initialize_local_repo(@name)
  19. add_remote(@server, @user, @name)
  20. clone(@name)
  21. write_hook(@name)
  22. end
  23.  
  24. def start(server, user, pass)
  25. @session = Net::SSH.start(server, user, :password => pass)
  26. end
  27.  
  28. def close
  29. @session.close
  30. end
  31.  
  32. def create_repo(name)
  33. puts name
  34. puts "Criando Repositorio Git no servidor"
  35. log = @shell.exec!("cd repos/ && mkdir #{name}.git && cd #{name}.git && git init --bare")
  36. puts log
  37. end
  38.  
  39. def initialize_local_repo(name)
  40. puts "Initializando Repositorio Git local"
  41. unless dirExists?(".git/")
  42. execute("git init && git add . && git commit -m 'Initial Commit' ")
  43. else
  44. puts "Git ja esta inicializado"
  45. end
  46. end
  47.  
  48. def execute(command)
  49. Kernel.system command
  50. end
  51.  
  52. def dirExists?(dir)
  53. File.directory? dir
  54. end
  55.  
  56. def add_remote(server, user, name)
  57. execute("git remote add origin #{user}@#{server}:~/repos/#{name}.git")
  58. end
  59.  
  60. def clone(name)
  61. @shell.exec!("git clone ~/repos/#{name}.git ~/rails_app/#{name}")
  62. end
  63.  
  64. def write_hook(name)
  65. @shell.exec!("cd ~/repos/#{name}.git")
  66. @shell.exec!("touch ~/repos/#{name}.git/hooks/post-receive")
  67. @shell.exec!("chmod +x hooks/post-receive")
  68. read_hook_sample(name)
  69. end
  70.  
  71. def read_hook_sample(name)
  72. puts "Escrevendo Hook File"
  73. path = "~/repos/#{name}.git/hooks/post-receive"
  74. File.open("lib/hook.txt", "r") do |fline|
  75. while(line = fline.gets)
  76. @shell.exec!("echo '#{line}' >> #{path}")
  77. end
  78. end
  79. end
  80.  
  81. end
Add Comment
Please, Sign In to add comment