rake-distribute 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 737d4756f5ae05c91a2ff775460e8573358efc0c
4
- data.tar.gz: c95e5e0d7f65adb3cd0db544eb7440184e5eb5ad
3
+ metadata.gz: ce2dbd83ebaa19f8c11fb744f1fc479cf6765a19
4
+ data.tar.gz: 9e5df700225fdc65df089017cba53b1ba4ea6d47
5
5
  SHA512:
6
- metadata.gz: ecf6155ec517a9cc6fcddaa083ed2cf71f5c88c26bf092ba368fea90e8dc88ce337c7f9431a3c96eb20473e7e13cc9272be85df00f4bcae84f6c2eb174067d61
7
- data.tar.gz: 2559b2e8dcb1cf549df2eda5d79bbd77655f632e17581aa7dc22982f3baae23a2a7555178305d9e0ba603bd98ded1d6fa5c407ff4f8db39a701c4ab66e77f667
6
+ metadata.gz: 61b0b234ee103ddf36a85a644c1de478faee9681bea1108e09a25e699bf7ace6613db7dc647176acea90ccb2815ff5addd27f9cb6eea8e63d8f35d65e2ec16ad
7
+ data.tar.gz: 43430190dc530898480533557255d102d42a1f17ed5d3781e98073fb10becd2ced408cafe558f3089d4da2e273010b1febfa41fc358a013e7c744e6a29d21f0e
Binary file
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -18,6 +18,8 @@ It is the saver to use rake tasks to manage 1 -> n file distribution. Commonly a
18
18
 
19
19
  ## SYNOPSIS:
20
20
 
21
+ ### Basic Usage
22
+
21
23
  ```ruby
22
24
  distribute :FileItem do
23
25
  from "/path/from"
@@ -25,19 +27,36 @@ distribute :FileItem do
25
27
  end
26
28
 
27
29
  distribute :ErbFile do
28
- build_dir "build/distribute"
29
- from "/path/from"
30
+ build_dir "build/distribute" # optional
31
+ from "/path/from.erb"
30
32
  to "/path/to"
31
- with_context {:a => 1, :b => 2}
33
+ with_context {:a => 1, :b => 2} # optional
34
+ diff do |dest, src| # optional
35
+ sh %Q{vimdo diff "#{dest}" "#{src}"}
36
+ end
32
37
  end
33
38
 
34
39
  distribute :TiltFile do
35
- prefer Tilt::BlueClothTemplate
40
+ prefer Tilt::BlueClothTemplate # optional
36
41
  from "/path/from"
37
42
  to "/path/to"
38
- with_context {:a => 1, :b => 2}
43
+ with_context {:a => 1, :b => 2} # optional
39
44
  end
40
45
  ```
46
+ ### Include Simple Build Proc
47
+
48
+ ```ruby
49
+ distribute :FileItem do
50
+ build_dir "build/distribute" # optional
51
+ from "/path/from.c"
52
+ build :to => 'to' do |from, to|
53
+ sh %Q{gcc "#{from}" -o "#{to}"}
54
+ end
55
+ to "/usr/bin/to"
56
+ end
57
+
58
+ ```
59
+
41
60
 
42
61
  ## DEVELOPERS:
43
62
 
@@ -20,17 +20,18 @@ module Rake::Distribute
20
20
  @src = source
21
21
  end
22
22
 
23
- def to(dest, options={})
23
+ def to(dest, options = {})
24
+ @dest_options = options
24
25
  @dest = dest
25
26
  end
26
27
 
28
+
27
29
  def diff(&block)
28
30
  raise NotImplementedError
29
31
  end
30
32
 
31
33
  def sanity?
32
- raise SyntaxError, "from: is not defined" unless defined? @src
33
- raise SyntaxError, "to: is not defined" unless defined? @dest
34
+ raise SyntaxError, "source: is not defined" unless defined? @src
34
35
  end
35
36
 
36
37
  def define_tasks
@@ -16,79 +16,41 @@ module Rake::Distribute
16
16
  class ErbFile < FileItem
17
17
  def initialize(&block)
18
18
  @context = {}
19
- @build_dir = File.join('build','distribute')
20
19
  super
21
- end
22
-
23
- def sanity?
24
- super
25
- raise ArgumentError, "#{@src} does not exist!" unless File.exists?(@src)
26
- end
27
-
28
- def build_dir(folder)
29
- @build_dir = folder
20
+
21
+ # if the user do not define build task
22
+ @build_proc ||= Proc.new { |from, to|
23
+ # unnecessary dup to make the workflow clear
24
+ copy_entry from, to
25
+ }
30
26
  end
