Module: Homesick::Actions
- Included in:
- Homesick
- Defined in:
- lib/homesick/actions.rb
Instance Method Summary collapse
-
#git_clone(repo, config = {}) ⇒ Object
TODO move this to be more like thor’s template, empty_directory, etc.
- #git_commit_all(config = {}) ⇒ Object
- #git_init(path = ".") ⇒ Object
- #git_pull(config = {}) ⇒ Object
- #git_push(config = {}) ⇒ Object
- #git_remote_add(name, url) ⇒ Object
- #git_submodule_init(config = {}) ⇒ Object
- #git_submodule_update(config = {}) ⇒ Object
- #ln_s(source, destination, config = {}) ⇒ Object
- #mv(source, destination, config = {}) ⇒ Object
Instance Method Details
#git_clone(repo, config = {}) ⇒ Object
TODO move this to be more like thor’s template, empty_directory, etc
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/homesick/actions.rb', line 4 def git_clone(repo, config = {}) config ||= {} destination = config[:destination] || begin repo =~ /([^\/]+)(?:\.git)?$/ $1 end destination = Pathname.new(destination) unless destination.kind_of?(Pathname) FileUtils.mkdir_p destination.dirname if ! destination.directory? say_status 'git clone', "#{repo} to #{destination.}", :green unless [:quiet] ok = system "git clone -q #{repo} #{destination}" unless [:pretend] # Fallback to HTTPS unless ok say_status 'git clone', "#{repo} failed, trying HTTP", :green unless [:quiet] repo.sub!(/:/, '/') repo.sub!(/git@/, 'https://') system "git clone -q #{repo} #{destination}" unless [:pretend] end else say_status :exist, destination., :blue unless [:quiet] end end |
#git_commit_all(config = {}) ⇒ Object
74 75 76 77 |
# File 'lib/homesick/actions.rb', line 74 def git_commit_all(config = {}) say_status 'git commit all', '', :green unless [:quiet] system "git commit -v -a" unless [:pretend] end |
#git_init(path = ".") ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/homesick/actions.rb', line 29 def git_init(path = ".") path = Pathname.new(path) inside path do unless path.join('.git').exist? say_status 'git init', '' unless [:quiet] system "git init >/dev/null" unless [:pretend] else say_status 'git init', 'already initialized', :blue unless [:quiet] end end end |
#git_pull(config = {}) ⇒ Object
64 65 66 67 |
# File 'lib/homesick/actions.rb', line 64 def git_pull(config = {}) say_status 'git pull', '', :green unless [:quiet] system "git pull --quiet" unless [:pretend] end |
#git_push(config = {}) ⇒ Object
69 70 71 72 |
# File 'lib/homesick/actions.rb', line 69 def git_push(config = {}) say_status 'git push', '', :green unless [:quiet] system "git push" unless [:pretend] end |
#git_remote_add(name, url) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/homesick/actions.rb', line 42 def git_remote_add(name, url) existing_remote = `git config remote.#{name}.url`.chomp existing_remote = nil if existing_remote == '' unless existing_remote say_status 'git remote', "add #{name} #{url}" unless [:quiet] system "git remote add #{name} #{url}" unless [:pretend] else say_status 'git remote', "#{name} already exists", :blue unless [:quiet] end end |
#git_submodule_init(config = {}) ⇒ Object
54 55 56 57 |
# File 'lib/homesick/actions.rb', line 54 def git_submodule_init(config = {}) say_status 'git submodule', 'init', :green unless [:quiet] system "git submodule --quiet init" unless [:pretend] end |
#git_submodule_update(config = {}) ⇒ Object
59 60 61 62 |
# File 'lib/homesick/actions.rb', line 59 def git_submodule_update(config = {}) say_status 'git submodule', 'update', :green unless [:quiet] system "git submodule --quiet update --init --recursive >/dev/null 2>&1" unless [:pretend] end |
#ln_s(source, destination, config = {}) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/homesick/actions.rb', line 95 def ln_s(source, destination, config = {}) source = Pathname.new(source) destination = Pathname.new(destination) if destination.symlink? if destination.readlink == source say_status :identical, destination., :blue unless [:quiet] else say_status :conflict, "#{destination} exists and points to #{destination.readlink}", :red unless [:quiet] if [:force] || shell.file_collision(destination) { source } system "ln -nsf #{source} #{destination}" unless [:pretend] end end elsif destination.exist? say_status :conflict, "#{destination} exists", :red unless [:quiet] if [:force] || shell.file_collision(destination) { source } system "ln -sf #{source} #{destination}" unless [:pretend] end else say_status :symlink, "#{source.} to #{destination.}", :green unless [:quiet] system "ln -s #{source} #{destination}" unless [:pretend] end end |
#mv(source, destination, config = {}) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/homesick/actions.rb', line 79 def mv(source, destination, config = {}) source = Pathname.new(source) destination = Pathname.new(destination + source.basename) if destination.exist? say_status :conflict, "#{destination} exists", :red unless [:quiet] if [:force] || shell.file_collision(destination) { source } system "mv #{source} #{destination}" unless [:pretend] end else # this needs some sort of message here. system "mv #{source} #{destination}" unless [:pretend] end end |