Class: Orchid::Package

Inherits:
Object
  • Object
show all
Defined in:
lib/orchid/package.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, vapi = nil, deps = nil) ⇒ Package

Returns a new instance of Package.



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/orchid/package.rb', line 62

def initialize(name, vapi = nil, deps = nil)
  @name = name.to_s
  @vapi = vapi.to_s if vapi
  if deps
    @deps = deps.to_s
    resolve_dependencies
  end
  
  if !@vapi
    vapifile = Pathname.new(Orchid::DIRS[:vapidir]) + "#{name}.vapi"
    depsfile = Pathname.new(Orchid::DIRS[:vapidir]) + "#{name}.deps"
    
    if vapifile.exist? and vapifile.file?
      @vapi = vapifile.to_s
      
      if !@deps and (depsfile.exist? and depsfile.file?)
        @deps = depsfile.to_s
        resolve_dependencies
      end
    else
      raise Orchid::PackageDoesNotExistError.new("package `#{@name}' doesn't exist in the standard location", @name, Orchid::INFO[:vapidir])
    end
  end
  
  Orchid::CHECKED_PACKAGES[name] = self
end

Instance Attribute Details

#dependenciesObject (readonly)

Returns the value of attribute dependencies.



54
55
56
# File 'lib/orchid/package.rb', line 54

def dependencies
  @dependencies
end

#depsObject

Returns the value of attribute deps.



54
55
56
# File 'lib/orchid/package.rb', line 54

def deps
  @deps
end

#nameObject (readonly)

Returns the value of attribute name.



52
53
54
# File 'lib/orchid/package.rb', line 52

def name
  @name
end

#vapiObject (readonly)

Returns the value of attribute vapi.



53
54
55
# File 'lib/orchid/package.rb', line 53

def vapi
  @vapi
end

Class Method Details

.lookup(name, options = {:vapidirs => [], :version => nil}) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/orchid/package.rb', line 89

def self.lookup(name, options = {:vapidirs => [], :version => nil})
  package = nil
  version = options[:version].to_a
  vapidirs = options[:vapidirs].to_a
  vapidirs << Orchid::DIRS[:vapidir]
  vapidirs.compact!
  
  vapidirs = vapidirs.to_a.uniq
  
  if Orchid::CHECKED_PACKAGES[name]
    return Orchid::CHECKED_PACKAGES[name]
  end
      
  vapidirs.each do |vapidir|
    vapidir = Pathname.new(vapidir).expand_path
    vapifile = vapidir + "#{name}.vapi"
    depsfile = vapidir + "#{name}.deps"
    
    if vapifile.exist? and vapifile.file?
      begin
        package = Orchid::Package.new(name, vapifile)
        
        if depsfile.exist? and depsfile.file?
          package.deps = depsfile
        end
        
        printf "checking for #{name}.vapi... " if Orchid::PRINT
        
        if package
          puts "yes" if Orchid::PRINT
          return package if PKGConfig.have_package(name, *version)
        end
      rescue Orchid::PackageDoesNotExistError => e
        puts "no" if Orchid::PRINT
      end
    end
  end
  
  return nil
end

Instance Method Details

#to_paramObject



130
131
132
# File 'lib/orchid/package.rb', line 130

def to_param
  return "--pkg '#{name}'"
end