wagn 1.19.6 → 1.20.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: a0439bece2df7839a8c57cd1195f2278cebb66b4
4
- data.tar.gz: ab89c2608a18e1b84cee054bf7c1065909b84f17
3
+ metadata.gz: fd1e828fb6c8ee33f6cc48e17c3b5a102eb90483
4
+ data.tar.gz: 376b28cbee4e38ca2abe10591c0150e44145f156
5
5
  SHA512:
6
- metadata.gz: 9a04bc19834623b232d09747675ec851efe6a3ccab8437062d1ca7ac477d075ca314ee18a0506806866a407729f90675da210072582293c251a1c52ff9d7f078
7
- data.tar.gz: 81ff5f368c83d29d70025812dc728a2773040ff94187d4a7173b749c7b62245e39f1e2ba54b9af075347c4878610dff8c0d7b8e5e9d395daf3090adee5ba84bb
6
+ metadata.gz: df71a97b7d1ba6320557ca14a5e7d0d94bec48c62e8e064fb9c62b4507c10eea52308bbc5965fac9b11d7ca9f8d3afcb736ae642b41d15cf7c20378907ae8e31
7
+ data.tar.gz: 61c053e4f2f1854ad40d9303bce379910e0afef3744aabeffa1551314ab2aad23a601b995fc583f99f4c613b812cacdfcb9c54d53f38a41d6ce014d3219739eb
@@ -1,7 +1,8 @@
1
1
  @javascript
2
2
  Feature: History
3
3
  As an editor
4
- I want to be able to browse through the history and save an old version as current.
4
+ I want to be able to browse through the history and save an old version as
5
+ current.
5
6
 
6
7
  Background:
7
8
  Given I am signed in as Joe Admin
@@ -9,14 +10,16 @@ Feature: History
9
10
 
10
11
  Scenario: view history and rollback
11
12
  When I go to url "/First?view=history"
12
- Then In the main card content I should see a del with content "egg"
13
+ # Then In the main card content I should see a del with content "egg"
13
14
 
14
15
  When I expand act 2
15
- And In the main card content I click "Hide changes"
16
- Then In the main card content I should not see a del with content "egg"
16
+ # And In the main card content I click "Hide changes"
17
+ # Then In the main card content I should not see a del with content "egg"
18
+ When In the main card body I click "Save as current"
19
+ And I wait until ajax response
17
20
 
18
- When In the main card content I click "Save as current"
19
- Then the card First should contain "chicken"
20
- Then I wait a sec
21
+ Then In the main card content I should see "chicken"
22
+
23
+ #Then the card First should contain "chicken"
21
24
 
22
25
 
@@ -6,7 +6,7 @@ Feature: paging
6
6
 
7
7
  Background:
8
8
  Given I am signed in as Joe Admin
9
- And I create Search card "basic card search" with content "{\"type\":\"basic\", \"limit\":2}"
9
+ And I create Search card "basic card search" with content "{\"type\":\"basic\"}"
10
10
 
11
11
  Scenario: jump to pages should keep the item structure
12
12
  When I create HTML card "basic item structure" with content "{{_|name}}"
@@ -1,5 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  # rubocop:disable Lint/AmbiguousRegexpLiteral
3
3
  When /^I expand act (\d+)$/ do |index|
4
- all("a.arrow-right")[-index.to_i].click
4
+ all('.panel-heading[data-toggle="collapse"]')[-index.to_i].click
5
5
  end
@@ -357,7 +357,7 @@ Then /^"([^"]*)" should be selected for "([^"]*)"$/ do |value, field|
357
357
  end
358
358
 
359
359
  Then /^"([^"]*)" should be signed in$/ do |user| # "
360
- has_css?("#my-card-link", text: user)
360
+ has_css?(".my-card-link", text: user)
361
361
  end
362
362
 
363
363
  When /^I press enter to search$/ do
@@ -3,12 +3,14 @@
3
3
  # IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
4
4
  # It is recommended to regenerate this file in the future when you upgrade to a
5
5
  # newer version of cucumber-rails. Consider adding your own code to a new file
6
- # instead of editing this one. Cucumber will automatically load all features/**/*.rb
7
- # files.
6
+ # instead of editing this one. Cucumber will automatically load all
7
+ # features/**/*.rb files.
8
8
 
9
9
  require "uri"
10
10
  require "cgi"
11
- require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
11
+ require File.expand_path(
12
+ File.join(File.dirname(__FILE__), "..", "support", "paths")
13
+ )
12
14
 
13
15
  # Commonly used webrat steps
14
16
  # http://github.com/brynary/webrat
@@ -29,6 +31,10 @@ When /^(?:|I )follow "([^"]*)"$/ do |link|
29
31
  click_link(link)
30
32
  end
31
33
 
34
+ When /^(?:|I )click on "([^"]*)"$/ do |link|
35
+ click_link_or_button(link)
36
+ end
37
+
32
38
  When /^(?:|I )follow "([^"]*)" within "([^"]*)"$/ do |link, parent|
33
39
  click_link_within(parent, link)
34
40
  end
@@ -45,6 +51,11 @@ When /^(?:|I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
45
51
  select(value, from: field)
46
52
  end
47
53
 
54
+ When /^(?:|I )single-select "([^"]*)" from "([^"]*)"$/ do |value, field|
55
+ find("label", text: field).parent.find("a.chosen-single").click
56
+ find("li", text: value).click
57
+ end
58
+
48
59
  # Use this step in conjunction with Rail's datetime_select helper. For example:
49
60
  # When I select "December 25, 2008 10:00" as the date and time
50
61
  When /^(?:|I )select "([^"]*)" as the date and time$/ do |time|
@@ -66,8 +77,8 @@ end
66
77
 
67
78
  # Use this step in conjunction with Rail's time_select helper. For example:
68
79
  # When I select "2:20PM" as the time
69
- # Note: Rail's default time helper provides 24-hour time-- not 12 hour time. Webrat
70
- # will convert the 2:20PM to 14:20 and then select it.
80
+ # Note: Rail's default time helper provides 24-hour time-- not 12 hour time.
81
+ # Webrat will convert the 2:20PM to 14:20 and then select it.
71
82
  When /^(?:|I )select "([^"]*)" as the time$/ do |time|
72
83
  select_time(time)
73
84
  end
@@ -104,8 +115,9 @@ When /^(?:|I )choose "([^"]*)"$/ do |field|
104
115
  choose(field)
