physique 0.3.10 → 0.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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/FLUENT_MIGRATOR.md +300 -300
  3. data/Gemfile +3 -3
  4. data/Gemfile.lock +51 -11
  5. data/Guardfile +34 -0
  6. data/README.md +368 -368
  7. data/RUBY_SETUP.md +14 -14
  8. data/Rakefile +1 -1
  9. data/lib/physique.rb +22 -22
  10. data/lib/physique/config.rb +23 -23
  11. data/lib/physique/dsl.rb +46 -46
  12. data/lib/physique/project_path_resolver.rb +45 -45
  13. data/lib/physique/solution.rb +72 -72
  14. data/lib/physique/task_builders/build.rb +76 -69
  15. data/lib/physique/task_builders/default.rb +19 -19
  16. data/lib/physique/task_builders/fluent_migrator.rb +302 -299
  17. data/lib/physique/task_builders/nuget.rb +18 -6
  18. data/lib/physique/task_builders/octopus.rb +4 -2
  19. data/lib/physique/task_builders/publish_nugets.rb +5 -3
  20. data/lib/physique/task_builders/test.rb +4 -4
  21. data/lib/physique/tasks/fluent_migrator.rb +158 -158
  22. data/lib/physique/tasks/nugets_pack.rb +12 -12
  23. data/lib/physique/tasks/octopus_pack.rb +1 -1
  24. data/lib/physique/tasks/sqlcmd.rb +109 -109
  25. data/lib/physique/tasks/versionizer.rb +112 -112
  26. data/lib/physique/tasks_builder.rb +59 -59
  27. data/lib/physique/tool_locator.rb +50 -50
  28. data/lib/physique/version.rb +3 -3
  29. data/physique.gemspec +29 -28
  30. data/spec/fluent_migrator_config_spec.rb +39 -39
  31. data/spec/project_spec.rb +42 -42
  32. data/spec/publish_nugets_spec.rb +40 -40
  33. data/spec/solution_spec.rb +11 -11
  34. data/spec/sqlcmd_spec.rb +146 -146
  35. data/spec/support/shared_contexts/rake.rb +20 -21
  36. data/spec/task_builders/build_spec.rb +25 -25
  37. data/spec/task_builders/default_spec.rb +17 -17
  38. data/spec/task_builders/fluent_migrator_spec.rb +70 -68
  39. data/spec/task_builders/nspec_spec.rb +13 -13
  40. data/spec/task_builders/nuget_spec.rb +16 -16
  41. data/spec/test_data/solutions/.nuget/NuGet.Config +5 -5
  42. data/spec/test_data/solutions/.nuget/NuGet.exe +0 -0
  43. data/spec/test_data/solutions/.nuget/NuGet.targets +144 -144
  44. data/spec/test_data/solutions/.nuget/packages.config +3 -3
  45. data/spec/test_data/solutions/basic/.semver +6 -6
  46. data/spec/test_data/solutions/basic/Basic.Tests/Basic.Tests.csproj +58 -58
  47. data/spec/test_data/solutions/basic/Basic.Tests/Class1.cs +14 -14
  48. data/spec/test_data/solutions/basic/Basic.Tests/Properties/AssemblyInfo.cs +36 -36
  49. data/spec/test_data/solutions/basic/Basic.Tests/packages.config +3 -3
  50. data/spec/test_data/solutions/basic/Basic.sln +28 -28
  51. data/spec/test_data/solutions/basic/Basic/Basic.csproj +52 -52
  52. data/spec/test_data/solutions/basic/Basic/Class1.cs +12 -12
  53. data/spec/test_data/solutions/basic/Basic/Properties/AssemblyInfo.cs +36 -36
  54. data/spec/test_data/solutions/basic/Rakefile.rb +10 -10
  55. data/spec/test_data/solutions/basic/packages.config +3 -3
  56. data/spec/test_data/solutions/fluent-migrator/.semver +6 -6
  57. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/Migrations/.gitkeep +0 -0
  58. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/Properties/AssemblyInfo.cs +36 -36
  59. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/TestMigration.cs +19 -19
  60. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/_Scripts/create.sql +1 -1
  61. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/_Scripts/drop.sql +4 -4
  62. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/_Scripts/seed.sql +1 -1
  63. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/packages.config +3 -3
  64. data/spec/test_data/solutions/fluent-migrator/Basic.Specs/Basic.Specs.csproj +59 -59
  65. data/spec/test_data/solutions/fluent-migrator/Basic.Specs/Class1.cs +12 -12
  66. data/spec/test_data/solutions/fluent-migrator/Basic.Specs/DebuggerShim.cs +42 -42
  67. data/spec/test_data/solutions/fluent-migrator/Basic.Specs/Properties/AssemblyInfo.cs +36 -36
  68. data/spec/test_data/solutions/fluent-migrator/Basic.Specs/packages.config +3 -3
  69. data/spec/test_data/solutions/fluent-migrator/Basic.sln +39 -39
  70. data/spec/test_data/solutions/fluent-migrator/Basic/Basic.csproj +55 -55
  71. data/spec/test_data/solutions/fluent-migrator/Basic/Class1.cs +12 -12
  72. data/spec/test_data/solutions/fluent-migrator/Basic/Properties/AssemblyInfo.cs +36 -36
  73. data/spec/test_data/solutions/fluent-migrator/Basic/packages.config +2 -2
  74. data/spec/test_data/solutions/fluent-migrator/Rakefile.rb +20 -20
  75. data/spec/test_data/solutions/multiple-fluent-migrator/.semver +6 -6
  76. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Migrations1/Basic.Migrations1.csproj +52 -52
  77. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Migrations1/Class1.cs +12 -12
  78. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Migrations1/Properties/AssemblyInfo.cs +36 -36
  79. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Migrations2/Basic.Migrations2.csproj +52 -52
  80. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Migrations2/Class1.cs +12 -12
  81. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Migrations2/Properties/AssemblyInfo.cs +36 -36
  82. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Specs/Basic.Specs.csproj +59 -59
  83. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Specs/Class1.cs +12 -12
  84. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Specs/DebuggerShim.cs +42 -42
  85. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Specs/Properties/AssemblyInfo.cs +36 -36
  86. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Specs/packages.config +3 -3
  87. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.sln +45 -45
  88. data/spec/test_data/solutions/multiple-fluent-migrator/Basic/Basic.csproj +55 -55
  89. data/spec/test_data/solutions/multiple-fluent-migrator/Basic/Class1.cs +12 -12
  90. data/spec/test_data/solutions/multiple-fluent-migrator/Basic/Properties/AssemblyInfo.cs +36 -36
  91. data/spec/test_data/solutions/multiple-fluent-migrator/Basic/packages.config +2 -2
  92. data/spec/test_data/solutions/multiple-fluent-migrator/Rakefile.rb +28 -28
  93. data/spec/test_data/solutions/nspec/.semver +6 -6
  94. data/spec/test_data/solutions/nspec/Basic.Specs/Basic.Specs.csproj +59 -59
  95. data/spec/test_data/solutions/nspec/Basic.Specs/Class1.cs +12 -12
  96. data/spec/test_data/solutions/nspec/Basic.Specs/DebuggerShim.cs +42 -42
  97. data/spec/test_data/solutions/nspec/Basic.Specs/Properties/AssemblyInfo.cs +36 -36
  98. data/spec/test_data/solutions/nspec/Basic.Specs/packages.config +3 -3
  99. data/spec/test_data/solutions/nspec/Basic.sln +28 -28
  100. data/spec/test_data/solutions/nspec/Basic/Basic.csproj +55 -55
  101. data/spec/test_data/solutions/nspec/Basic/Class1.cs +12 -12
  102. data/spec/test_data/solutions/nspec/Basic/Properties/AssemblyInfo.cs +36 -36
  103. data/spec/test_data/solutions/nspec/Basic/packages.config +2 -2
  104. data/spec/test_data/solutions/nspec/Rakefile.rb +14 -14
  105. data/spec/test_data/tool_locator/Program Files/Microsoft SQL Server/110/Tools/Binn/SQLCMD.exe.txt b/data/spec/test_data/tool_locator/Program Files/Microsoft SQL → Server/110/Tools/Binn/SQLCMD.exe.txt +0 -0
  106. data/spec/test_data/tool_locator/Windows/Microsoft.NET/Framework/v3.5/MSBuild.exe.txt +0 -0
  107. data/spec/test_data/tool_locator/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe.txt +0 -0
  108. data/spec/tool_locator_spec.rb +27 -29
  109. metadata +33 -16