31
27
 
32
28
  def with_context(context)
33
29
  @context = context
34
30
  end
35
31
 
36
- def define_build_task(options={})
37
- directory @build_dir
38
-
39
- build_file = File.join(@build_dir,
40
- "#{Item.sn.to_s}-#{@src.pathmap('%n')}")
41
- file build_file => @src do
42
- File.open(build_file, 'w') do |f|
43
- erb = ERB.new(File.read(@src))
44
- f.write(erb.result(ContextStruct.new(@context).get_binding))
45
- f.flush
46
- end
32
+ def render(from, to)
33
+ File.open(to, 'w') do |f|
34
+ erb = ERB.new(File.read(from))
35
+ f.write(erb.result(ContextStruct.new(@context).get_binding))
36
+ f.flush
47
37
  end
48
- build_file
49
38
  end
50
39
 
51
- def define_tasks(options={})
52
-
53
- dest_dir = @dest.pathmap("%d")
54
- directory dest_dir
55
-
56
- build_file = define_build_task(options)
57
-
58
-
59
- file @dest => build_file do
60
- install build_file, @dest, @dest_options
61
- end
62
-
63
- desc "distribute: build"
64
- task :build => [@build_dir, build_file]
65
-
66
- desc "distribute: install"
67
- task :install => [@build_dir, build_file, dest_dir, @dest]
68
-
69
- desc "distribute: uninstall"
70
- task :uninstall do
71
- safe_unlink @dest if File.exists?(@dest)
40
+ alias_method :super_define_build_task, :define_build_task
41
+ def define_build_task(src)
42
+ directory @build_dir
43
+ render_dest = File.join(@build_dir,
44
+ "#{Item.sn.to_s}-#{@src.pathmap('%n')}")
45
+ file render_dest => [@src, @build_dir] do
46
+ render(@src, render_dest)
72
47
  end
73
48
 
74
49
  desc "distribute: clean"
75
50
  task :clean do
76
- safe_unlink build_file if File.exists?(build_file)
77
- end
78
-
79
- desc "distribute: clobber"
80
- task :clobber => [:clean] do
81
- rmdir @build_dir
82
- end
83
-
84
- desc "distribute: diff"
85
- task :diff => [@build_dir, build_file] do
86
- diff = Diffy::Diff.new(
87
- @dest, build_file, :source => 'files', :allow_empty_diff => true
88
- ).to_s(:text)
89
-
90
- @diff_proc.call(@dest, @src) unless diff.empty?
51
+ safe_unlink render_dest
91
52
  end
53
+ super_define_build_task(render_dest)
92
54
  end
93
55
 
94
56
  end
@@ -7,6 +7,7 @@ module Rake::Distribute
7
7
  class FileItem < Base
8
8
  def initialize(&block)
9
9
  @diff_proc = Proc.new {|dest,src| puts "#{dest} differs from #{src}"}
10
+ @build_dir = File.join('build','distribute')
10
11
  super
11
12
  end
12
13
 
@@ -15,40 +16,133 @@ module Rake::Distribute
15
16
  raise ArgumentError, "#{@src} does not exist!" unless File.exists?(@src)
16
17
  end
17
18
 
18
- def to(dest, options={})
19
- @dest = dest
20
- @dest_options = options
19
+ def build(options = {}, &block)
20
+ @build_options = options
21
+ @build_proc = block if block_given?
22
+ end
23
+
24
+ def build_dir(folder)
25
+ @build_dir = folder
21
26
  end
22
27
 
23
28
  def diff(&block)
24
29
  @diff_proc = block if block_given?
25
30
  end
26
31
 
32
+
27
33
  def define_tasks(options={})
28
- dest_folder = @dest.pathmap("%d")
29
- directory dest_folder
30
- file @dest => @src do
31
- install @src, @dest, @dest_options
34
+ if defined? @build_proc
35
+ build_dest = define_build_task(@src)
36
+ else
37
+ build_dest = nil
32
38
  end
33
39
 
