Class: FlashFlow::ShadowRepo
- Inherits:
-
Object
- Object
- FlashFlow::ShadowRepo
- Defined in:
- lib/flash_flow/shadow_repo.rb
Constant Summary collapse
- FLASH_FLOW_BASE =
'.flash_flow'
Instance Method Summary collapse
- #create_shadow_repo ⇒ Object
- #current_dir ⇒ Object
- #flash_flow_base_dir ⇒ Object
- #flash_flow_dir ⇒ Object
- #in_dir(opts = {}) ⇒ Object
-
#initialize(git, opts = {}) ⇒ ShadowRepo
constructor
A new instance of ShadowRepo.
Constructor Details
#initialize(git, opts = {}) ⇒ ShadowRepo
Returns a new instance of ShadowRepo.
9 10 11 12 |
# File 'lib/flash_flow/shadow_repo.rb', line 9 def initialize(git, opts={}) @git = git @cmd_runner = CmdRunner.new(logger: opts[:logger]) end |
Instance Method Details
#create_shadow_repo ⇒ Object
26 27 28 29 30 31 |
# File 'lib/flash_flow/shadow_repo.rb', line 26 def create_shadow_repo unless Dir.exists?(flash_flow_dir) @cmd_runner.run("mkdir -p #{flash_flow_dir}") @cmd_runner.run("cp -R #{current_dir} #{flash_flow_base_dir}") end end |
#current_dir ⇒ Object
42 43 44 |
# File 'lib/flash_flow/shadow_repo.rb', line 42 def current_dir Dir.getwd end |
#flash_flow_base_dir ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/flash_flow/shadow_repo.rb', line 34 def flash_flow_base_dir if current_dir =~ /\.flash_flow/ "#{current_dir.split(FLASH_FLOW_BASE).first}#{FLASH_FLOW_BASE}" else "#{current_dir}/../#{FLASH_FLOW_BASE}" end end |
#flash_flow_dir ⇒ Object
46 47 48 |
# File 'lib/flash_flow/shadow_repo.rb', line 46 def flash_flow_dir @flash_flow_dir ||= flash_flow_base_dir + "/#{File.basename(current_dir)}" end |
#in_dir(opts = {}) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/flash_flow/shadow_repo.rb', line 14 def in_dir(opts={}) opts = { reset: true, go_back: true }.merge(opts) create_shadow_repo Dir.chdir(flash_flow_dir) do @git.fetch(@git.merge_remote) @git.run("reset --hard HEAD") if opts[:reset] yield end end |