Module: Nake

Included in:
DSL
Defined in:
lib/nake/struct_hash.rb,
lib/nake.rb,
lib/nake/dsl.rb,
lib/nake/argv.rb,
lib/nake/rake.rb,
lib/nake/rule.rb,
lib/nake/task.rb,
lib/nake/helpers.rb,
lib/nake/template.rb,
lib/nake/file_task.rb,
lib/nake/abstract_task.rb

Overview

options.extend(HashStructMixin) options.name options.force?

Defined Under Namespace

Modules: ArgvParser, DSL, HashStructMixin, PackageMixin, PrintHelpers, RakeDSL, TaskHelpers Classes: AbstractTask, ErbTemplate, FileTask, Rule, Task, Template

Class Method Summary collapse

Class Method Details

.argsObject

I was drunk so you might found this code not very clear. But it’s clear for me and it works.



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/nake.rb', line 36

def self.args
  @@args ||= begin
    Hash.new.tap do |hash|
      hash.define_singleton_method(:[]) do |name|
        names, value = self.find { |names, block| names.include?(name) }
        return value
      end

      hash.define_singleton_method(:[]=) do |*names, proc|
        super(names, proc)
      end
    end
  end
end

.coloringObject



25
26
27
28
29
# File 'lib/nake.rb', line 25

def self.coloring
  @@coloring
rescue NameError
  @@coloring = STDIN.tty?
end

.coloring=(boolean) ⇒ Object



31
32
33
# File 'lib/nake.rb', line 31

def self.coloring=(boolean)
  @@coloring = boolean
end

.debugObject



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

def self.debug
  @@debug
rescue NameError
  @@debug = true
end

.debug=(boolean) ⇒ Object



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

def self.debug=(boolean)
  @@debug = boolean
end

.parse(args = ARGV) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/nake.rb', line 51

def self.parse(args = ARGV)
  default = {nake: Array.new, task: Array.new}
  args.inject(default) do |hash, argument|
    if argument.match(/^-/) && hash[:task].empty?
      hash[:nake].push(argument)
    elsif File.exist?(argument) && hash[:file].nil? # just the first one
      hash[:file] = argument
    else
      hash[:task].push(argument)
    end
    hash
  end
end

.run_argsObject



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/nake.rb', line 65

def self.run_args
  # TODO: proceed --debug and --verbose first! ... to by slo tak, ze by se iterovalo pres Nake.args a pokud je to pritomno tak proved
  Nake.parse[:nake].each do |argument|
    unless self.args[argument]
      abort "Unrecognized argument: #{argument}"
    end
    name, value = ArgvParser.parse(argument)
    if name
      info "Invoking argument #{argument} with #{name} = #{value}"
      self.args[argument].call(name, value)
    else
      info "Invoking argument #{argument} without any arguments"
      self.args[argument].call
    end
  end
end

.run_taskObject

Run first task

Examples:

Nake.run(["release"])

Raises:

  • (TaskNotFound)

Author:

  • Jakub Stastny

Since:

  • 0.0.1



89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/nake.rb', line 89

def self.run_task
  Task.boot
  name, *args = Nake.parse[:task]
  task = Task[name]
  if name.nil?
    raise TaskNotFound, "You have to specify a task you want to run!"
  elsif task.nil?
    raise TaskNotFound, "Task with name #{name} doesn't exist"
  else
    task.run(args)
  end
end

.verboseObject

VERSION ||= “0.0.8.1”



5
6
7
8
9
# File 'lib/nake.rb', line 5

def self.verbose
  @@verbose
rescue NameError
  @@verbose = true
end

.verbose=(boolean) ⇒ Object



11
12
13
# File 'lib/nake.rb', line 11

def self.verbose=(boolean)
  @@verbose = boolean
end