Sha256: bd3938ec7fe9def4fecaf207731441413482244831efa06c66ec793855795550

Contents?: true

Size: 1.45 KB

Versions: 8

Compression:

Stored size: 1.45 KB

Contents

module Nucleon
module Action
class Add < Nucleon.plugin_class(:action)
  
  include Mixin::Action::Project
  include Mixin::Action::Push
 
  #-----------------------------------------------------------------------------
  # Settings
  
  def configure
    super do    
      codes :project_failure,
            :add_failure,
            :push_failure
            
      register :sub_path, :str, nil
      register :editable, :bool, false
      
      project_config
      push_config
    end
  end
  
  #---
  
  def arguments
    [ :sub_path, :project_reference ]
  end

  #-----------------------------------------------------------------------------
  # Action operations
   
  def execute
    super do
      info('nucleon.actions.add.start')
      
      if project = project_load(Dir.pwd, false)
        sub_info = project.translate_reference(settings[:project_reference], settings[:editable])
        sub_path = settings[:sub_path]
          
        if sub_info
          sub_url      = sub_info[:url]
          sub_revision = sub_info[:revision]
        else
          sub_url      = settings[:project_reference]
          sub_revision = nil
        end
          
        if project.add_subproject(sub_path, sub_url, sub_revision)
          myself.status = code.push_failure unless push(project)
        else
          myself.status = code.add_failure
        end
      else
        myself.status = code.project_failure               
      end
    end
  end
end
end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
nucleon-0.1.9 lib/nucleon/action/add.rb
nucleon-0.1.8 lib/nucleon/action/add.rb
nucleon-0.1.7 lib/nucleon/action/add.rb
nucleon-0.1.6 lib/nucleon/action/add.rb
nucleon-0.1.5 lib/nucleon/action/add.rb
nucleon-0.1.4 lib/nucleon/action/add.rb
nucleon-0.1.3 lib/nucleon/action/add.rb
nucleon-0.1.2 lib/nucleon/action/add.rb