Class: Orchid::Project
- Inherits:
-
Rake::TaskLib
- Object
- Rake::TaskLib
- Orchid::Project
- Defined in:
- lib/orchid/project.rb
Instance Attribute Summary collapse
-
#bindir ⇒ Object
Returns the value of attribute bindir.
-
#build ⇒ Object
Returns the value of attribute build.
-
#compiler ⇒ Object
Returns the value of attribute compiler.
-
#datadir ⇒ Object
Returns the value of attribute datadir.
-
#dependencies ⇒ Object
Returns the value of attribute dependencies.
-
#libdir ⇒ Object
Returns the value of attribute libdir.
-
#name ⇒ Object
Returns the value of attribute name.
-
#packages ⇒ Object
Returns the value of attribute packages.
-
#procedures ⇒ Object
Returns the value of attribute procedures.
-
#res ⇒ Object
Returns the value of attribute res.
-
#resources ⇒ Object
readonly
Returns the value of attribute resources.
-
#sources ⇒ Object
readonly
Returns the value of attribute sources.
-
#src ⇒ Object
Returns the value of attribute src.
-
#version ⇒ Object
Returns the value of attribute version.
Instance Method Summary collapse
- #check_dependencies ⇒ Object
- #check_packages ⇒ Object
- #define_tasks ⇒ Object
-
#dependability(compiler) ⇒ Object
abstract method that expresses dependability of a project towards another project’s compiler; see check_dependencies.
-
#initialize(name) ⇒ Project
constructor
A new instance of Project.
- #register ⇒ Object
Constructor Details
#initialize(name) ⇒ Project
Returns a new instance of Project.
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/orchid/project.rb', line 86 def initialize(name) @name = name.to_s @version = "0.0.1" @compiler = Orchid::Compiler.new() @src = Pathname.new("./#{@name}/src"). @res = Pathname.new("./#{@name}/res"). @build = Pathname.new("./build/#{@name}"). @bindir = Pathname.new(Orchid::DIRS[:bindir]). @libdir = Pathname.new(Orchid::DIRS[:libdir]). @datadir = Pathname.new(Orchid::DIRS[:datadir]). @packages = [{:name => "glib-2.0", :version => Orchid::Version.new(nil)}] @dependencies = [] @procedures = {} end |
Instance Attribute Details
#bindir ⇒ Object
Returns the value of attribute bindir.
33 34 35 |
# File 'lib/orchid/project.rb', line 33 def bindir @bindir end |
#build ⇒ Object
Returns the value of attribute build.
32 33 34 |
# File 'lib/orchid/project.rb', line 32 def build @build end |
#compiler ⇒ Object
Returns the value of attribute compiler.
35 36 37 |
# File 'lib/orchid/project.rb', line 35 def compiler @compiler end |
#datadir ⇒ Object
Returns the value of attribute datadir.
33 34 35 |
# File 'lib/orchid/project.rb', line 33 def datadir @datadir end |
#dependencies ⇒ Object
Returns the value of attribute dependencies.
34 35 36 |
# File 'lib/orchid/project.rb', line 34 def dependencies @dependencies end |
#libdir ⇒ Object
Returns the value of attribute libdir.
33 34 35 |
# File 'lib/orchid/project.rb', line 33 def libdir @libdir end |
#name ⇒ Object
Returns the value of attribute name.
31 32 33 |
# File 'lib/orchid/project.rb', line 31 def name @name end |
#packages ⇒ Object
Returns the value of attribute packages.
34 35 36 |
# File 'lib/orchid/project.rb', line 34 def packages @packages end |
#procedures ⇒ Object
Returns the value of attribute procedures.
35 36 37 |
# File 'lib/orchid/project.rb', line 35 def procedures @procedures end |
#res ⇒ Object
Returns the value of attribute res.
32 33 34 |
# File 'lib/orchid/project.rb', line 32 def res @res end |
#resources ⇒ Object (readonly)
Returns the value of attribute resources.
37 38 39 |
# File 'lib/orchid/project.rb', line 37 def resources @resources end |
#sources ⇒ Object (readonly)
Returns the value of attribute sources.
37 38 39 |
# File 'lib/orchid/project.rb', line 37 def sources @sources end |
#src ⇒ Object
Returns the value of attribute src.
32 33 34 |
# File 'lib/orchid/project.rb', line 32 def src @src end |
#version ⇒ Object
Returns the value of attribute version.
31 32 33 |
# File 'lib/orchid/project.rb', line 31 def version @version end |
Instance Method Details
#check_dependencies ⇒ Object
128 129 130 131 132 133 134 135 136 |
# File 'lib/orchid/project.rb', line 128 def check_dependencies @dependencies.each do |dependency| project = Orchid::PROJECTS[dependency] if project project.dependability @compiler end end end |
#check_packages ⇒ Object
118 119 120 121 122 123 124 125 126 |
# File 'lib/orchid/project.rb', line 118 def check_packages @packages.to_a.each do |package| package = Orchid::Package.lookup(package[:name], :version => package[:version].to_a, :vapidirs => @compiler.vapidirs) if package @compiler.pkgs << package.name end end end |
#define_tasks ⇒ Object
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 |
# File 'lib/orchid/project.rb', line 138 def define_tasks directory @build.to_s debug = "debug:#{@name}" release = "release:#{@name}" file debug => [@build.to_s] do check_packages check_dependencies @compiler.run() end file release => [@build.to_s] do check_packages check_dependencies @compiler.run() end namespace :build do desc "Builds #{@name}; target is 'debug' or 'release'." task @name.downcase, :target do |task, arguments| arguments.with_defaults(:target => :debug) run_dependencies(arguments.target.to_sym) if arguments.target.to_sym == :debug @compiler.debug = true @compiler.defines << ["DEBUG", "ORCHID"] Rake::Task[debug].reenable Rake::Task[debug].invoke else @compiler.defines << "ORCHID" Rake::Task[release].reenable Rake::Task[release].invoke end cp_r File.join(@res.to_s, "."), @build.to_s if @res.directory? @procedures[:build].call(self) if @procedures[:build] end end namespace :install do desc "Installs #{@name}; target is 'debug' or 'release'." task @name.downcase, :target do |task, arguments| arguments.with_defaults(:target => :debug) Rake::Task["build:#{@name.downcase}"].invoke(arguments.target) @procedures[:install].call(self) if @procedures[:install] end end end |
#dependability(compiler) ⇒ Object
abstract method that expresses dependability of a project towards another project’s compiler; see check_dependencies
198 199 200 |
# File 'lib/orchid/project.rb', line 198 def dependability(compiler) return nil end |
#register ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/orchid/project.rb', line 105 def register Orchid.register_project self @sources = FileList[@src + "**", "*.vala"].resolve @compiler.output ||= "#{@name}" @compiler.basedir = @src.to_s @compiler.directory = @build.to_s @compiler.sources << @sources @compiler.sources.flatten! define_tasks end |