lib/physique/tasks/fluent_migrator.rb in physique-0.3.10 vs lib/physique/tasks/fluent_migrator.rb in physique-0.4.0
- old
+ new
@@ -1,159 +1,159 @@
-require 'active_support/core_ext/string'
-require 'map'
-
-module Physique
- module FluentMigrator
- class Cmd
- include Albacore::CrossPlatformCmd
-
- attr_reader :parameters
-
- def initialize(opts)
- @work_dir = opts[:work_dir]
- @executable = opts[:exe]
- set_parameters opts
- end
-
- def execute
- sh "#{@executable} #{@parameters.join(' ')}"
- end
-
- private
-
- def set_parameters(opts)
- @parameters = @parameters || []
- @parameters << "--target #{opts.dll}"
- @parameters << "--provider #{opts.dialect}"
- @parameters << %Q{--connectionString "#{opts.connection_string}"}
- @parameters << "--task #{opts.task}"
- @parameters << "--namespace #{opts.namespace}" unless opts.namespace.blank?
- @parameters << "--nested #{opts.nested}" unless opts.namespace.blank? # Modifies the namespace option
- @parameters << "--output --outputFileName #{opts.output_file}" unless opts.output_file.blank?
- @parameters << '--preview true' if opts.preview
- @parameters << "--steps #{opts.steps}" if opts.task =~ /rollback/
- @parameters << "--version #{opts.version}" if opts.task =~ /^migrate($|:up)|^rollback:toversion$/
- @parameters << '--transaction-per-session' if opts.tps
- end
- end
-
- class Config
- include Albacore::CmdConfig
- include Physique::ToolLocator
- self.extend Albacore::ConfigDSL
-
- # SQL Server instance
- attr_path :instance
-
- # SQL Server database
- attr_writer :database
-
- # SQL dialect
- attr_writer :dialect
-
- # Dll containing the migrations
- attr_path :dll
-
- # Namespace of migration to run
- def namespace=(val)
- @namespace = val
- @nested = true
- end
-
- def shallow
- @nested = false
- end
-
- def deep
- @nested = true
- end
-
- # Migration task
- attr_writer :task
-
- # Version number to migrate to
- attr_writer :version
-
- # Number of steps to rollback
- attr_writer :steps
-
- # Verbosity
- attr_writer :verbose
-
- # Timeout
- attr_writer :timeout
-
- # Output file
- attr_path :output_file
-
- def output_to_file
- # Set a default output file
- @output_file = "#{@database}-output.sql"
- end
-
- def transaction_per_session
- @tps = true
- end
-
- def preview
- @preview = true
- end
-
- # Path Migrator executable
- attr_path :exe
-
- # Bin folder to look find the Migrate tool if :exe is not set
- attr_path :bin_dir
-
- def opts
- raise ArgumentError, 'You must specify a server name' if @instance.blank?
- raise ArgumentError, 'You must specify a database name' if @database.blank?
- raise ArgumentError, 'You must specify the path to the migrator executable' if @exe.blank?
- raise ArgumentError, 'You must specify a migration dll' if @dll.blank?
- raise ArgumentError, 'You must specify a valid task' unless valid_tasks.include? @task
-
- Map.new({
- connection_string: connection_string,
- dialect: @dialect,
- dll: @dll,
- namespace: @namespace,
- nested: @nested,
- task: @task,
- version: @version,
- steps: @steps,
- verbose: @verbose,
- output_file: @output_file,
- exe: @exe,
- tps: @tps,
- preview: @preview,
- timeout: @timeout,
- }).apply(
- dialect: 'SqlServer2008',
- verbose: true,
- version: 0,
- steps: 1,
- timeout: 30 # seconds
- )
- end
-
- private
-
- def connection_string
- "Data Source=#{@instance};Initial Catalog=#{@database};Integrated Security=True;"
- end
-
- def valid_tasks
- %w{migrate:up migrate migrate:down rollback rollback:toversion rollback:all validateversionorder listmigrations}
- end
- end
-
- class Task
- def initialize(opts)
- @cmd = Physique::FluentMigrator::Cmd.new opts
- end
-
- def execute
- @cmd.execute
- end
- end
- end
+require 'active_support/core_ext/string'
+require 'map'
+
+module Physique
+ module FluentMigrator
+ class Cmd
+ include Albacore::CrossPlatformCmd
+
+ attr_reader :parameters
+
+ def initialize(opts)
+ @work_dir = opts[:work_dir]
+ @executable = opts[:exe]
+ set_parameters opts
+ end
+
+ def execute
+ sh "#{@executable} #{@parameters.join(' ')}"
+ end
+
+ private
+
+ def set_parameters(opts)
+ @parameters = @parameters || []
+ @parameters << "--target #{opts.dll}"
+ @parameters << "--provider #{opts.dialect}"
+ @parameters << %Q{--connectionString "#{opts.connection_string}"}
+ @parameters << "--task #{opts.task}"
+ @parameters << "--namespace #{opts.namespace}" unless opts.namespace.blank?
+ @parameters << "--nested #{opts.nested}" unless opts.namespace.blank? # Modifies the namespace option
+ @parameters << "--output --outputFileName #{opts.output_file}" unless opts.output_file.blank?
+ @parameters << '--preview true' if opts.preview
+ @parameters << "--steps #{opts.steps}" if opts.task =~ /rollback/
+ @parameters << "--version #{opts.version}" if opts.task =~ /^migrate($|:up)|^rollback:toversion$/
+ @parameters << '--transaction-per-session' if opts.tps
+ end
+ end
+
+ class Config
+ include Albacore::CmdConfig
+ include Physique::ToolLocator
+ self.extend Albacore::ConfigDSL
+
+ # SQL Server instance
+ attr_path :instance
+
+ # SQL Server database
+ attr_writer :database
+
+ # SQL dialect
+ attr_writer :dialect
+
+ # Dll containing the migrations
+ attr_path :dll
+
+ # Namespace of migration to run
+ def namespace=(val)
+ @namespace = val
+ @nested = true
+ end
+
+ def shallow
+ @nested = false
+ end
+
+ def deep
+ @nested = true
+ end
+
+ # Migration task
+ attr_writer :task
+
+ # Version number to migrate to
+ attr_writer :version
+
+ # Number of steps to rollback
+ attr_writer :steps
+
+ # Verbosity
+ attr_writer :verbose
+
+ # Timeout
+ attr_writer :timeout
+
+ # Output file
+ attr_path :output_file
+
+ def output_to_file
+ # Set a default output file
+ @output_file = "#{@database}-output.sql"
+ end
+
+ def transaction_per_session
+ @tps = true
+ end
+
+ def preview
+ @preview = true
+ end
+
+ # Path Migrator executable
+ attr_path :exe
+
+ # Bin folder to look find the Migrate tool if :exe is not set
+ attr_path :bin_dir
+
+ def opts
+ raise ArgumentError, 'You must specify a server name' if @instance.blank?
+ raise ArgumentError, 'You must specify a database name' if @database.blank?
+ raise ArgumentError, 'You must specify the path to the migrator executable' if @exe.blank?
+ raise ArgumentError, 'You must specify a migration dll' if @dll.blank?
+ raise ArgumentError, 'You must specify a valid task' unless valid_tasks.include? @task
+
+ Map.new({
+ connection_string: connection_string,
+ dialect: @dialect,
+ dll: @dll,
+ namespace: @namespace,
+ nested: @nested,
+ task: @task,
+ version: @version,
+ steps: @steps,
+ verbose: @verbose,
+ output_file: @output_file,
+ exe: @exe,
+ tps: @tps,
+ preview: @preview,
+ timeout: @timeout,
+ }).apply(
+ dialect: 'SqlServer2008',
+ verbose: true,
+ version: 0,
+ steps: 1,
+ timeout: 30 # seconds
+ )
+ end
+
+ private
+
+ def connection_string
+ "Data Source=#{@instance};Initial Catalog=#{@database};Integrated Security=True;"
+ end
+
+ def valid_tasks
+ %w{migrate:up migrate migrate:down rollback rollback:toversion rollback:all validateversionorder listmigrations}
+ end
+ end
+
+ class Task
+ def initialize(opts)
+ @cmd = Physique::FluentMigrator::Cmd.new opts
+ end
+
+ def execute
+ @cmd.execute
+ end
+ end
+ end
end
\ No newline at end of file