105
116
  end
106
117
 
107
- # Adds support for validates_attachment_content_type. Without the mime-type getting
108
- # passed to attach_file() you will get a "Photo file is not one of the allowed file types."
118
+ # Adds support for validates_attachment_content_type.
119
+ # Without the mime-type getting passed to attach_file() you will get a
120
+ # "Photo file is not one of the allowed file types."
109
121
  # error message
110
122
  When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
111
123
  type = path.split(".")[1]
@@ -133,4 +145,5 @@ Then /^(?:|I )should not see "([^"]*)"$/ do |text|
133
145
  end
134
146
 
135
147
  Then /^show me the page$/ do
148
+ save_and_open_page
136
149
  end
@@ -25,7 +25,9 @@ module NavigationHelpers
25
25
  "/#{Regexp.last_match(1).to_name.url_key}"
26
26
 
27
27
  when /new (.*) presetting name to "(.*)" and author to "(.*)"/
28
- url = "/new/#{Regexp.last_match(1)}?card[name]=#{Regexp.last_match(2).to_name.url_key}&_author=#{CGI.escape(Regexp.last_match(3))}"
28
+ "/new/#{Regexp.last_match(1)}" \
29
+ "?card[name]=#{Regexp.last_match(2).to_name.url_key}" \
30
+ "&_author=#{CGI.escape(Regexp.last_match(3))}"
29
31
 
30
32
  when /new card named (.*)$/
31
33
  "/card/new?card[name]=#{CGI.escape(Regexp.last_match(1))}"
@@ -21,6 +21,9 @@ module ScopeHelpers
21
21
  when /main card frame/
22
22
  "#main > .card-slot > .card-frame"
23
23
 
24
+ when /main card body/
25
+ "#main > .card-slot > .card-frame > .card-body"
26
+
24
27
  else
25
28
  raise "Can't find mapping from \"#{section}\" to a scope.\n" \
26
29
  "Now, go and add a mapping in #{__FILE__}"
@@ -1,8 +1,5 @@
1
- require "optparse"
2
-
3
1
  # add method in? to Object class
4
2
  require "active_support/core_ext/object/inclusion"
5
- require "wagn/parser"
6
3
 
7
4
  def load_rake_tasks
8
5
  require "./config/environment"
@@ -12,6 +9,9 @@ end
12
9
 
13
10
  RAILS_COMMANDS = %w( generate destroy plugin benchmarker profiler console
14
11
  server dbconsole application runner ).freeze
