Class: Prick::AbstractRelease
Direct Known Subclasses
Instance Attribute Summary collapse
-
#archive ⇒ Object
readonly
Cache object.
-
#node ⇒ Object
readonly
Redefine Build#node.
Attributes inherited from Build
#database, #migration, #project, #schema, #version
Instance Method Summary collapse
- #<=>(other) ⇒ Object
- #cache ⇒ Object
- #cached? ⇒ Boolean
-
#create(create_release_link_file: true) ⇒ Object
Create the release in Git and on the disk.
- #dump ⇒ Object
-
#initialize(project, base_release, version, migration, **opts) ⇒ AbstractRelease
constructor
A new instance of AbstractRelease.
- #load ⇒ Object
- #loaded? ⇒ Boolean
- #prepare(commit: true) ⇒ Object
-
#release_dir ⇒ Object
The directory representing this release.
-
#tag ⇒ Object
Tag.
- #uncache ⇒ Object
- #unload ⇒ Object
Methods inherited from Build
#active?, #base_release, #build, #built?, #checkback, #checkout, 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, version, migration, **opts) ⇒ AbstractRelease
Returns a new instance of AbstractRelease.
179 180 181 182 183 |
# File 'lib/prick/build.rb', line 179 def initialize(project, base_release, version, migration, **opts) super @node = File.join(RELEASE_DIR, name) @archive = DumpFile.new(project, version.to_s) end |
Instance Attribute Details
#archive ⇒ Object (readonly)
Cache object
169 170 171 |
# File 'lib/prick/build.rb', line 169 def archive @archive end |
#node ⇒ Object (readonly)
Redefine Build#node
172 173 174 |
# File 'lib/prick/build.rb', line 172 def node @node end |
Instance Method Details
#<=>(other) ⇒ Object
198 |
# File 'lib/prick/build.rb', line 198 def <=>(other) version <=> other.version end |
#cache ⇒ Object
186 |
# File 'lib/prick/build.rb', line 186 def cache() database.save(archive.path) end |
#cached? ⇒ Boolean
185 |
# File 'lib/prick/build.rb', line 185 def cached?() archive.exist? end |
#create(create_release_link_file: true) ⇒ Object
Create the release in Git and on the disk
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 |
# File 'lib/prick/build.rb', line 201 def create(create_release_link_file: true) super() # Create release link file (eg. releases/0.1.0) if create_release_link_file base_release_dir = (version.zero? ? "/dev/null" : "../#{migration.path}") Dir.chdir(RELEASE_DIR) { FileUtils.ln_s(base_release_dir, File.basename(node)) } Git.add(node) end # Set schema version project.schema.version = version Git.add(project.schema.path) end |
#dump ⇒ Object
218 219 220 221 222 223 224 225 226 227 228 |
# File 'lib/prick/build.rb', line 218 def dump return self $stderr.puts "#{self.class} #{version}" $stderr.indent { |f| f.puts "node : #{node.inspect}" f.puts "base_release: #{base_release&.version.inspect}" f.puts "migration : #{migration&.path.inspect}" f.puts "release_dir : #{release_dir.inspect}" } self end |
#load ⇒ Object
190 |
# File 'lib/prick/build.rb', line 190 def load() database.ensure(:loaded, archive.file) end |
#loaded? ⇒ Boolean
189 |
# File 'lib/prick/build.rb', line 189 def loaded?() schema.loaded?(database) end |
#prepare(commit: true) ⇒ Object
193 194 195 196 |
# File 'lib/prick/build.rb', line 193 def prepare(commit: true) migration.prepare Git.commit("Prepared next release") if commit end |
#release_dir ⇒ Object
The directory representing this release. It is initially empty. It is the same as the next release’s migration directory and contains features that require this release
177 |
# File 'lib/prick/build.rb', line 177 def release_dir() raise AbstractMethod end |
#tag ⇒ Object
Tag
166 |
# File 'lib/prick/build.rb', line 166 def tag() [version.custom, "v#{version.semver}"].compact.join("-") end |
#uncache ⇒ Object
187 |
# File 'lib/prick/build.rb', line 187 def uncache() FileUtils.rm_f(archive.path) end |
#unload ⇒ Object
191 |
# File 'lib/prick/build.rb', line 191 def unload() database.ensure(:loaded, expect: false) end |