bakery 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
data/bin/bake CHANGED
@@ -24,31 +24,56 @@ EOS
24
24
  opt :recipe, "Set recipe file to bake from.", { :type => String, :default => File.join(Bakery::ROOT_DIR, '.recipe') }
25
25
  opt :ingredients, "Set which ingredients to use when baking.", { :type => String, :default => File.join(Bakery::ROOT_DIR, '.ingredients') }
26
26
  opt :destination, "Set the destination location.", { :type => String }
27
+ opt :verbose, "Verbose output.", { :default => false, :short => 'e' }
28
+ opt :debug, "Debug output.", { :default => false, :short => 'b' }
29
+ opt :quiet, "Ignore warnings.", { :default => false, :short => 'q' }
27
30
  end
28
31
 
29
- Trollop::die :recipe, ": '#{opts[:recipe]}' must exist" unless File.exist?(opts[:recipe]) || !opts[:recipe]
32
+ Trollop::die :recipe, ": '#{opts[:recipe]}' must exist" unless File.exist?(opts[:recipe])
33
+
34
+ Bakery::Log::VERBOSE = opts[:verbose]
35
+ Bakery::Log::QUIET = opts[:quiet]
36
+ Bakery::Log::DEBUG = opts[:debug]
30
37
 
31
38
  bake_init = Proc.new do
32
39
  Bakery.addCake
33
40
 
34
41
  # use default ingredients if an ingredients file is not provided
35
42
  if File.exists? opts[:ingredients]
43
+ Bakery::Log.debug "loading ingredients: #{opts[:ingredients]}"
44
+
36
45
  load opts[:ingredients]
37
46
  else
38
- $stdout.puts "[WARNING] Using default ingredients."
47
+ Bakery::Log.warning "using default ingredients"
48
+
39
49
  use_defaults
40
50
  end
41
51
 
42
- load opts[:recipe]
52
+ Bakery::Log.debug "loading recipe: #{opts[:recipe]}"
53
+
54
+ begin
55
+ load opts[:recipe]
56
+
57
+ Bakery::Log.puts "success"
58
+ rescue Exception => e
59
+ puts e
60
+ Bakery::Log.error "failure"
61
+ end
43
62
  end
44
63
 
45
64
  if opts[:destination]
46
65
  if !Dir.exists? opts[:destination]
66
+ Bakery::Log.info "creating destination directory: #{opts[:destination]}"
67
+
47
68
  FileUtils.mkdir_p opts[:destination]
69
+ else
70
+ Bakery::Log.debug "using destination directory: #{opts[:destination]}"
48
71
  end
49
72
 
50
73
  Dir.chdir opts[:destination], &bake_init
51
74
  else
75
+ Bakery::Log.debug "destination set to current directory"
76
+
52
77
  bake_init.call
53
78
  end
54
79
 
@@ -13,6 +13,7 @@ require 'bakery/bakery'
13
13
  require 'bakery/cake'
14
14
  require 'bakery/detail/global_function'
15
15
  require 'bakery/detail/load'
16
+ require 'bakery/detail/log'
16
17
  require 'bakery/detail/dispatcher'
17
18
  require 'bakery/detail/search'
18
19
  require 'bakery/icing'
@@ -19,10 +19,18 @@ module Bakery
19
19
  def removeMarkerLayerFromStack path
20
20
  # remove all markers that are in the current directory
21
21
  @markers.select! { |marker|
22
- !marker.getPath.start_with? path
22
+ removed = !marker.getPath.start_with?(path)
23
+
24
+ if removed
25
+ Bakery::Log.debug "unset #{marker.class}: #{marker.getPath}"
26
+ end
27
+
28
+ removed
23
29
  }
24
30
 
25
31
  if @currentCake.root == path
32
+ Bakery::Log.debug "leaving project: #{@currentCake.root}"
33
+
26
34
  @currentCake = @currentCake.parent
27
35
  end
28
36
  end
@@ -60,6 +68,8 @@ module Bakery
60
68
  def addCake
61
69
  cake = Cake.new @currentCake
62
70
 
71
+ Bakery::Log.debug "entering project: #{cake.root}"
72
+
63
73
  @cakes.push cake
64
74
  @currentCake = cake
65
75
  end
@@ -11,6 +11,8 @@
11
11
 
12
12
  class Object
13
13
  def global_function name, &block
14
+ Bakery::Log.debug "create global function: #{name.to_s}"
15
+
14
16
  self.class.send :define_method, name, &block
15
17
  end