34
- desc "distribute: install"
35
- task :install => [dest_folder, @dest]
40
+ if defined? @dest
41
+ if File.directory?(@dest)
42
+ dest_folder = @dest
43
+ else
44
+ dest_folder = @dest.pathmap("%d")
45
+ directory dest_folder
46
+ file @dest => dest_folder
47
+ end
48
+
49
+ if build_dest
50
+
51
+ file @dest => build_dest do
52
+ if File.directory?(build_dest)
53
+ cp_r build_dest, @dest, @dest_options
54
+ else
55
+ install build_dest, @dest, @dest_options
56
+ end
57
+ end
58
+
59
+ desc "distribute: install"
60
+ task :install => @dest
61
+
62
+
63
+ define_diff_task(build_dest)
64
+
65
+ else # without build ( install @src -> @dest )
66
+ file @dest => @src do
67
+ if File.directory?(@dest)
68
+ cp_r @src, @dest, @dest_options
69
+ else
70
+ install @src, @dest, @dest_options
71
+ end
72
+ end
73
+
74
+ desc "distribute: install"
75
+ task :install => @dest
76
+
77
+ define_diff_task(@src)
78
+ end
79
+
80
+ desc "distribute: uninstall"
81
+ task :uninstall do
82
+ if File.directory?(@dest)
83
+ rmtree File.join(@dest, File.basename(@dest))
84
+ else
85
+ safe_unlink @dest
86
+ end
87
+ end
88
+
36
89
 
37
- desc "distribute: uninstall"
38
- task :uninstall do
39
- safe_unlink @dest
40
90
  end
41
91
 
92
+ end
93
+
94
+
95
+ def define_diff_task(from)
96
+ return unless defined? @dest
97
+
42
98
  desc "distribute: diff"
43
99
  task :diff do
44
100
  diffy = Diffy::Diff.new(
45
- @dest, @src, :source => 'files', :allow_empty_diff => true
101
+ @dest, from, :source => 'files', :allow_empty_diff => true
46
102
  ).to_s(:text)
47
103
 
48
104
  @diff_proc.call(@dest, @src) unless diffy.empty?
49
105
  end
50
106
  end
51
107
 
108
+
109
+ def define_build_task(from)
110
+
111
+ build_dest = File.join(@build_dir, build_to)
112
+
113
+ build_dir = File.dirname(build_dest)
114
+ directory build_dir
115
+ file build_dest => [from, build_dir] do
116
+ @build_proc.call(from, build_dest)
117
+ end
118
+ desc "distribute: build"
119
+ task :build => build_dest
120
+
121
+ desc "distribute: clean"
122
+ task :clean do
123
+ safe_unlink build_dest
124
+ end
125
+
126
+ desc "distribute: clobber"
127
+ task :clobber => [:clean] do
128
+ rmdir @build_dir
129
+ end
130
+
131
+ build_dest
132
+ end
133
+
134
+ private
135
+
136
+
137
+
138
+ def build_to
139
+ if @build_options and @build_options.has_key?(:to)
140
+ @build_options[:to]
141
+ else
142
+ "#{Item.sn.to_s}-#{@src.pathmap('%n')}"
143
+ end
144
+ end
145
+
52
146
  end
53
147
 
54
148
  end
@@ -9,7 +9,6 @@ module Rake::Distribute
9
9
 
10
10
  class TiltFile < ErbFile
11
11
  def initialize(&block)
12
- Tilt.prefer Tilt::ErubisTemplate
13
12
  super
14
13
  end
15
14
 
@@ -22,23 +21,15 @@ module Rake::Distribute
22
21
 
23
22
  end
24
23
 
25
- def define_build_task(options={})
26
- directory @build_dir
27
-
28
- build_file = File.join(@build_dir,
29
- "#{Item.sn.to_s}-#{@src.pathmap('%n')}")
30
- file build_file => @src do
31
- File.open(build_file, 'w') do |f|
32
- tilt = Tilt.new(@src)
33
- f.write(tilt.render(ContextStruct.new(@context)))
34
- f.flush
35
- end
24
+ def render(from, to)
25
+ File.open(to, 'w') do |f|
26
+ tilt = Tilt.new(from)
27
+ f.write(tilt.render(ContextStruct.new(@context)))
28
+ f.flush
36
29
  end
37
- build_file
38
30
  end
39
31
 
40
32
  end
41
-
42
33
  end
43
34
  end
44
35
 
@@ -1,3 +1,3 @@
1
1
  module Rake::Distribute
2
- VERSION = '1.3.2'
2
+ VERSION = '1.4.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake-distribute
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zhao Cai
@@ -30,7 +30,7 @@ cert_chain:
30
30
  eIuFwYbmfyt5/ObUtmp3BlaIStTiX9TBWeuTx6Zq6q6wDzcudbDRd+jLa2XG2AGB
31
31
  S6w/KYMnbhUxfyEU1MX10sJv87WIrtgF
32
32
  -----END CERTIFICATE-----
33
- date: 2013-05-06 00:00:00.000000000 Z
33
+ date: 2013-05-15 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: rake
metadata.gz.sig CHANGED
Binary file