lib/nanoc3/extra/vcs.rb in nanoc3-3.0.9 vs lib/nanoc3/extra/vcs.rb in nanoc3-3.1.0a1

- old
+ new

@@ -1,53 +1,54 @@ # encoding: utf-8 module Nanoc3::Extra - # Nanoc3::Extra::VCS is a very simple representation of a version control - # system that abstracts the add, remove and move operations. It does not - # commit. This class is primarily used by data sources that store data as - # flat files on the disk. + # A very simple representation of a version control system (VCS) that + # abstracts the add, remove and move operations. It does not commit. This + # class is primarily used by data sources that store data as flat files on + # the disk. # - # This is the abstract superclass for all VCSes. Subclasses should implement - # the indicated methods. - class VCS < Nanoc3::Plugin + # @abstract Subclass and override {#add}, {#remove} and {#move} to implement + # a custom VCS. + class VCS - # Sets the identifiers for this VCS. - def self.identifiers(*identifiers) - Nanoc3::Extra::VCS.register(self, *identifiers) - end + extend Nanoc3::PluginRegistry::PluginMethods - # Sets the identifier for this VCS. - def self.identifier(identifier) - Nanoc3::Extra::VCS.register(self, identifier) - end - - # Registers the given class as a VCS with the given identifier. - def self.register(class_or_name, *identifiers) - Nanoc3::Plugin.register(Nanoc3::Extra::VCS, class_or_name, *identifiers) - end - # Adds the file with the given filename to the working copy. # - # Subclasses must implement this method. + # @param [String] filename The name of the file to add + # + # @return [void] + # + # @abstract def add(filename) not_implemented('add') end # Removes the file with the given filename from the working copy. When # this method is executed, the file should no longer be present on the # disk. # - # Subclasses must implement this method. + # @param [String] filename The name of the file to remove + # + # @return [void] + # + # @abstract def remove(filename) not_implemented('remove') end # Moves the file with the given filename to a new location. When this # method is executed, the original file should no longer be present on the # disk. # - # Subclasses must implement this method. + # @param [String] src The old filename + # + # @param [String] dst The new filename + # + # @return [void] + # + # @abstract def move(src, dst) not_implemented('move') end private