16
18
  end
@@ -12,6 +12,8 @@
12
12
  def load_if_exists name
13
13
  if File.exists? name
14
14
  load name
15
+ else
16
+ Bakery::Log.debug "could not load file: #{name}"
15
17
  end
16
18
  end
17
19
 
@@ -0,0 +1,46 @@
1
+ #
2
+ # Copyright (c) 2013
3
+ # Nathan Currier
4
+ #
5
+ # Use, modification, and distribution are all subject to the
6
+ # Boost Software License, Version 1.0. (See the accompanying
7
+ # file LICENSE.md or at http://rideliner.tk/LICENSE.html).
8
+ #
9
+ # <description>
10
+ #
11
+
12
+ module Bakery
13
+ module Log
14
+ class << self
15
+ private
16
+ def print tag, msg
17
+ puts "[#{tag}] #{msg}"
18
+ end
19
+ public
20
+ def puts msg
21
+ $stderr.puts msg
22
+ end
23
+
24
+ # output if not quiet
25
+ def warning msg
26
+ print 'WARNING', msg unless QUIET
27
+ end
28
+
29
+ # output all the time
30
+ def error msg
31
+ print 'ERROR', msg
32
+ end
33
+
34
+ # output if verbose
35
+ def info msg
36
+ print 'INFO', msg if VERBOSE
37
+ end
38
+
39
+ # output if debugging
40
+ def debug msg
41
+ print 'DEBUG', msg if DEBUG
42
+ end
43
+ end
44
+ end
45
+ end
46
+
@@ -54,7 +54,8 @@ public
54
54
  if file != nil
55
55
  yield file
56
56
  else
57
- stderr.puts "[WARNING] #{filename} was not found while searching in #{paths}."
57
+ Bakery::Log.warning "no results found in search: #{filename}"
58
+ Bakery::Log.debug "search path: #{paths}"
58
59
  end
59
60
  end
60
61
 
@@ -67,7 +68,11 @@ public
67
68
 
68
69
  def addSearchDirectory dir
69
70
  if File.exist?(dir) && File.directory?(dir) && !@paths.include?(dir)
71
+ Bakery::Log.debug "directory added to search path: #{dir}"
72
+
70
73
  @paths << dir
74
+ else
75
+ Bakery::Log.warning "directory not added to search path: #{dir}"
71
76
  end
72
77
  end
73
78
 
@@ -10,12 +10,22 @@
10
10
  #
11
11
 
12
12
  def name n
13
+ if Bakery.getCake.icing[:name] == nil
14
+ Bakery::Log.debug "name set: #{n}"
15
+ else
16
+ Bakery::Log.debug "name overwritten: #{n}"
17
+ end
18
+
13
19
  Bakery.getCake.icing[:name] = n
14
20
  end
15
21
 
16
22
  def authors *names
17
23
  if Bakery.getCake.icing[:authors] == nil
24
+ Bakery::Log.debug "authors set: #{names}"
25
+
18
26
  Bakery.getCake.icing[:authors] = Array.new
27
+ else
28
+ Bakery::Log.debug "authors concatenated: #{names}"
19
29
  end
20
30
 
21
31
  Bakery.getCake.icing[:authors].concat names
@@ -25,7 +35,11 @@ alias :author :authors
25
35
 
26
36
  def description *desc
27
37
  if Bakery.getCake.icing[:description] == nil
38
+ Bakery::Log.debug "description set: #{desc}"
39
+
28
40
  Bakery.getCake.icing[:description] = Array.new
41
+ else
42
+ Bakery::Log.debug "description concatenated: #{desc}"
29
43
  end
30
44
 
31
45
  Bakery.getCake.icing[:description].concat desc
@@ -33,32 +47,61 @@ end
33
47
 
34
48
  def summary *sum
35
49
  if Bakery.getCake.icing[:summary] == nil
50
+ Bakery::Log.debug "summary set: #{sum}"
51
+
36
52
  Bakery.getCake.icing[:summary] = Array.new
53
+ else
54
+ Bakery::Log.debug "summary concatenated: #{sum}"
37
55
  end
38
56
 
39
57
  Bakery.getCake.icing[:summary].concat sum
40
58
  end
41
59
 
42
60
  def copyright *lines
61
+ if Bakery.icing[:copyright] == nil
62
+ Bakery::Log.debug "copyright set: #{lines}"
63
+ else
64
+ Bakery::Log.debug "copyright overwritten: #{lines}"
65
+ end
66
+
43
67
  Bakery.getCake.icing[:copyright] = lines
