Class: Prick::Feature

Inherits:
Build
  • Object
show all
Defined in:
lib/prick/build.rb

Instance Attribute Summary

Attributes inherited from Build

#database, #migration, #project, #schema, #version

Instance Method Summary collapse

Methods inherited from Build

#<=>, #active?, #base_release, #build, #built?, #checkback, deref_node_file, #destroy, #exist?, #features, #history, #include_feature, #name, #present?, #rebuild, #remove_feature, #snapshot, #to_s

Methods included from Ensure

#ensure_state, #ensure_state_value, #revoke_state

Constructor Details

#initialize(project, base_release, name) ⇒ Feature

Returns a new instance of Feature.



325
326
327
328
329
330
331
# File 'lib/prick/build.rb', line 325

def initialize(project, base_release, name)
  base_release.is_a?(Release) || base_release.is_a?(Prerelease) or 
      raise Internal, "Expected a Release object, got #{base_release.class}"
  version = Version.new(base_release.version, feature: name)
  migration = FeatureMigration.new(Migration.path(version))
  super(project, base_release, version, migration)
end

Instance Method Details

#checkoutObject



333
334
335
336
# File 'lib/prick/build.rb', line 333

def checkout() 
  super
#     FileUtils.ln_sf(feature, "feature")
end

#createObject



338
339
340
341
342
343
344
345
# File 'lib/prick/build.rb', line 338

def create
  super
  migration.create
  migration.prepare
  Git.commit("Created feature #{feature}")
  migration.dump
  self
end

#featureObject

Name of feature



318
# File 'lib/prick/build.rb', line 318

def feature() version.feature end

#nodeObject

A feature’s node is the feature directory



321
# File 'lib/prick/build.rb', line 321

def node() release_dir end

#rebase(new_base_release) ⇒ Object



360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
# File 'lib/prick/build.rb', line 360

def rebase(new_base_release)
  # Checkout new_base_release
  # Merge feature
  # Establish symlinks
  # Create as branch

#     new_base > base_release or 
#         raise Error, "Can't rebase from #{base_release.version} to #{new_base.version}"
#     new_feature = Feature.new(project, base_release, base.version, base: base)
#     new_feature.ensure(:active)
#     schema.version = version
#     FileUtils.ln_sf("../#{feature.release_dir}", new_feature.release_dir)
#     Git.add(new_feature.release_dir)
#     new_feature
end

#release_dirObject



323
# File 'lib/prick/build.rb', line 323

def release_dir() migration.path end