@@ -138,4 +138,4 @@ module Physique
138
138
  end
139
139
  end
140
140
  end
141
- end
141
+ end
@@ -1,110 +1,110 @@
1
- require 'active_support/core_ext/string'
2
- require 'albacore'
3
- require 'albacore/cmd_config'
4
- require 'physique/tool_locator'
5
-
6
- module Physique
7
- module SqlCmd
8
- class Cmd
9
- include Albacore::CrossPlatformCmd
10
-
11
- attr_reader :parameters
12
-
13
- def initialize(opts)
14
- @executable = opts[:exe]
15
- set_parameters opts
16
- end
17
-
18
- def execute
19
- sh "#{@executable} #{@parameters.join(' ')}"
20
- end
21
-
22
- private
23
-
24
- def set_parameters(opts)
25
- @parameters = @parameters || []
26
- @parameters << "-S #{opts[:server_name]}"
27
- @parameters << "-d #{opts[:database_name]}" unless opts.blank? :database_name
28
- @parameters << "-i #{opts[:file]}" if opts[:source] == :file
29
- @parameters << %{-Q "#{opts[:command]}"} if opts[:source] == :command
30
- @parameters << '-b' unless opts[:continue_on_error]
31
-
32
- opts[:variables].each do |k, v|
33
- @parameters << "-v #{k}=#{v}"
34
- end
35
- end
36
- end
37
-
38
- class Config
39
- include Albacore::CmdConfig
40
- include Physique::ToolLocator
41
- self.extend Albacore::ConfigDSL
42
-
43
- # The database server
44
- attr_path :server_name
45
-
46
- # The database name
47
- attr_writer :database_name
48
-
49
- # The sql script to execute
50
- attr_path :file
51
-
52
- # The sql command to execute
53
- attr_writer :command
54
-
55
- def initialize
56
- @variables = Hash.new
57
- @continue_on_error = false
58
-
59
- @exe = which('sqlcmd') ||
60
- locate_tool('C:/Program Files/Microsoft SQL Server/**/Tools/Binn/SQLCMD.EXE')
61
- end
62
-
63
- def set_variable(k, v)
64
- @variables[k] = v
65
- end
66
-
67
- def continue_on_error
68
- @continue_on_error = true
69
- end
70
-
71
- def opts
72
- raise ArgumentError, 'You must specify a server name' if @server_name.blank?
73
- raise ArgumentError, 'You must specify a command or a file to execute' unless can_execute?
74
-
75
- Map.new({
76
- exe: @exe,
77
- server_name: @server_name,
78
- database_name: @database_name,
79
- file: @file,
80
- command: @command,
81
- source: execute_source,
82
- continue_on_error: @continue_on_error,
83
- variables: @variables
84
- })
85
- end
86
-
87
- private
88
-
89
- def can_execute?
90
- !(@file.blank? && @command.blank?)
91
- end
92
-
93
- def execute_source
94
- # Command takes precedence over a file
95
- return :command unless @command.blank?
96
- :file
97
- end
98
- end
99
-
100
- class Task
101
- def initialize(opts)
102
- @cmd = Physique::SqlCmd::Cmd.new opts
103
- end
104
-
105
- def execute
106
- @cmd.execute
107
- end
108
- end
109
- end
1
+ require 'active_support/core_ext/string'
2
+ require 'albacore'
3
+ require 'albacore/cmd_config'
4
+ require 'physique/tool_locator'
5
+
6
+ module Physique
7
+ module SqlCmd
8
+ class Cmd
9
+ include Albacore::CrossPlatformCmd
10
+
11
+ attr_reader :parameters
12
+
13
+ def initialize(opts)
14
+ @executable = opts[:exe]
15
+ set_parameters opts
16
+ end
17
+
18
+ def execute
19
+ sh "#{@executable} #{@parameters.join(' ')}"
20
+ end
21
+
22
+ private
23
+
24
+ def set_parameters(opts)
25
+ @parameters = @parameters || []
26
+ @parameters << "-S #{opts[:server_name]}"
27
+ @parameters << "-d #{opts[:database_name]}" unless opts.blank? :database_name
28
+ @parameters << "-i #{opts[:file]}" if opts[:source] == :file
29
+ @parameters << %{-Q "#{opts[:command]}"} if opts[:source] == :command
30
+ @parameters << '-b' unless opts[:continue_on_error]
31
+
32
+ opts[:variables].each do |k, v|
33
+ @parameters << "-v #{k}=#{v}"
34
+ end
35
+ end
36
+ end
37
+
38
+ class Config
39
+ include Albacore::CmdConfig
40
+ include Physique::ToolLocator
41
+ self.extend Albacore::ConfigDSL
42
+
43
+ # The database server
44
+ attr_path :server_name
45
+
46
+ # The database name
47
+ attr_writer :database_name
48
+
49
+ # The sql script to execute
50
+ attr_path :file
51
+
52
+ # The sql command to execute
53
+ attr_writer :command
54
+
55
+ def initialize
56
+ @variables = Hash.new
57
+ @continue_on_error = false
58
+
59
+ @exe = which('sqlcmd') ||
60
+ locate_tool('C:/Program Files/Microsoft SQL Server/**/Tools/Binn/SQLCMD.EXE')
61
+ end
62
+
63
+ def set_variable(k, v)
64
+ @variables[k] = v
65
+ end
66
+
67
+ def continue_on_error
68
+ @continue_on_error = true
69
+ end
70
+
71
+ def opts
72
+ raise ArgumentError, 'You must specify a server name' if @server_name.blank?
73
+ raise ArgumentError, 'You must specify a command or a file to execute' unless can_execute?
74
+
75
+ Map.new({
76
+ exe: @exe,
77
+ server_name: @server_name,
78
+ database_name: @database_name,
79
+ file: @file,
80
+ command: @command,
81
+ source: execute_source,
82
+ continue_on_error: @continue_on_error,
83
+ variables: @variables
84
+ })
85
+ end
86
+
87
+ private
88
+
89
+ def can_execute?
90
+ !(@file.blank? && @command.blank?)
91
+ end
92
+
93
+ def execute_source
94
+ # Command takes precedence over a file
95
+ return :command unless @command.blank?
96
+ :file
97
+ end
98
+ end
99
+
100
+ class Task
101
+ def initialize(opts)
102
+ @cmd = Physique::SqlCmd::Cmd.new opts
103
+ end
104
+
105
+ def execute
106
+ @cmd.execute
107
+ end
108
+ end
109
+ end
110
110
  end
