Class: Libertine::SCM

Inherits:
Struct
  • Object
show all
Defined in:
lib/libertine/scm.rb,
lib/libertine/scm/git.rb

Direct Known Subclasses

Git

Defined Under Namespace

Classes: Git

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#dirObject

Returns the value of attribute dir

Returns:

  • (Object)

    the current value of dir



5
6
7
# File 'lib/libertine/scm.rb', line 5

def dir
  @dir
end

Instance Method Details

#filesObject

FIX: includes & excludes here instead?



6
7
8
# File 'lib/libertine/scm.rb', line 6

def files # FIX: includes & excludes here instead?
  implement :files, []
end

#implement(method, default = nil) ⇒ Object



10
11
12
13
# File 'lib/libertine/scm.rb', line 10

def implement method, default = nil
  $stderr.puts "#{self.class.name}##{method} isn't implemented!"
  default
end

#releaseObject



15
16
17
18
19
# File 'lib/libertine/scm.rb', line 15

def release
  if released? version
    raise Libertine::Error, "v#{version} is already released!"
  end
end

#releaseable?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/libertine/scm.rb', line 25

def releaseable?
  false
end

#released?(version = nil) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/libertine/scm.rb', line 21

def released? version = nil
  versions.include? version || self.version
end

#tagsObject



29
30
31
# File 'lib/libertine/scm.rb', line 29

def tags
  implement :tags, []
end

#versionObject



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/libertine/scm.rb', line 33

def version
  return @version if defined? @version
  regexp = /VERSION += +([\"\'])([\d][\w\.]+)\1/

  files.select { |f| %r%lib/.*\.rb\Z% =~ f }.each do |file|
    break if @version = File.read(file)[regexp, 2]
  end

  @version or raise Libertine::Error,
    "Can't find VERSION in lib/*.rb. Add it."
end

#versionsObject



45
46
47
48
# File 'lib/libertine/scm.rb', line 45

def versions
  tags.select { |t| /\Av#{Gem::Version::VERSION_PATTERN}\Z/ =~ t }.
    map { |t| t[1..-1] }.sort_by { |v| Gem::Version.new v }
end