44
68
  end
45
69
 
46
70
  def defaultAuthors *names
71
+ if Bakery.icing[:authors] == nil
72
+ Bakery::Log.debug "default author set: #{names}"
73
+ else
74
+ Bakery::Log.debug "default author overwritten: #{names}"
75
+ end
76
+
47
77
  Bakery.icing[:authors] = names
48
78
  end
49
79
 
50
80
  alias :defaultAuthor :defaultAuthors
51
81
 
52
82
  def defaultCopyright *lines
83
+ if Bakery.icing[:copyright] == nil
84
+ Bakery::Log.debug "default copyright set: #{lines}"
85
+ else
86
+ Bakery::Log.debug "default copyright overwritten: #{lines}"
87
+ end
88
+
53
89
  Bakery.icing[:copyright] = lines
54
90
  end
55
91
 
56
92
  def defaultDescription *desc
93
+ if Bakery.icing[:description] == nil
94
+ Bakery::Log.debug "default description set: #{desc}"
95
+ else
96
+ Bakery::Log.debug "default description overwritten: #{desc}"
97
+ end
98
+
57
99
  Bakery.icing[:description] = desc
58
100
  end
59
101
 
60
102
  def loadIcing filename
61
103
  Bakery::ICING_SEARCH.search(filename) { |file|
104
+ Bakery::Log.info "loading icing: #{file}"
62
105
  load file
63
106
  }
64
107
  end
@@ -19,8 +19,12 @@ module Bakery
19
19
  def initialize path, *args, &block
20
20
  if !Dir.exists? path
21
21
  if args.include? :create_recursive
22
+ Bakery::Log.info "creating directories: #{path}"
23
+
22
24
  FileUtils.mkdir_p path
23
25
  else
26
+ Bakery::Log.info "creating directory: #{path}"
27
+
24
28
  FileUtils.mkdir path
25
29
  end
26
30
  end
@@ -28,9 +32,13 @@ module Bakery
28
32
  super path
29
33
 
30
34
  Dir.chdir path do
35
+ Bakery::Log.debug "entering directory: #{path}"
36
+
31
37
  dispatch &block
32
38
 
33
39
  Bakery.removeMarkerLayerFromStack Dir.pwd
40
+
41
+ Bakery::Log.debug "leaving directory: #{path}"
34
42
  end
35
43
  end
36
44
  end
@@ -40,6 +40,12 @@ module Bakery
40
40
  already_exists = File.exist? filename
41
41
 
42
42
  if !already_exists || args.include?(:always_overwrite)
43
+ if !already_exists
44
+ Bakery::Log.info "#{self.class} creating: #{filename}"
45
+ else
46
+ Bakery::Log.info "#{self.class} overwriting: #{filename}"
47
+ end
48
+
43
49
  super filename, 'w+'
44
50
 
45
51
  dispatch &block
@@ -47,13 +53,19 @@ module Bakery
47
53
  super filename, 'a+'
48
54
 
49
55
  if args.include?(:always_append)
56
+ Bakery::Log.info "#{self.class} appending: #{filename}"
57
+
50
58
  dispatch &block
59
+ else
60
+ Bakery::Log.info "#{self.class} opening: #{filename}"
51
61
  end
52
62
  end
53
63
  end
54
64
 
55
65
  def from filename
56
66
  ICING_SEARCH.search(filename) { |file|
67
+ Bakery::Log.info "copying '#{file}' to '#{path}'"
68
+
57
69
  FileUtils.cp file, path
58
70
  }
59
71
  end
@@ -15,6 +15,8 @@ module Bakery
15
15
  def initialize *args, &block
16
16
  @wd = Dir.pwd
17
17
 
18
+ Bakery::Log.debug "set #{self.class}: #{@wd}"
19
+
18
20
  Bakery.markers << self
19
21
  end
20
22
 
@@ -10,6 +10,6 @@
10
10
  #
11
11
 
12
12
  module Bakery
13
- VERSION = '0.5.1'
13
+ VERSION = '0.5.2'
14
14
  end
15
15
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bakery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -49,6 +49,7 @@ files:
49
49
  - lib/bakery/detail/global_function.rb
50
50
  - lib/bakery/detail/search.rb
51
51
  - lib/bakery/detail/dispatcher.rb
52
+ - lib/bakery/detail/log.rb
52
53
  - lib/bakery/ingredient.rb
53
54
  - lib/bakery/icing.rb
54
55
  - lib/bakery/bakery.rb