rake-funnel 0.3.2.pre → 0.4.0.pre

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.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +2 -2
  3. data/Gemfile +4 -0
  4. data/README.md +2 -2
  5. data/lib/rake/funnel/ambiguous_file_error.rb +31 -29
  6. data/lib/rake/funnel/execution_error.rb +28 -26
  7. data/lib/rake/funnel/extensions/case/camel_case.rb +24 -19
  8. data/lib/rake/funnel/extensions/case/pascal_case.rb +24 -19
  9. data/lib/rake/funnel/extensions/case.rb +3 -3
  10. data/lib/rake/funnel/extensions/common_path.rb +60 -52
  11. data/lib/rake/funnel/extensions/disable_colors.rb +33 -27
  12. data/lib/rake/funnel/extensions/rexml.rb +27 -23
  13. data/lib/rake/funnel/extensions/shell.rb +92 -56
  14. data/lib/rake/funnel/extensions/windows_path.rb +15 -11
  15. data/lib/rake/funnel/framework.rb +11 -16
  16. data/lib/rake/funnel/integration/progress_report.rb +72 -70
  17. data/lib/rake/funnel/integration/sync_output.rb +12 -8
  18. data/lib/rake/funnel/integration/teamcity/nunit_plugin.rb +61 -55
  19. data/lib/rake/funnel/integration/teamcity/progress_report.rb +39 -33
  20. data/lib/rake/funnel/integration/teamcity/service_messages.rb +46 -40
  21. data/lib/rake/funnel/integration/teamcity/teamcity.rb +19 -15
  22. data/lib/rake/funnel/integration/teamcity.rb +3 -5
  23. data/lib/rake/funnel/support/argument_mapper/key_value_pair.rb +16 -10
  24. data/lib/rake/funnel/support/argument_mapper/styles/default.rb +39 -31
  25. data/lib/rake/funnel/support/argument_mapper/styles/msbuild.rb +41 -33
  26. data/lib/rake/funnel/support/argument_mapper/styles/msdeploy.rb +55 -47
  27. data/lib/rake/funnel/support/argument_mapper/styles/nunit.rb +41 -33
  28. data/lib/rake/funnel/support/argument_mapper/styles.rb +3 -5
  29. data/lib/rake/funnel/support/argument_mapper/switch.rb +16 -10
  30. data/lib/rake/funnel/support/argument_mapper/value.rb +16 -10
  31. data/lib/rake/funnel/support/assembly_version/from_version_files.rb +39 -35
  32. data/lib/rake/funnel/support/assembly_version/languages/cs +5 -5
  33. data/lib/rake/funnel/support/assembly_version/languages/fs +12 -12
  34. data/lib/rake/funnel/support/assembly_version/languages/vb +5 -5
  35. data/lib/rake/funnel/support/assembly_version_writer.rb +56 -52
  36. data/lib/rake/funnel/support/binary_version_reader.rb +37 -32
  37. data/lib/rake/funnel/support/copier.rb +31 -27
  38. data/lib/rake/funnel/support/environments/loader.rb +46 -40
  39. data/lib/rake/funnel/support/environments.rb +3 -3
  40. data/lib/rake/funnel/support/internal/finder.rb +55 -51
  41. data/lib/rake/funnel/support/internal/instantiate_symbol.rb +38 -34
  42. data/lib/rake/funnel/support/mapper.rb +57 -53
  43. data/lib/rake/funnel/support/mono.rb +21 -17
  44. data/lib/rake/funnel/support/msbuild/build_tool.rb +30 -24
  45. data/lib/rake/funnel/support/msbuild.rb +3 -3
  46. data/lib/rake/funnel/support/msdeploy/registry_patch.rb +90 -84
  47. data/lib/rake/funnel/support/msdeploy.rb +3 -3
  48. data/lib/rake/funnel/support/patch.rb +41 -37
  49. data/lib/rake/funnel/support/specs_remover.rb +66 -62
  50. data/lib/rake/funnel/support/template_engine.rb +30 -26
  51. data/lib/rake/funnel/support/timing/report.rb +95 -89
  52. data/lib/rake/funnel/support/timing/statistics.rb +32 -26
  53. data/lib/rake/funnel/support/timing.rb +3 -3
  54. data/lib/rake/funnel/support/version_info.rb +103 -72
  55. data/lib/rake/funnel/support/which.rb +19 -15
  56. data/lib/rake/funnel/support/zipper.rb +53 -49
  57. data/lib/rake/funnel/tasks/assembly_version.rb +44 -40
  58. data/lib/rake/funnel/tasks/bin_path.rb +45 -41
  59. data/lib/rake/funnel/tasks/copy.rb +43 -39
  60. data/lib/rake/funnel/tasks/environments.rb +89 -89
  61. data/lib/rake/funnel/tasks/msbuild.rb +55 -51
  62. data/lib/rake/funnel/tasks/msdeploy.rb +54 -50
  63. data/lib/rake/funnel/tasks/nunit.rb +52 -48
  64. data/lib/rake/funnel/tasks/paket.rb +51 -47
  65. data/lib/rake/funnel/tasks/quick_template.rb +53 -49
  66. data/lib/rake/funnel/tasks/side_by_side_specs.rb +41 -37
  67. data/lib/rake/funnel/tasks/timing.rb +108 -104
  68. data/lib/rake/funnel/tasks/zip.rb +46 -42
  69. data/lib/rake/funnel/version.rb +1 -1
  70. data/lib/rake/funnel.rb +7 -7
  71. data/rake-funnel.gemspec +12 -3
  72. data/spec/rake/funnel/execution_error_spec.rb +67 -67
  73. data/spec/rake/funnel/extensions/case/camel_case_spec.rb +17 -17
  74. data/spec/rake/funnel/extensions/case/pascal_case_spec.rb +17 -17
  75. data/spec/rake/funnel/extensions/common_path_spec.rb +56 -56
  76. data/spec/rake/funnel/extensions/disable_colors_spec.rb +33 -33
  77. data/spec/rake/funnel/extensions/rexml_spec.rb +20 -20
  78. data/spec/rake/funnel/extensions/shell_spec.rb +237 -237
  79. data/spec/rake/funnel/extensions/windows_path_spec.rb +5 -5
  80. data/spec/rake/funnel/integration/progress_report_spec.rb +149 -149
  81. data/spec/rake/funnel/integration/sync_output_spec.rb +16 -16
  82. data/spec/rake/funnel/integration/teamcity/nunit_plugin_spec.rb +110 -110
  83. data/spec/rake/funnel/integration/teamcity/progress_report_spec.rb +174 -174
  84. data/spec/rake/funnel/integration/teamcity/service_messages_spec.rb +136 -136
  85. data/spec/rake/funnel/integration/teamcity/teamcity_spec.rb +34 -34
  86. data/spec/rake/funnel/support/argument_mapper/styles/msdeploy_spec.rb +222 -222
  87. data/spec/rake/funnel/support/argument_mapper/styles/nunit_spec.rb +25 -25
  88. data/spec/rake/funnel/support/argument_mapper/styles/styles_spec.rb +214 -214
  89. data/spec/rake/funnel/support/assembly_version/from_version_files_spec.rb +66 -61
  90. data/spec/rake/funnel/support/assembly_version_writer_spec.rb +140 -140
  91. data/spec/rake/funnel/support/binary_version_reader_spec.rb +29 -29
  92. data/spec/rake/funnel/support/copier_spec.rb +58 -58
  93. data/spec/rake/funnel/support/environments/loader_spec.rb +143 -143
  94. data/spec/rake/funnel/support/internal/finder_spec.rb +229 -229
  95. data/spec/rake/funnel/support/internal/instantiate_symbol_spec.rb +182 -183
  96. data/spec/rake/funnel/support/mapper_spec.rb +87 -87
  97. data/spec/rake/funnel/support/mono_spec.rb +57 -57
  98. data/spec/rake/funnel/support/msbuild/build_tool_spec.rb +21 -21
  99. data/spec/rake/funnel/support/msdeploy/registry_patch_spec.rb +139 -139
  100. data/spec/rake/funnel/support/patch_spec.rb +108 -108
  101. data/spec/rake/funnel/support/specs_remover/Sample.csproj +28 -28
  102. data/spec/rake/funnel/support/specs_remover_spec.rb +116 -116
  103. data/spec/rake/funnel/support/template_engine_spec.rb +65 -65
  104. data/spec/rake/funnel/support/timing/report_spec.rb +129 -129
  105. data/spec/rake/funnel/support/version_info_spec.rb +333 -228
  106. data/spec/rake/funnel/support/which_spec.rb +65 -65
  107. data/spec/rake/funnel/support/zipper_spec.rb +77 -77
  108. data/spec/rake/funnel/tasks/assembly_version_spec.rb +45 -45
  109. data/spec/rake/funnel/tasks/bin_path_spec.rb +52 -52
  110. data/spec/rake/funnel/tasks/copy_spec.rb +44 -44
  111. data/spec/rake/funnel/tasks/environments_spec.rb +249 -247
  112. data/spec/rake/funnel/tasks/msbuild_spec.rb +91 -91
  113. data/spec/rake/funnel/tasks/msdeploy_spec.rb +220 -220
  114. data/spec/rake/funnel/tasks/nunit_spec.rb +74 -74
  115. data/spec/rake/funnel/tasks/paket_spec.rb +140 -142
  116. data/spec/rake/funnel/tasks/quick_template_spec.rb +62 -62
  117. data/spec/rake/funnel/tasks/side_by_side_specs_spec.rb +58 -58
  118. data/spec/rake/funnel/tasks/timing_spec.rb +133 -133
  119. data/spec/rake/funnel/tasks/zip_spec.rb +50 -50
  120. data/spec/spec_helper.rb +43 -33
  121. metadata +2 -3
  122. data/lib/rake/funnel/support/side_by_side_specs.rb +0 -3
