rake-distribute 1.3.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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