@@ -1,113 +1,113 @@
1
- require 'xsemver'
2
- require 'albacore/logging'
3
-
4
- module Physique
5
- module Tasks
6
- # Versionizer does versioning ITS OWN WAY!
7
- #
8
- # Defines ENV vars:
9
- # * BUILD_VERSION
10
- # * NUGET_VERSION
11
- # * FORMAL_VERSION
12
- #
13
- # Publishes symbol :build_version
14
- module Versionizer
15
- # adds a new task with the given symbol to the Rake/Albacore application
16
- # You can use this like any other albacore method, such as build,
17
- # in order to give it parameters or dependencies, but there is no
18
- # configuration object that you can configure. Copy-n-paste this
19
- # code if you want something of your own.
20
- #
21
- def self.new(*sym)
22
- version = gitflow_version(XSemVer::SemVer.find)
23
- version_data = define_versions(version)
24
-
25
- Albacore.subscribe :build_version do |data|
26
- ENV['BUILD_VERSION'] = data.build_version
27
- ENV['NUGET_VERSION'] = data.nuget_version
28
- ENV['FORMAL_VERSION'] = data.formal_version
29
- ENV['LONG_VERSION'] = data.long_version
30
- end
31
-
32
- Albacore.define_task(*sym) do
33
- Albacore.publish :build_version, OpenStruct.new(version_data)
34
- end
35
-
36
- Albacore.define_task :version do
37
- puts version_data.inspect
38
- end
39
- end
40
-
41
- def self.define_versions(semver)
42
- build = build_number
43
-
44
- {
45
- # just a monotonic inc
46
- :semver => semver,
47
- :build_number => build,
48
- :current_branch => current_branch,
49
-
50
- # purely M.m.p format
51
- :formal_version => "#{semver.format('%M.%m.%p')}",
52
-
53
- # four-numbers version, useful if you're dealing with COM/Windows
54
- :long_version => "#{semver.format('%M.%m.%p')}.#{build}",
55
-
56
- # extensible number w/ git hash
57
- :build_version => "#{semver.format('%M.%m.%p%s')}.#{last_commit[0]}",
58
-
59
- # nuget (not full semver 2.0.0-rc.1 support) see http://nuget.codeplex.com/workitem/1796
60
- :nuget_version => semver.format('%M.%m.%p%s')
61
- }
62
- end
63
-
64
- # load the commit data
65
- # returns: [short-commit :: String]
66
- #
67
- def self.last_commit
68
- begin
69
- `git rev-parse --short HEAD`.chomp[0,6]
70
- rescue
71
- (ENV['BUILD_VCS_NUMBER'] || '000000')[0,6]
72
- end
73
- end
74
-
75
- # Determine the current branch
76
- # returns: branch name
77
- #
78
- def self.current_branch
79
- begin
80
- `git rev-parse --abbrev-ref HEAD`.chomp
81
- rescue
82
- 'master'
83
- end
84
- end
85
-
86
- def self.gitflow_version(version)
87
- return unless ENV.include?('BUILD_NUMBER')
88
- version.special = gitflow_special
89
- version
90
- end
91
-
92
- def self.build_number
93
- ENV['BUILD_NUMBER'] || '0'
94
- end
95
-
96
- def self.gitflow_special
97
- prefix = special_prefix
98
- return version.special if prefix == 'master'
99
-
100
- "#{prefix}#{build_number}"
101
- end
102
-
103
- def self.special_prefix
104
- # TODO: There is a better way to do this.
105
- branch_name = current_branch
106
- return 'release' if branch_name.start_with? 'release/'
107
- return 'hotfix' if branch_name.start_with? 'hotfix/'
108
- return 'feature' if branch_name.start_with? 'feature/'
109
- branch_name
110
- end
111
- end
112
- end
1
+ require 'xsemver'
2
+ require 'albacore/logging'
3
+
4
+ module Physique
5
+ module Tasks
6
+ # Versionizer does versioning ITS OWN WAY!
7
+ #
8
+ # Defines ENV vars:
9
+ # * BUILD_VERSION
10
+ # * NUGET_VERSION
11
+ # * FORMAL_VERSION
12
+ #
13
+ # Publishes symbol :build_version
14
+ module Versionizer
15
+ # adds a new task with the given symbol to the Rake/Albacore application
16
+ # You can use this like any other albacore method, such as build,
17
+ # in order to give it parameters or dependencies, but there is no
18
+ # configuration object that you can configure. Copy-n-paste this
19
+ # code if you want something of your own.
20
+ #
21
+ def self.new(*sym)
22
+ version = gitflow_version(XSemVer::SemVer.find)
23
+ version_data = define_versions(version)
24
+
25
+ Albacore.subscribe :build_version do |data|
26
+ ENV['BUILD_VERSION'] = data.build_version
27
+ ENV['NUGET_VERSION'] = data.nuget_version
28
+ ENV['FORMAL_VERSION'] = data.formal_version
29
+ ENV['LONG_VERSION'] = data.long_version
30
+ end
31
+
32
+ Albacore.define_task(*sym) do
33
+ Albacore.publish :build_version, OpenStruct.new(version_data)
34
+ end
35
+
36
+ Albacore.define_task :version do
37
+ puts version_data.inspect
38
+ end
39
+ end
40
+
41
+ def self.define_versions(semver)
42
+ build = build_number
43
+
44
+ {
45
+ # just a monotonic inc
46
+ :semver => semver,
47
+ :build_number => build,
48
+ :current_branch => current_branch,
49
+
50
+ # purely M.m.p format
51
+ :formal_version => "#{semver.format('%M.%m.%p')}",
52
+
53
+ # four-numbers version, useful if you're dealing with COM/Windows
54
+ :long_version => "#{semver.format('%M.%m.%p')}.#{build}",
55
+
56
+ # extensible number w/ git hash
57
+ :build_version => "#{semver.format('%M.%m.%p%s')}.#{last_commit[0]}",
58
+
59
+ # nuget (not full semver 2.0.0-rc.1 support) see http://nuget.codeplex.com/workitem/1796
60
+ :nuget_version => semver.format('%M.%m.%p%s')
61
+ }
62
+ end
63
+
64
+ # load the commit data
65
+ # returns: [short-commit :: String]
66
+ #
67
+ def self.last_commit
68
+ begin
69
+ `git rev-parse --short HEAD`.chomp[0,6]
70
+ rescue
71
+ (ENV['BUILD_VCS_NUMBER'] || '000000')[0,6]
72
+ end
73
+ end
74
+
75
+ # Determine the current branch
76
+ # returns: branch name
77
+ #
78
+ def self.current_branch
79
+ begin
80
+ `git rev-parse --abbrev-ref HEAD`.chomp
81
+ rescue
82
+ 'master'
83
+ end
84
+ end
85
+
86
+ def self.gitflow_version(version)
87
+ return unless ENV.include?('BUILD_NUMBER')
88
+ version.special = gitflow_special
89
+ version
90
+ end
91
+
92
+ def self.build_number
93
+ ENV['BUILD_NUMBER'] || '0'
94
+ end
95
+
96
+ def self.gitflow_special
97
+ prefix = special_prefix
98
+ return version.special if prefix == 'master'
99
+
100
+ "#{prefix}#{build_number}"
101
+ end
102
+
103
+ def self.special_prefix
104
+ # TODO: There is a better way to do this.
105
+ branch_name = current_branch
106
+ return 'release' if branch_name.start_with? 'release/'
107
+ return 'hotfix' if branch_name.start_with? 'hotfix/'
108
+ return 'feature' if branch_name.start_with? 'feature/'
109
+ branch_name
110
+ end
111
+ end
112
+ end
113
113
  end