Top Level Namespace

Defined Under Namespace

Modules: Delphi

Instance Method Summary collapse

Instance Method Details

#_parse_args(args) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/delphi/dsl.rb', line 6

def _parse_args(args)
  args = (args.take(args.length - 1) + args.last.to_a).flatten if args.last.instance_of?(Hash)
  sym, dproj, platform, config, prereqs = args[0], args[1], nil, nil, []
  case args.length
  when 5
    platform = args[2]
    config   = args[3]
    prereqs  = args[4]
  when 4
    platform = args[2]
    config   = args[3]
  when 3
    prereqs  = args[2]
  end
  [sym, dproj, platform, config, prereqs]
end

#delphi(*args) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/delphi/dsl.rb', line 23

def delphi(*args)
  fail '<Symbol> and <Dproj file> are required arguments to the delphi compilation task' if args.length < 2
  sym, dproj, platform, config, prereqs = _parse_args(args)

  proj = Delphi::Project.new(dproj)
  proj.platform = platform if platform
  proj.config = config if config
  task sym => prereqs do
    Rake::Task[proj.output].invoke
  end
  file proj.output do
    proj.compile
    yield proj if block_given?
  end
  Rake::Task[sym].sources = proj

  CLOBBER.include(proj.output)
end

#delphi_exe(sym) ⇒ Object



42
43
44
# File 'lib/delphi/dsl.rb', line 42

def delphi_exe(sym)
  Rake::Task[sym].sources.output
end

#dunit(sym, prereqs) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/delphi/dsl.rb', line 46

def dunit(sym, prereqs)
  if prereqs.instance_of?(Hash)
    compile_sym = prereqs.keys[0]
    prereqs = prereqs[compile_sym]
  else
    compile_sym = prereqs
    prereqs = []
  end
  prereqs = [prereqs, compile_sym].flatten
  task sym => prereqs do
    exe = delphi_exe(compile_sym)
    Dir.chdir(File.dirname(exe)) do
      system(File.basename(exe))
      fail 'Unit tests failed' unless $CHILD_STATUS.to_i == 0
      yield if block_given?
    end
  end
end