@@ -1,89 +1,89 @@
1
- require 'configatron'
2
- require 'rake/tasklib'
3
-
4
- Dir["#{File.dirname(__FILE__)}/environments_support/*.rb"].each do |path|
5
- require path
6
- end
7
-
8
- module Rake::Funnel::Tasks
9
- class Environments < Rake::TaskLib
10
- include Rake::Funnel::Support::Environments
11
-
12
- attr_accessor :base_dir, :store, :default_env, :default_config, :local_config, :customizer
13
-
14
- def initialize(*args, &task_block)
15
- setup_ivars(args)
16
-
17
- define(args, &task_block)
18
- end
19
-
20
- private
21
- def setup_ivars(_args)
22
- @store = configatron
23
- @default_env = nil
24
- @default_config = 'default'
25
- @local_config = 'local'
26
- @base_dir = 'config'
27
- end
28
-
29
- def define(args, &task_block)
30
- task_block.call(*[self].slice(0, task_block.arity)) if task_block
31
-
32
- environments.each do |env|
33
- desc "Configure for the #{env[:name]} environment"
34
-
35
- task(env[:name], *args) do |_, task_args|
36
- Loader.load_configuration(env, store, customizer)
37
- end
38
- end
39
-
40
- default_environment_setup
41
- end
42
-
43
- def environments
44
- default = File.join(base_dir, config_ext(default_config))
45
- local = File.join(base_dir, config_ext(local_config))
46
-
47
- Dir[File.join(base_dir, config_ext('*'))]
48
- .reject { |config| config == default || config == local }
49
- .map do |config|
50
- {
51
- name: File.basename(config, '.*'),
52
- config_files: [
53
- File.exists?(default) ? default : nil,
54
- config,
55
- File.exists?(local) ? local : nil
56
- ].compact
57
- }
58
- end
59
- end
60
-
61
- def config_ext(name)
62
- "#{name}.yaml"
63
- end
64
-
65
- def default_environment_setup
66
- return unless default_env
67
-
68
- top_level_envs = top_level_env_tasks
69
- if top_level_envs.empty?
70
- task = Rake.application.current_scope.path_with_task_name(default_env)
71
- prepend_task(task)
72
- else
73
- top_level_envs.each do |task|
74
- Rake.application.top_level_tasks.delete(task)
75
- prepend_task(task)
76
- end
77
- end
78
- end
79
-
80
- def prepend_task(task)
81
- Rake.application.top_level_tasks.unshift(task)
82
- end
83
-
84
- def top_level_env_tasks
85
- expect_user_defined = environments.map { |env| Rake.application.current_scope.path_with_task_name(env[:name]) }
86
- Rake.application.top_level_tasks.select { |t| expect_user_defined.include?(t) }
87
- end
88
- end
89
- end
1
+ require 'configatron'
2
+ require 'rake/tasklib'
3
+
4
+ module Rake
5
+ module Funnel
6
+ module Tasks
7
+ class Environments < Rake::TaskLib
8
+ include Rake::Funnel::Support::Environments
9
+
10
+ attr_accessor :base_dir, :store, :default_env, :default_config, :local_config, :customizer
11
+
12
+ def initialize(*args, &task_block)
13
+ setup_ivars(args)
14
+
15
+ define(args, &task_block)
16
+ end
17
+
18
+ private
19
+ def setup_ivars(_args)
20
+ @store = configatron
21
+ @default_env = nil
22
+ @default_config = 'default'
23
+ @local_config = 'local'
24
+ @base_dir = 'config'
25
+ end
26
+
27
+ def define(args, &task_block)
28
+ task_block.call(*[self].slice(0, task_block.arity)) if task_block
29
+
30
+ environments.each do |env|
31
+ desc "Configure for the #{env[:name]} environment"
32
+
33
+ task(env[:name], *args) do |_, _task_args|
34
+ Loader.load_configuration(env, store, customizer)
35
+ end
36
+ end
37
+
38
+ default_environment_setup
39
+ end
40
+
41
+ def environments
42
+ default = File.join(base_dir, config_ext(default_config))
43
+ local = File.join(base_dir, config_ext(local_config))
44
+
45
+ Dir[File.join(base_dir, config_ext('*'))]
46
+ .reject { |config| config == default || config == local }
47
+ .map do |config|
48
+ {
49
+ name: File.basename(config, '.*'),
50
+ config_files: [
51
+ File.exist?(default) ? default : nil,
52
+ config,
53
+ File.exist?(local) ? local : nil
54
+ ].compact
55
+ }
56
+ end
57
+ end
58
+
59
+ def config_ext(name)
60
+ "#{name}.yaml"
61
+ end
62
+
63
+ def default_environment_setup
64
+ return unless default_env
65
+
66
+ top_level_envs = top_level_env_tasks
67
+ if top_level_envs.empty?
68
+ task = Rake.application.current_scope.path_with_task_name(default_env)
69
+ prepend_task(task)
70
+ else
71
+ top_level_envs.each do |task|
72
+ Rake.application.top_level_tasks.delete(task)
73
+ prepend_task(task)
74
+ end
75
+ end
76
+ end
77
+
78
+ def prepend_task(task)
79
+ Rake.application.top_level_tasks.unshift(task)
80
+ end
81
+
82
+ def top_level_env_tasks
83
+ expect_user_defined = environments.map { |env| Rake.application.current_scope.path_with_task_name(env[:name]) }
84
+ Rake.application.top_level_tasks.select { |t| expect_user_defined.include?(t) }
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -1,51 +1,55 @@
1
- require 'rake/tasklib'
2
-
3
- module Rake::Funnel::Tasks
4
- class MSBuild < Rake::TaskLib
5
- include Rake::Funnel::Support
6
- include Rake::Funnel::Support::MSBuild
7
-
8
- attr_accessor :name, :msbuild, :project_or_solution, :args, :search_pattern
9
-
10
- def initialize(*args, &task_block)
11
- setup_ivars(args)
12
-
13
- define(args, &task_block)
14
- end
15
-
16
- def project_or_solution
17
- Finder.new(@project_or_solution || search_pattern, self, 'No projects or more than one project found.')
18
- end
19
-
20
- def project_or_solution=(value)
21
- @project_or_solution = value
22
- end
23
-
24
- private
25
- def setup_ivars(args)
26
- @name = args.shift || :compile
27
-
28
- @msbuild = BuildTool.find
29
- @args = {}
30
- @search_pattern = %w(**/*.sln)
31
- end
32
-
33
- def define(args, &task_block)
34
- desc 'Compile MSBuild projects' unless Rake.application.last_description
35
-
36
- task(name, *args) do |_, task_args|
37
- task_block.call(*[self, task_args].slice(0, task_block.arity)) if task_block
38
-
39
- cmd = [
40
- msbuild,
41
- project_or_solution.single,
42
- *Mapper.new(:MSBuild).map(@args)
43
- ]
44
-
45
- sh(*cmd)
46
- end
47
-
48
- self
49
- end
50
- end
51
- end
1
+ require 'rake/tasklib'
2
+
3
+ module Rake
4
+ module Funnel
5
+ module Tasks
6
+ class MSBuild < Rake::TaskLib
7
+ include Rake::Funnel::Support
8
+ include Rake::Funnel::Support::MSBuild
9
+
10
+ attr_accessor :name, :msbuild, :project_or_solution, :args, :search_pattern
11
+
12
+ def initialize(*args, &task_block)
13
+ setup_ivars(args)
14
+
15
+ define(args, &task_block)
16
+ end
17
+
18
+ def project_or_solution
19
+ Finder.new(@project_or_solution || search_pattern, self, 'No projects or more than one project found.')
20
+ end
21
+
22
+ def project_or_solution=(value)
23
+ @project_or_solution = value
24
+ end
25
+
26
+ private
27
+ def setup_ivars(args)
28
+ @name = args.shift || :compile
29
+
30
+ @msbuild = BuildTool.find
31
+ @args = {}
32
+ @search_pattern = %w(**/*.sln)
33
+ end
34
+
35
+ def define(args, &task_block)
36
+ desc 'Compile MSBuild projects' unless Rake.application.last_description
37
+
38
+ task(name, *args) do |_, task_args|
39
+ task_block.call(*[self, task_args].slice(0, task_block.arity)) if task_block
40
+
41
+ cmd = [
42
+ msbuild,
43
+ project_or_solution.single,
44
+ *Mapper.new(:MSBuild).map(@args)
45
+ ]
46
+
47
+ sh(*cmd)
48
+ end
49
+
50
+ self
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -1,50 +1,54 @@
1
- require 'rake/tasklib'
2
-
3
- module Rake::Funnel::Tasks
4
- class MSDeploy < Rake::TaskLib
5
- include Rake::Funnel::Support
6
- include Rake::Funnel::Support::MSDeploy
7
-
8
- attr_accessor :name, :msdeploy, :args, :log_file
9
-
10
- def initialize(*args, &task_block)
11
- setup_ivars(args)
12
-
13
- define(args, &task_block)
14
- end
15
-
16
- private
17
- def setup_ivars(args)
18
- @name = args.shift || :msdeploy
19
-
20
- @msdeploy = 'msdeploy'
21
- @args = {}
22
- @log_file = "#{@name}.log"
23
- end
24
-
25
- def define(args, &task_block)
26
- desc 'Deploy application' unless Rake.application.last_description
27
-
28
- task(name, *args) do |_, task_args|
29
- task_block.call(*[self, task_args].slice(0, task_block.arity)) if task_block
30
-
31
- mapper = Mapper.new(:MSDeploy)
32
- cmd = [quote(msdeploy), mapper.map(@args)]
33
- .flatten
34
- .join(' ')
35
-
36
- RegistryPatch.new do
37
- shell(cmd, log_file: log_file, error_lines: /^(error|[\w\.]*exception)/i)
38
- end
39
- end
40
-
41
- self
42
- end
43
-
44
- def quote(value)
45
- value = value.gsub(/"/, '""') if value.kind_of?(String)
46
- return %Q{"#{value}"} if value =~ /\s/
47
- value
48
- end
49
- end
50
- end
1
+ require 'rake/tasklib'
2
+
3
+ module Rake
4
+ module Funnel
5
+ module Tasks
6
+ class MSDeploy < Rake::TaskLib
7
+ include Rake::Funnel::Support
8
+ include Rake::Funnel::Support::MSDeploy
9
+
10
+ attr_accessor :name, :msdeploy, :args, :log_file
11
+
12
+ def initialize(*args, &task_block)
13
+ setup_ivars(args)
14
+
15
+ define(args, &task_block)
16
+ end
17
+
18
+ private
19
+ def setup_ivars(args)
20
+ @name = args.shift || :msdeploy
21
+
22
+ @msdeploy = 'msdeploy'
23
+ @args = {}
24
+ @log_file = "#{@name}.log"
25
+ end
26
+
27
+ def define(args, &task_block)
28
+ desc 'Deploy application' unless Rake.application.last_description
29
+
30
+ task(name, *args) do |_, task_args|
31
+ task_block.call(*[self, task_args].slice(0, task_block.arity)) if task_block
32
+
33
+ mapper = Mapper.new(:MSDeploy)
34
+ cmd = [quote(msdeploy), mapper.map(@args)]
35
+ .flatten
36
+ .join(' ')
37
+
38
+ RegistryPatch.new do
39
+ shell(cmd, log_file: log_file, error_lines: /^(error|[\w\.]*exception)/i)
40
+ end
41
+ end
42
+
43
+ self
44
+ end
45
+
46
+ def quote(value)
47
+ value = value.gsub(/"/, '""') if value.is_a?(String)
48
+ return %Q{"#{value}"} if value =~ /\s/
49
+ value
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -1,48 +1,52 @@
1
- require 'rake/tasklib'
2
-
3
- module Rake::Funnel::Tasks
4
- class NUnit < Rake::TaskLib
5
- include Rake::Funnel::Support
6
-
7
- attr_accessor :name, :nunit, :files, :args
8
-
9
- def initialize(*args, &task_block)
10
- setup_ivars(args)
11
-
12
- define(args, &task_block)
13
- end
14
-
15
- private
16
- def setup_ivars(args)
17
- @name = args.shift || :test
18
-
19
- @nunit = 'nunit-console.exe'
20
- @args = {}
21
- @files = %w(build/specs/**/*.dll build/specs/**/*.exe)
22
- end
23
-
24
- def define(args, &task_block)
25
- desc "Test #{test_assemblies.all_or_default.join(', ')}" unless Rake.application.last_description
26
-
27
- task(name, *args) do |_, task_args|
28
- task_block.call(*[self, task_args].slice(0, task_block.arity)) if task_block
29
-
30
- Rake::Funnel::Integration::TeamCity::NUnitPlugin.setup(nunit)
31
-
32
- cmd = [
33
- *Mono.invocation(nunit),
34
- *test_assemblies.all,
35
- *Mapper.new(:NUnit).map(@args)
36
- ]
37
-
38
- sh(*cmd)
39
- end
40
-
41
- self
42
- end
43
-
44
- def test_assemblies
45
- Finder.new(files, self, 'No test assemblies found.')
46
- end
47
- end
48
- end
1
+ require 'rake/tasklib'
2
+
3
+ module Rake
4
+ module Funnel
5
+ module Tasks
6
+ class NUnit < Rake::TaskLib
7
+ include Rake::Funnel::Support
8
+
9
+ attr_accessor :name, :nunit, :files, :args
10
+
11
+ def initialize(*args, &task_block)
12
+ setup_ivars(args)
13
+
14
+ define(args, &task_block)
15
+ end
16
+
17
+ private
18
+ def setup_ivars(args)
19
+ @name = args.shift || :test
20
+
21
+ @nunit = 'nunit-console.exe'
22
+ @args = {}
23
+ @files = %w(build/specs/**/*.dll build/specs/**/*.exe)
24
+ end
25
+
26
+ def define(args, &task_block)
27
+ desc "Test #{test_assemblies.all_or_default.join(', ')}" unless Rake.application.last_description
28
+
29
+ task(name, *args) do |_, task_args|
30
+ task_block.call(*[self, task_args].slice(0, task_block.arity)) if task_block
31
+
32
+ Rake::Funnel::Integration::TeamCity::NUnitPlugin.setup(nunit)
33
+
34
+ cmd = [
35
+ *Mono.invocation(nunit),
36
+ *test_assemblies.all,
37
+ *Mapper.new(:NUnit).map(@args)
38
+ ]
39
+
40
+ sh(*cmd)
41
+ end
42
+
43
+ self
44
+ end
45
+
46
+ def test_assemblies
47
+ Finder.new(files, self, 'No test assemblies found.')
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,47 +1,51 @@
1
- require 'rake/tasklib'
2
-
3
- module Rake::Funnel::Tasks
4
- class Paket < Rake::TaskLib
5
- include Rake::Funnel::Support
6
-
7
- attr_accessor :name, :paket, :paket_args, :bootstrapper, :bootstrapper_args
8
-
9
- def initialize(*args, &task_block)
10
- setup_ivars(args)
11
-
12
- define(args, &task_block)
13
- end
14
-
15
- private
16
- def setup_ivars(args)
17
- @name = args.shift || :paket
18
-
19
- @paket = File.join('.paket', 'paket.exe')
20
- @paket_args = 'restore'
21
-
22
- @bootstrapper = File.join('.paket', 'paket.bootstrapper.exe')
23
- @bootstrapper_args = nil
24
- end
25
-
26
- def define(args, &task_block)
27
- desc 'Restore packages' unless Rake.application.last_description
28
-
29
- task(name, *args) do |_, task_args|
30
- task_block.call(*[self, task_args].slice(0, task_block.arity)) if task_block
31
-
32
- sh(*bootstrapper_cmd) unless File.exist?(paket)
33
- sh(*paket_cmd)
34
- end
35
-
36
- self
37
- end
38
-
39
- def bootstrapper_cmd
40
- Mono.invocation(bootstrapper, bootstrapper_args)
41
- end
42
-
43
- def paket_cmd
44
- Mono.invocation(paket, paket_args)
45
- end
46
- end
47
- end
1
+ require 'rake/tasklib'
2
+
3
+ module Rake
4
+ module Funnel
5
+ module Tasks
6
+ class Paket < Rake::TaskLib
7
+ include Rake::Funnel::Support
8
+
9
+ attr_accessor :name, :paket, :paket_args, :bootstrapper, :bootstrapper_args
10
+
11
+ def initialize(*args, &task_block)
12
+ setup_ivars(args)
13
+
14
+ define(args, &task_block)
15
+ end
16
+
17
+ private
18
+ def setup_ivars(args)
19
+ @name = args.shift || :paket
20
+
21
+ @paket = File.join('.paket', 'paket.exe')
22
+ @paket_args = 'restore'
23
+
24
+ @bootstrapper = File.join('.paket', 'paket.bootstrapper.exe')
25
+ @bootstrapper_args = nil
26
+ end
27
+
28
+ def define(args, &task_block)
29
+ desc 'Restore packages' unless Rake.application.last_description
30
+
31
+ task(name, *args) do |_, task_args|
32
+ task_block.call(*[self, task_args].slice(0, task_block.arity)) if task_block
33
+
34
+ sh(*bootstrapper_cmd) unless File.exist?(paket)
35
+ sh(*paket_cmd)
36
+ end
37
+
38
+ self
39
+ end
40
+
41
+ def bootstrapper_cmd
42
+ Mono.invocation(bootstrapper, bootstrapper_args)
43
+ end
44
+
45
+ def paket_cmd
46
+ Mono.invocation(paket, paket_args)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end