12
+ WAGN_COMMANDS = %w(new cucumber rspec jasmine).freeze
13
+ WAGN_DB_COMMANDS = %w(seed reseed load update).freeze
14
+
15
15
  ALIAS = {
16
16
  "rs" => "rspec",
17
17
  "cc" => "cucumber",
@@ -24,103 +24,66 @@ ALIAS = {
24
24
  "r" => "runner"
25
25
  }.freeze
26
26
 
27
- ARGV << "--help" if ARGV.empty?
28
-
29
27
  def supported_rails_command? arg
30
28
  arg.in?(RAILS_COMMANDS) || ALIAS[arg].in?(RAILS_COMMANDS)
31
29
  end
32
30
 
33
- def find_spec_file filename, base_dir
34
- file, line = filename.split(":")
35
- if file.include?("_spec.rb") && File.exist?(file)
36
- filename
37
- else
38
- file = File.basename(file, ".rb").sub(/_spec$/, "")
39
- Dir.glob("#{base_dir}/**/#{file}_spec.rb").flatten.map do |spec_file|
40
- line ? "#{spec_file}:#{line}" : file
41
- end.join(" ")
42
- end
43
- end
31
+ ARGV << "--help" if ARGV.empty?
44
32
 
45
- def exit_with_child_status command
46
- command += " 2>&1"
47
- exit $CHILD_STATUS.exitstatus unless system command
48
- end
33
+ module Wagn
34
+ module Commands
35
+ class << self
36
+ def run_new
37
+ if ARGV.first.in?(["-h", "--help"])
38
+ require "wagn/commands/application"
39
+ else
40
+ puts "Can't initialize a new deck within the directory of another, " \
41
+ "please change to a non-deck directory first.\n"
42
+ puts "Type 'wagn' for help."
43
+ exit(1)
44
+ end
45
+ end
49
46
 
50
- WAGN_DB_TASKS = %w(seed reseed load update).freeze
47
+ def run_rspec
48
+ require "wagn/commands/rspec_command"
49
+ RspecCommand.new(ARGV).run
50
+ end
51
51
 
52
- if supported_rails_command? ARGV.first
52
+ def run_cucumber
53
+ require "wagn/commands/cucumber_command"
54
+ CucumberCommand.new(ARGV).run
55
+ end
56
+
57
+ def run_db_task command
58
+ require "wagn/commands/rake_command"
59
+ RakeCommand.new("wagn:#{command}", ARGV).run
60
+ end
61
+
62
+ def run_jasmine
63
+ require "wagn/commands/rake_command"
64
+ RakeCommand.new("spec:javascript", envs: "test").run
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ command = ARGV.first
71
+ command = ALIAS[command] || command
72
+ if supported_rails_command? command
53
73
  ENV["PRY_RESCUE_RAILS"] = "1" if ARGV.delete("--rescue")
54
- command = ARGV.first
55
- command = ALIAS[command] || command
56
74
 
57
75
  # without this, the card generators don't list with: wagn g --help
58
76
  require "generators/card" if command == "generate"
59
77
  require "rails/commands"
60
78
  else
61
- command = ARGV.shift
62
- command = ALIAS[command] || command
63
-
79
+ ARGV.shift
64
80
  case command
65
- when "cucumber"
66
- require "wagn"
67
- require "./config/environment"
68
- feature_paths = Card::Mod::Loader.mod_dirs.map do |p|
69
- Dir.glob "#{p}/features"
70
- end.flatten
71
- require_args = "-r #{Wagn.gem_root}/features "
72
- require_args += feature_paths.map { |path| "-r #{path}" }.join(" ")
73
- feature_args = ARGV.empty? ? feature_paths.join(" ") : ARGV.shelljoin
74
- exit_with_child_status "RAILS_ROOT=. bundle exec cucumber " \
75
- "#{require_args} #{feature_args}"
76
- when "jasmine"
77
- exit_with_child_status "RAILS_ENV=test bundle exec rake spec:javascript"
78
- when "rspec"
79
- require "rspec/core"
80
- require "wagn/application"
81
-
82
- before_split = true
83
- wagn_args, rspec_args =
84
- ARGV.partition do |a|
85
- before_split = (a == "--" ? false : before_split)
86
- end
87
- rspec_args.shift
88
- opts = {}
89
- Wagn::Parser.rspec(opts).parse!(wagn_args)
90
- # no coverage if rspec was started with file argument
91
- if (opts[:files] || rspec_args.present?) && !opts[:simplecov]
92
- opts[:simplecov] = "COVERAGE=false"
93
- end
94
- rspec_command =
95
- "RAILS_ROOT=. #{opts[:simplecov]} #{opts[:executer]} " \
96
- " #{opts[:rescue]} rspec #{rspec_args.shelljoin} #{opts[:files]} "\
97
- " --exclude-pattern \"./card/vendor/**/*\""
98
- exit_with_child_status rspec_command
99
81
  when "--version", "-v"
100
82
  puts "Wagn #{Card::Version.release}"
101
- when "new"
102
- if ARGV.first.in?(["-h", "--help"])
103
- require "wagn/commands/application"
104
- else
105
- puts "Can't initialize a new deck within the directory of another, " \
106
- "please change to a non-deck directory first.\n"
107
- puts "Type 'wagn' for help."
108
- exit(1)
109
- end
110
- when *WAGN_DB_TASKS
111
- opts = {}
112
- Wagn::Parser.db_task(command, opts).parse!(ARGV)
113
- task_cmd = "bundle exec rake wagn:#{command}"
114
- if !opts[:envs] || opts[:envs].empty?
115
- puts task_cmd
116
- puts `#{task_cmd}`
117
- else
118
- opts[:envs].each do |env|
119
- puts "env RAILS_ENV=#{env} #{task_cmd}"
120
- puts `env RAILS_ENV=#{env} #{task_cmd}`
121
- end
122
- end
123
-
83
+ when *WAGN_COMMANDS
84
+ Wagn::Commands.send("run_#{command}")
85
+ when *WAGN_DB_COMMANDS
86
+ Wagn::Commands.run_db_task command
124
87
  else
125
88
  puts "Error: Command not recognized" unless command.in?(["-h", "--help"])
126
89
  puts <<-EOT
@@ -0,0 +1,15 @@
1
+ module Wagn
2
+ module Commands
3
+ class Command
4
+ def run
5
+ puts command
6
+ exit_with_child_status command
7
+ end
8
+
9
+ def exit_with_child_status command
10
+ command += " 2>&1"
11
+ exit $CHILD_STATUS.exitstatus unless system command
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,41 @@
1
+ require File.expand_path("../command", __FILE__)
2
+
3
+ module Wagn
4
+ module Commands
5
+ class CucumberCommand < Command
6
+ def initialize args
7
+ require "wagn"
8
+ require "./config/environment"
9
+ @args = args
10
+ end
11
+
12
+ def command
13
+ @cmd ||=
14
+ "#{env_args} bundle exec cucumber #{require_args} #{feature_args}"
15
+ end
16
+
17
+ private
18
+
19
+ def env_args
20
+ env_args = "RAILS_ROOT=."
21
+ env_args << " COVERAGE=false" if @args.present?
22
+ env_args
23
+ end
24
+
25
+ def feature_args
26
+ @args.empty? ? feature_paths.join(" ") : @args.shelljoin
27
+ end
28
+
29
+ def require_args
30
+ "-r #{Wagn.gem_root}/features " +
31
+ feature_paths.map { |path| "-r #{path}" }.join(" ")
32
+ end
33
+
34
+ def feature_paths
35
+ Card::Mod::Loader.mod_dirs.map do |p|
36
+ Dir.glob "#{p}/features"
37
+ end.flatten
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,35 @@
1
+ require File.expand_path("../command", __FILE__)
2
+
3
+ module Wagn
4
+ module Commands
5
+ class RakeCommand < Command
6
+ def initialize rake_task, args={}
7
+ @task = rake_task
8
+ opts = {}
9
+ if args.is_a? Array
10
+ Parser.new(rake_task, opts).parse!(args)
11
+ else
12
+ opts = args
13
+ end
14
+ @envs = Array(opts[:envs])
15
+ end
16
+
17
+ def run
18
+ command.each do |cmd|
19
+ puts cmd
20
+ puts `#{cmd}`
21
+ end
22
+ end
23
+
24
+ def command
25
+ task_cmd = "bundle exec rake #{@task}"
26
+ return [task_cmd] if !@envs || @envs.empty?
27
+ @envs.map do |env|
28
+ "env RAILS_ENV=#{env} #{task_cmd}"
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ require File.expand_path("../rake_command/parser", __FILE__)
@@ -0,0 +1,34 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require "optparse"
3
+
4
+ module Wagn
5
+ module Commands
6
+ class RakeCommand
7
+ class Parser < OptionParser
8
+ def initialize command, opts
9
+ super() do |parser|
10
+ parser.banner = "Usage: wagn #{command} [options]\n\n" \
11
+ "Run wagn:#{command} task on the production "\
12
+ " database specified in config/database.yml\n\n"
13
+ parser.on("--production", "-p",
14
+ "#{command} production database (default)") do
15
+ opts[:envs] = ["production"]
16
+ end
17
+ parser.on("--test", "-t",
18
+ "#{command} test database") do
19
+ opts[:envs] = ["test"]
20
+ end
21
+ parser.on("--development", "-d",
22
+ "#{command} development database") do
23
+ opts[:envs] = ["development"]
24
+ end
25
+ parser.on("--all", "-a",
26
+ "#{command} production, test, and development database") do
27
+ opts[:envs] = %w(production development test)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,50 @@
1
+ require File.expand_path("../command", __FILE__)
2
+
3
+ module Wagn
4
+ module Commands
5
+ class RspecCommand < Command
6
+ def initialize args
7
+ require "rspec/core"
8
+ require "wagn/application"
9
+
10
+ @wagn_args, @rspec_args = split_wagn_and_rspec_args args
11
+ @opts = {}
12
+ Parser.new(@opts).parse!(@wagn_args)
13
+ end
14
+
15
+ def command
16
+ "#{env_args} #{@opts[:executer]} " \
17
+ " #{@opts[:rescue]} rspec #{@rspec_args.shelljoin} #{@opts[:files]} "\
18
+ " --exclude-pattern \"./card/vendor/**/*\""
19
+ end
20
+
21
+ private
22
+
23
+ def env_args
24
+ ["RAILS_ROOT=.", coverage].compact.join " "
25
+ end
26
+
27
+ def coverage
28
+ # no coverage if rspec was started with file argument
29
+ if (@opts[:files] || @rspec_args.present?) && !@opts[:simplecov]
30
+ @opts[:simplecov] = "COVERAGE=false"
31
+ end
32
+ @opts[:simplecov]
33
+ end
34
+
35
+ def split_wagn_and_rspec_args args
36
+ before_split = true
37
+ wagn, rspec =
38
+ args.partition do |a|
39
+ before_split = (a == "--" ? false : before_split)
40
+ end
41
+ rspec.shift
42
+ [wagn, rspec]
43
+ end
44
+
45
+
46
+ end
47
+ end
48
+ end
49
+
50
+ require File.expand_path("../rspec_command/parser", __FILE__)
@@ -0,0 +1,84 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require "optparse"
3
+
4
+ module Wagn
5
+ module Commands
6
+ class RspecCommand
7
+ class Parser < OptionParser
8
+ def initialize opts
9
+ super() do |parser|
10
+ parser.banner = "Usage: wagn rspec [WAGN ARGS] -- [RSPEC ARGS]\n\n" \
11
+ "RSPEC ARGS"
12
+ parser.separator <<-EOT
13
+
14
+ WAGN ARGS
15
+
16
+ You don't have to give a full path for FILENAME, the basename is enough
17
+ If FILENAME does not include '_spec' rspec searches for the
18
+ corresponding spec file.
19
+ The line number always referes to example in the (corresponding) spec
20
+ file.
21
+
22
+ EOT
23
+
24
+ parser.on("-d", "--spec FILENAME(:LINE)",
25
+ "Run spec for a Wagn deck file") do |file|
26
+ opts[:files] = find_spec_file(file, "#{Wagn.root}/mod")
27
+ end
28
+ parser.on("-c", "--core-spec FILENAME(:LINE)",
29
+ "Run spec for a Wagn core file") do |file|
30
+ opts[:files] = find_spec_file(file, Cardio.gem_root)
31
+ end
32
+ parser.on("-m", "--mod MODNAME",
33
+ "Run all specs for a mod or matching a mod") do |file|
34
+ opts[:files] =
35
+ if File.exist?("mod/#{file}")
36
+ "#{Cardio.gem_root}/mod/#{file}"
37
+ elsif File.exist?("#{Cardio.gem_root}/mod/#{file}")
38
+ "#{Cardio.gem_root}/mod/#{file}"
39
+ elsif (files = find_spec_file(file, "mod")) && files.present?
40
+ files
41
+ else
42
+ find_spec_file(file, "#{Cardio.gem_root}/mod")
43
+ end
44
+ end
45
+ parser.on("-s", "--[no-]simplecov", "Run with simplecov") do |s|
46
+ opts[:simplecov] = s ? "" : "COVERAGE=false"
47
+ end
48
+ parser.on("--rescue", "Run with pry-rescue") do
49
+ if opts[:executer] == "spring"
50
+ puts "Disabled pry-rescue. Not compatible with spring."
51
+ else
52
+ opts[:rescue] = "rescue "
53
+ end
54
+ end
55
+ parser.on("--[no-]spring", "Run with spring") do |spring|
56
+ if spring
57
+ opts[:executer] = "spring"
58
+ if opts[:rescue]
59
+ opts[:rescue] = ""
60
+ puts "Disabled pry-rescue. Not compatible with spring."
61
+ end
62
+ else
63
+ opts[:executer] = "bundle exec"
64
+ end
65
+ end
66
+ parser.separator "\n"
67
+ end
68
+ end
69
+
70
+ def find_spec_file filename, base_dir
71
+ file, line = filename.split(":")
72
+ if file.include?("_spec.rb") && File.exist?(file)
73
+ filename
74
+ else
75
+ file = File.basename(file, ".rb").sub(/_spec$/, "")
76
+ Dir.glob("#{base_dir}/**/#{file}_spec.rb").flatten.map do |spec_file|
77
+ line ? "#{spec_file}:#{line}" : file
78
+ end.join(" ")
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -27,6 +27,8 @@ group :test do
27
27
  gem 'rspec', '~> 3.4'
28
28
  gem 'rspec-rails' # behavior-driven-development suite
29
29
  gem 'spork', '>=0.9'
30
+ gem 'rubocop'
31
+ gem 'rubocop-decko'
30
32
  end
31
33
 
32
34
  group :test, :development do
@@ -111,7 +113,7 @@ end
111
113
  gem 'ruby-prof', :group=>:profile # profiling
112
114
 
113
115
  group :debug do
114
- gem 'better_errors', :git=>"https://github.com/xithan/better_errors.git"
116
+ gem 'better_errors'
115
117
  gem 'binding_of_caller'
116
118
  end
117
119
  <% end %>
@@ -6,27 +6,6 @@ WAGN_SEED_PATH = File.join(
6
6
  ENV["DECKO_SEED_REPO_PATH"] || [Cardio.gem_root, "db", "seed"], "new"
7
7
  )
8
8
 
9
- def run_card_migration core_or_deck
10
- prepare_migration
11
- verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
12
- Cardio.schema_mode(core_or_deck) do |paths|
13
- ActiveRecord::Migrator.migrations_paths = paths
14
- ActiveRecord::Migration.verbose = verbose
15
- ActiveRecord::Migrator.migrate paths, version
16
- end
17
- end
18
-
19
- def prepare_migration
20
- Card::Cache.reset_all
21
- ENV["SCHEMA"] ||= "#{Cardio.gem_root}/db/schema.rb"
22
- Card::Cache.reset_all
23
- Card.config.action_mailer.perform_deliveries = false
24
- Card.reset_column_information
25
- # this is needed in production mode to insure core db
26
- Card::Reference.reset_column_information
27
- # structures are loaded before schema_mode is set
28
- end
29
-
30
9
  namespace :wagn do
31
10
  desc "create a wagn database from scratch, load initial data"
32
11
  task :seed do
@@ -155,61 +134,6 @@ namespace :wagn do
155
134
  Cardio.assume_migrated_upto_version :core_cards
156
135
  end
157
136
 
158
- namespace :migrate do
159
- desc "migrate cards"
160
- task cards: [:core_cards, :deck_cards]
161
-
162
- desc "migrate structure"
163
- task structure: :environment do
164
- ENV["SCHEMA"] ||= "#{Cardio.gem_root}/db/schema.rb"
165
- Cardio.schema_mode(:structure) do |paths|
166
- ActiveRecord::Migrator.migrations_paths = paths
167
- ActiveRecord::Migrator.migrate paths, version
168
- Rake::Task["db:_dump"].invoke # write schema.rb
169
- end
170
- end
171
-
172
- desc "migrate core cards"
173
- task core_cards: :environment do
174
- require "card/migration/core"
175
- run_card_migration :core_cards
176
- end
177
-
178
- desc "migrate deck cards"
179
- task deck_cards: :environment do
180
- require "card/migration"
181
- run_card_migration :deck_cards
182
- end
183
-
184
- desc 'Redo the deck cards migration given by VERSION.'
185
- task redo: :environment do
186
- version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
187
- verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
188
- raise "VERSION is required" unless version
189
- ActiveRecord::Migration.verbose = verbose
190
- ActiveRecord::SchemaMigration.where(:version => version.to_s).delete_all
191
- ActiveRecord::Migrator.run :up, Cardio.migration_paths(:deck_cards),
192
- version
193
- end
194
-
195
- # maybe we should move this to a method?
196
- desc "write the version to a file (not usually called directly)"
197
- task :stamp, :type do |_t, args|
198
- ENV["SCHEMA"] ||= "#{Cardio.gem_root}/db/schema.rb"
199
- Cardio.config.action_mailer.perform_deliveries = false
200
-
201
- stamp_file = Cardio.schema_stamp_path(args[:type])
202
-
203
- Cardio.schema_mode args[:type] do
204
- version = ActiveRecord::Migrator.current_version
205
- if version.to_i > 0 && (file = open(stamp_file, "w"))
206
- puts ">> writing version: #{version} to #{stamp_file}"
207
- file.puts version
208
- end
209
- end
210
- end
211
- end
212
-
213
137
  namespace :emergency do
214
138
  task rescue_watchers: :environment do
215
139
  follower_hash = Hash.new { |h, v| h[v] = [] }
@@ -238,126 +162,6 @@ namespace :wagn do
238
162
  end
239
163
  end
240
164
  end
241
-
242
- namespace :bootstrap do
243
- desc "rid template of unneeded cards, acts, actions, changes, and references"
244
- task clean: :environment do
245
- Card::Cache.reset_all
246
- clear_history
247
- delete_unwanted_cards
248
- Card.empty_trash
249
- correct_time_and_user_stamps
250
- Card::Cache.reset_all
251
- end
252
-
253
- desc "dump db to bootstrap fixtures"
254
- task dump: :environment do
255
- Card::Cache.reset_all
256
-
257
- # FIXME: temporarily taking this out!!
258
- Rake::Task["wagn:bootstrap:copy_mod_files"].invoke
259
- Card[:all, :script].make_machine_output_coded
260
- Card[:all, :style].make_machine_output_coded
261
- Card[:script_html5shiv_printshiv].make_machine_output_coded
262
-
263
- YAML::ENGINE.yamler = "syck" if RUBY_VERSION !~ /^(2|1\.9)/
264
- # use old engine while we're supporting ruby 1.8.7 because it can't
265
- # support Psych, which dumps with slashes that syck can't understand
266
-
267
- WAGN_SEED_TABLES.each do |table|
268
- i = "000"
269
- File.open(File.join(WAGN_SEED_PATH, "#{table}.yml"), "w") do |file|
270
- data = ActiveRecord::Base.connection.select_all(
271
- "select * from #{table}"
272
- )
273
- file.write YAML.dump(data.each_with_object({}) do |record, hash|
274
- record["trash"] = false if record.key? "trash"
275
- record["draft"] = false if record.key? "draft"
276
- if record.key? "content"
277
- record["content"] = record["content"].gsub(/\u00A0/, "&nbsp;")
278
- # sych was handling nonbreaking spaces oddly.
279
- # would not be needed with psych.
280
- end
281
- hash["#{table}_#{i.succ!}"] = record
282
- end)
283
- end
284
- end
285
- end
286
-
287
- desc "copy files from template database to standard mod and update cards"
288
- task copy_mod_files: :environment do
289
- source_files_dir = "#{Wagn.root}/files"
290
-
291
- # mark mod files as mod files
292
- Card::Auth.as_bot do
293
- Card.search(type: %w(in Image File), ne: "").each do |card|
294
- if card.coded? || card.codename == "new_file" ||
295
- card.codename == "new_image"
296
- puts "skipping #{card.name}: already in code"
297
- next
298
- else
299
- puts "working on #{card.name}"
300
- end
301
-
302
- # make card a mod file card
303
- mod_name = if (l = card.left) && l.type_id == Card::SkinID
304
- "bootstrap"
305
- else
306
- "standard"
307
- end
308
- card.update_attributes! storage_type: :coded,
309
- mod: mod_name,
310
- empty_ok: true
311
- end
312
- end
313
- end
314
-
315
- desc "load bootstrap fixtures into db"
316
- task load: :environment do
317
- # FIXME: shouldn't we be more standard and use seed.rb for this code?
318
- Rake.application.options.trace = true
319
- puts "bootstrap load starting #{WAGN_SEED_PATH}"
320
- Rake::Task["db:seed"].invoke
321
- end
322
- end
323
- end
324
-
325
- def correct_time_and_user_stamps
326
- conn = ActiveRecord::Base.connection
327
- who_and_when = [Card::WagnBotID, Time.now.utc.to_s(:db)]
328
- card_sql = "update cards set creator_id=%1$s, created_at='%2$s', updater_id=%1$s, updated_at='%2$s'"
329
- conn.update(card_sql % who_and_when)
330
- conn.update("update card_acts set actor_id=%s, acted_at='%s'" % who_and_when)
331
- end
332
-
333
- def delete_unwanted_cards
334
- Card::Auth.as_bot do
335
- if (ignoramus = Card["*ignore"])
336
- ignoramus.item_cards.each(&:delete!)
337
- end
338
- Card::Cache.reset_all
339
- # FIXME: can this be associated with the machine module somehow?
340
- %w(machine_input machine_output).each do |codename|
341
- Card.search(right: { codename: codename }).each do |card|
342
- FileUtils.rm_rf File.join("files", card.id.to_s), secure: true
343
- card.delete!
344
- end
345
- end
346
- end
347
- end
348
-
349
- def clear_history
350
- Card::Action.delete_old
351
- Card::Change.delete_actionless
352
-
353
- conn = ActiveRecord::Base.connection
354
- conn.execute("truncate card_acts")
355
- conn.execute("truncate sessions")
356
- act = Card::Act.create! actor_id: Card::WagnBotID,
357
- card_id: Card::WagnBotID
358
- Card::Action.find_each do |action|
359
- action.update_attributes!(card_act_id: act.id)
360
- end
361
165
  end
362
166
 
363
167
  def version
@@ -0,0 +1,121 @@
1
+ namespace :wagn do
2
+ namespace :bootstrap do
3
+ desc "rid template of unneeded cards, acts, actions, changes, " \
4
+ "and references"
5
+ task clean: :environment do
6
+ Card::Cache.reset_all
7
+ clear_history
8
+ delete_unwanted_cards
9
+ Card.empty_trash
10
+ correct_time_and_user_stamps
11
+ Card::Cache.reset_all
12
+ end
13
+
14
+ desc "dump db to bootstrap fixtures"
15
+ task dump: :environment do
16
+ Card::Cache.reset_all
17
+
18
+ # FIXME: temporarily taking this out!!
19
+ Rake::Task["wagn:bootstrap:copy_mod_files"].invoke
20
+ Card[:all, :script].make_machine_output_coded
21
+ Card[:all, :style].make_machine_output_coded
22
+ Card[:script_html5shiv_printshiv].make_machine_output_coded
23
+
24
+ YAML::ENGINE.yamler = "syck" if RUBY_VERSION !~ /^(2|1\.9)/
25
+ # use old engine while we're supporting ruby 1.8.7 because it can't
26
+ # support Psych, which dumps with slashes that syck can't understand
27
+
28
+ WAGN_SEED_TABLES.each do |table|
29
+ i = "000"
30
+ File.open(File.join(WAGN_SEED_PATH, "#{table}.yml"), "w") do |file|
31
+ data = ActiveRecord::Base.connection.select_all(
32
+ "select * from #{table}"
33
+ )
34
+ file.write YAML.dump(data.each_with_object({}) do |record, hash|
35
+ record["trash"] = false if record.key? "trash"
36
+ record["draft"] = false if record.key? "draft"
37
+ if record.key? "content"
38
+ record["content"] = record["content"].gsub(/\u00A0/, "&nbsp;")
39
+ # sych was handling nonbreaking spaces oddly.
40
+ # would not be needed with psych.
41
+ end
42
+ hash["#{table}_#{i.succ!}"] = record
43
+ end)
44
+ end
45
+ end
46
+ end
47
+
48
+ desc "copy files from template database to standard mod and update cards"
49
+ task copy_mod_files: :environment do
50
+ # mark mod files as mod files
51
+ Card::Auth.as_bot do
52
+ Card.search(type: %w(in Image File), ne: "").each do |card|
53
+ if card.coded? || card.codename == "new_file" ||
54
+ card.codename == "new_image"
55
+ puts "skipping #{card.name}: already in code"
56
+ next
57
+ else
58
+ puts "working on #{card.name}"
59
+ end
60
+
61
+ # make card a mod file card
62
+ mod_name = if (l = card.left) && l.type_id == Card::SkinID
63
+ "bootstrap"
64
+ else
65
+ "standard"
66
+ end
67
+ card.update_attributes! storage_type: :coded,
68
+ mod: mod_name,
69
+ empty_ok: true
70
+ end
71
+ end
72
+ end
73
+
74
+ desc "load bootstrap fixtures into db"
75
+ task load: :environment do
76
+ # FIXME: shouldn't we be more standard and use seed.rb for this code?
77
+ Rake.application.options.trace = true
78
+ puts "bootstrap load starting #{WAGN_SEED_PATH}"
79
+ Rake::Task["db:seed"].invoke
80
+ end
81
+ end
82
+ end
83
+
84
+ def correct_time_and_user_stamps
85
+ conn = ActiveRecord::Base.connection
86
+ who_and_when = [Card::WagnBotID, Time.now.utc.to_s(:db)]
87
+ card_sql = "update cards set creator_id=%1$s, created_at='%2$s', " \
88
+ "updater_id=%1$s, updated_at='%2$s'"
89
+ conn.update(card_sql % who_and_when)
90
+ conn.update("update card_acts set actor_id=%s, acted_at='%s'" % who_and_when)
91
+ end
92
+
93
+ def delete_unwanted_cards
94
+ Card::Auth.as_bot do
95
+ if (ignoramus = Card["*ignore"])
96
+ ignoramus.item_cards.each(&:delete!)
97
+ end
98
+ Card::Cache.reset_all
99
+ # FIXME: can this be associated with the machine module somehow?
100
+ %w(machine_input machine_output).each do |codename|
101
+ Card.search(right: { codename: codename }).each do |card|
102
+ FileUtils.rm_rf File.join("files", card.id.to_s), secure: true
103
+ card.delete!
104
+ end
105
+ end
106
+ end
107
+ end
108
+
109
+ def clear_history
110
+ Card::Action.delete_old
111
+ Card::Change.delete_actionless
112
+
113
+ conn = ActiveRecord::Base.connection
114
+ conn.execute("truncate card_acts")
115
+ conn.execute("truncate sessions")
116
+ act = Card::Act.create! actor_id: Card::WagnBotID,
117
+ card_id: Card::WagnBotID
118
+ Card::Action.find_each do |action|
119
+ action.update_attributes!(card_act_id: act.id)
120
+ end
121
+ end
@@ -0,0 +1,77 @@
1
+ def run_card_migration core_or_deck
2
+ prepare_migration
3
+ verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
4
+ Cardio.schema_mode(core_or_deck) do |paths|
5
+ ActiveRecord::Migrator.migrations_paths = paths
6
+ ActiveRecord::Migration.verbose = verbose
7
+ ActiveRecord::Migrator.migrate paths, version
8
+ end
9
+ end
10
+
11
+ def prepare_migration
12
+ Card::Cache.reset_all
13
+ ENV["SCHEMA"] ||= "#{Cardio.gem_root}/db/schema.rb"
14
+ Card::Cache.reset_all
15
+ Card.config.action_mailer.perform_deliveries = false
16
+ Card.reset_column_information
17
+ # this is needed in production mode to insure core db
18
+ Card::Reference.reset_column_information
19
+ # structures are loaded before schema_mode is set
20
+ end
21
+
22
+ namespace :wagn do
23
+ namespace :migrate do
24
+ desc "migrate cards"
25
+ task cards: [:core_cards, :deck_cards]
26
+
27
+ desc "migrate structure"
28
+ task structure: :environment do
29
+ ENV["SCHEMA"] ||= "#{Cardio.gem_root}/db/schema.rb"
30
+ Cardio.schema_mode(:structure) do |paths|
31
+ ActiveRecord::Migrator.migrations_paths = paths
32
+ ActiveRecord::Migrator.migrate paths, version
33
+ Rake::Task["db:_dump"].invoke # write schema.rb
34
+ end
35
+ end
36
+
37
+ desc "migrate core cards"
38
+ task core_cards: :environment do
39
+ require "card/migration/core"
40
+ run_card_migration :core_cards
41
+ end
42
+
43
+ desc "migrate deck cards"
44
+ task deck_cards: :environment do
45
+ require "card/migration"
46
+ run_card_migration :deck_cards
47
+ end
48
+
49
+ desc "Redo the deck cards migration given by VERSION."
50
+ task redo: :environment do
51
+ version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
52
+ verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
53
+ raise "VERSION is required" unless version
54
+ ActiveRecord::Migration.verbose = verbose
55
+ ActiveRecord::SchemaMigration.where(version: version.to_s).delete_all
56
+ ActiveRecord::Migrator.run :up, Cardio.migration_paths(:deck_cards),
57
+ version
58
+ end
59
+
60
+ # maybe we should move this to a method?
61
+ desc "write the version to a file (not usually called directly)"
62
+ task :stamp, :type do |_t, args|
63
+ ENV["SCHEMA"] ||= "#{Cardio.gem_root}/db/schema.rb"
64
+ Cardio.config.action_mailer.perform_deliveries = false
65
+
66
+ stamp_file = Cardio.schema_stamp_path(args[:type])
67
+
68
+ Cardio.schema_mode args[:type] do
69
+ version = ActiveRecord::Migrator.current_version
70
+ if version.to_i > 0 && (file = open(stamp_file, "w"))
71
+ puts ">> writing version: #{version} to #{stamp_file}"
72
+ file.puts version
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -127,7 +127,6 @@ class CardController < ActionController::Base
127
127
  rescue_from StandardError do |exception|
128
128
  Rails.logger.info "exception = #{exception.class}: #{exception.message}"
129
129
  @card ||= Card.new
130
- Card::Error.current = exception
131
130
  show Card::Error.exception_view(@card, exception)
132
131
  end
133
132
  end
@@ -4,9 +4,9 @@ Decko::Engine.routes.draw do
4
4
  # most common
5
5
  root "card#read"
6
6
  get "#{Decko::Engine.config.files_web_path}/:id/:rev_id(-:size).:format" =>
7
- "card#read", id: /[^-]+/, rev_id: /[^-]+/, explicit_file: true
7
+ "card#read", id: /[^-]+/, rev_id: /[^-]+/, explicit_file: true
8
8
  get "#{Decko::Engine.config.files_web_path}/:id(-:size)-:rev_id.:format" =>
9
- "card#read", id: /[^-]+/, explicit_file: true # deprecated
9
+ "card#read", id: /[^-]+/, explicit_file: true # deprecated
10
10
  get "assets/*filename" => "card#asset"
11
11
  get "javascripts/*filename" => "card#asset"
12
12
  get "jasmine/*filename" => "card#asset"
@@ -9,7 +9,7 @@ describe CardController do
9
9
  route_to opts.merge(controller: "card")
10
10
  end
11
11
 
12
- it "should recognize type" do
12
+ it "recognizes type" do
13
13
  # all_routes = Rails.application.routes.routes
14
14
  # require 'rails/application/route_inspector'
15
15
  # warn "rountes#{ENV['CONTROLLER']}:\n" + Rails::Application::RouteInspector.new.format(all_routes, ENV['CONTROLLER'])* "\n"
@@ -18,12 +18,12 @@ describe CardController do
18
18
  .to card_route_to(action: "read", type: "Phrase", view: "new")
19
19
  end
20
20
 
21
- it "should recognize .rss on /recent" do
21
+ it "recognizes .rss on /recent" do
22
22
  expect(get: "/recent.rss")
23
23
  .to card_route_to(action: "read", id: ":recent", format: "rss")
24
24
  end
25
25
 
26
- it "should handle RESTful posts" do
26
+ it "handles RESTful posts" do
27
27
  expect(put: "/mycard").to card_route_to(action: "update", id: "mycard")
28
28
  expect(put: "/").to card_route_to(action: "update")
29
29
  end
@@ -35,17 +35,17 @@ describe CardController do
35
35
 
36
36
  ["/wagn", ""].each do |prefix|
37
37
  describe "routes prefixed with '#{prefix}'" do
38
- it "should recognize .rss format" do
38
+ it "recognizes .rss format" do
39
39
  expect(get: "#{prefix}/*recent.rss")
40
40
  .to card_route_to(action: "read", id: "*recent", format: "rss")
41
41
  end
42
42
 
43
- it "should recognize .xml format" do
43
+ it "recognizes .xml format" do
44
44
  expect(get: "#{prefix}/*recent.xml")
45
45
  .to card_route_to(action: "read", id: "*recent", format: "xml")
46
46
  end
47
47
 
48
- it "should accept cards without dots" do
48
+ it "accepts cards without dots" do
49
49
  expect(get: "#{prefix}/random")
50
50
  .to card_route_to(action: "read", id: "random")
51
51
  end
@@ -207,7 +207,7 @@ describe CardController do
207
207
  login_as "joe_user"
208
208
  end
209
209
 
210
- it "should work on index" do
210
+ it "works on index" do
211
211
  get :read, view: "new"
212
212
  expect(assigns["card"].name).to eq("")
213
213
  assert_response :success, "response should succeed"
@@ -241,7 +241,7 @@ describe CardController do
241
241
  assert_response :success
242
242
  end
243
243
 
244
- it "should use card params name over id in new cards" do
244
+ it "uses card params name over id in new cards" do
245
245
  get :read, id: "my_life", card: { name: "My LIFE" }, view: "new"
246
246
  expect(assigns["card"].name).to eq("My LIFE")
247
247
  end
@@ -276,9 +276,9 @@ describe CardController do
276
276
 
277
277
  it "handles image with no read permission" do
278
278
  get :read, id: "mao2"
279
- assert_response 403, "should deny html card view"
279
+ assert_response 403, "denies html card view"
280
280
  get :read, id: "mao2", format: "jpg"
281
- assert_response 403, "should deny simple file view"
281
+ assert_response 403, "denies simple file view"
282
282
  end
283
283
 
284
284
  it "handles image with read permission" do
@@ -373,7 +373,7 @@ describe CardController do
373
373
  end
374
374
  end
375
375
 
376
- it "should comment" do
376
+ it "comments" do
377
377
  Card::Auth.as_bot do
378
378
  Card.create name: "basicname+*self+*comment",
379
379
  content: "[[Anyone Signed In]]"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wagn
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.19.6
4
+ version: 1.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan McCutchen
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-10-02 00:00:00.000000000 Z
14
+ date: 2017-01-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -33,14 +33,14 @@ dependencies:
33
33
  requirements:
34
34
  - - '='
35
35
  - !ruby/object:Gem::Version
36
- version: 1.19.6
36
+ version: 1.20.0
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - '='
42
42
  - !ruby/object:Gem::Version
43
- version: 1.19.6
43
+ version: 1.20.0
44
44
  description: a wiki approach to stuctured data, dynamic interaction, and web design
45
45
  email:
46
46
  - info@wagn.org
@@ -112,6 +112,12 @@ files:
112
112
  - lib/wagn/cli.rb
113
113
  - lib/wagn/commands.rb
114
114
  - lib/wagn/commands/application.rb
115
+ - lib/wagn/commands/command.rb
116
+ - lib/wagn/commands/cucumber_command.rb
117
+ - lib/wagn/commands/rake_command.rb
118
+ - lib/wagn/commands/rake_command/parser.rb
119
+ - lib/wagn/commands/rspec_command.rb
120
+ - lib/wagn/commands/rspec_command/parser.rb
115
121
  - lib/wagn/config/environments/cucumber.rb
116
122
  - lib/wagn/config/environments/development.rb
117
123
  - lib/wagn/config/environments/production.rb
@@ -153,7 +159,6 @@ files:
153
159
  - lib/wagn/generators/wagn/wagn_generator.rb
154
160
  - lib/wagn/generators/wagn/wagn_generator/interactive.rb
155
161
  - lib/wagn/mods_spec_helper.rb
156
- - lib/wagn/parser.rb
157
162
  - lib/wagn/response.rb
158
163
  - lib/wagn/script_wagn_loader.rb
159
164
  - lib/wagn/tasks/.gitkeep
@@ -161,6 +166,8 @@ files:
161
166
  - lib/wagn/tasks/db.rake
162
167
  - lib/wagn/tasks/test.rake
163
168
  - lib/wagn/tasks/wagn.rake
169
+ - lib/wagn/tasks/wagn/bootstrap.rake
170
+ - lib/wagn/tasks/wagn/migrate.rake
164
171
  - rails/application-routes.rb
165
172
  - rails/assets/ace/ext-searchbox.js
166
173
  - rails/assets/ace/mode-coffee.js
@@ -1,93 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- module Wagn
4
- class Parser
5
- class << self
6
- def db_task command, opts
7
- OptionParser.new do |parser|
8
- parser.banner = "Usage: wagn #{command} [options]\n\n" \
9
- "Run wagn:#{command} task on the production "\
10
- " database specified in config/database.yml\n\n"
11
- parser.on("--production", "-p",
12
- "#{command} production database (default)") do
13
- opts[:envs] = ["production"]
14
- end
15
- parser.on("--test", "-t",
16
- "#{command} test database") do
17
- opts[:envs] = ["test"]
18
- end
19
- parser.on("--development", "-d",
20
- "#{command} development database") do
21
- opts[:envs] = ["development"]
22
- end
23
- parser.on("--all", "-a",
24
- "#{command} production, test, and development database") do
25
- opts[:envs] = %w(production development test)
26
- end
27
- end
28
- end
29
-
30
- def rspec opts
31
- OptionParser.new do |parser|
32
- parser.banner = "Usage: wagn rspec [WAGN ARGS] -- [RSPEC ARGS]\n\n" \
33
- "RSPEC ARGS"
34
- parser.separator <<-WAGN
35
-
36
- WAGN ARGS
37
-
38
- You don't have to give a full path for FILENAME, the basename is enough
39
- If FILENAME does not include '_spec' rspec searches for the
40
- corresponding spec file.
41
- The line number always referes to example in the (corresponding) spec
42
- file.
43
-
44
- WAGN
45
-
46
- parser.on("-d", "--spec FILENAME(:LINE)",
47
- "Run spec for a Wagn deck file") do |file|
48
- opts[:files] = find_spec_file(file, "#{Wagn.root}/mod")
49
- end
50
- parser.on("-c", "--core-spec FILENAME(:LINE)",
51
- "Run spec for a Wagn core file") do |file|
52
- opts[:files] = find_spec_file(file, Cardio.gem_root)
53
- end
54
- parser.on("-m", "--mod MODNAME",
55
- "Run all specs for a mod or matching a mod") do |file|
56
- opts[:files] =
57
- if File.exist?("mod/#{file}")
58
- "#{Cardio.gem_root}/mod/#{file}"
59
- elsif File.exist?("#{Cardio.gem_root}/mod/#{file}")
60
- "#{Cardio.gem_root}/mod/#{file}"
61
- elsif (files = find_spec_file(file, "mod")) && files.present?
62
- files
63
- else
64
- find_spec_file(file, "#{Cardio.gem_root}/mod")
65
- end
66
- end
67
- parser.on("-s", "--[no-]simplecov", "Run with simplecov") do |s|
68
- opts[:simplecov] = s ? "" : "COVERAGE=false"
69
- end
70
- parser.on("--rescue", "Run with pry-rescue") do
71
- if opts[:executer] == "spring"
72
- puts "Disabled pry-rescue. Not compatible with spring."
73
- else
74
- opts[:rescue] = "rescue "
75
- end
76
- end
77
- parser.on("--[no-]spring", "Run with spring") do |spring|
78
- if spring
79
- opts[:executer] = "spring"
80
- if opts[:rescue]
81
- opts[:rescue] = ""
82
- puts "Disabled pry-rescue. Not compatible with spring."
83
- end
84
- else
85
- opts[:executer] = "bundle exec"
86
- end
87
- end
88
- parser.separator "\n"
89
- end
90
- end
91
- end
92
- end
93
- end