card 1.105.0 → 1.105.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/card/director/card_class.rb +17 -14
- data/lib/card/fetch/card_class.rb +19 -13
- data/lib/card/name.rb +3 -3
- data/lib/card/query.rb +8 -5
- data/lib/card/set/abstract.rb +1 -0
- data/lib/card/set/format/abstract_format/wrapper.rb +0 -1
- data/lib/card/set/format/abstract_format.rb +4 -3
- data/lib/card/set/format.rb +46 -20
- data/lib/card/set/helpers.rb +49 -36
- data/lib/card/set/registrar.rb +3 -5
- data/lib/card/set/required_field.rb +3 -2
- data/lib/card/set/type.rb +1 -0
- data/lib/card/set.rb +67 -21
- data/lib/card.rb +30 -12
- data/lib/cardio/command/custom.rb +1 -0
- data/lib/cardio/command/rake_command.rb +1 -1
- data/lib/cardio/command/rspec_command/parser.rb +7 -4
- data/lib/cardio/generators.rb +1 -1
- data/lib/cardio/mod/class_methods.rb +2 -2
- data/lib/cardio/mod/dirs.rb +1 -1
- data/lib/cardio/mod/eat/edibles.rb +21 -1
- data/lib/cardio/mod/eat.rb +4 -2
- data/lib/cardio/mod/modfile_api.rb +2 -2
- data/lib/cardio/mod/sow.rb +16 -16
- data/lib/cardio/mod.rb +30 -48
- data/lib/cardio/railtie.rb +3 -3
- data/lib/generators/mod/mod_generator.rb +5 -5
- data/mod/core/lib/tasks/card/mod.rake +5 -2
- data/mod/core/lib/tasks/card/seed.rake +6 -4
- data/mod/core/lib/tasks/card.rake +8 -4
- data/mod/core/set/all/states.rb +8 -2
- metadata +6 -8
- data/mod/core/lib/tasks/card/assets.rake +0 -17
- data/mod/core/lib/tasks/card/create.rake +0 -81
- /data/mod/core/{locales → config/locales}/de.yml +0 -0
- /data/mod/core/{locales → config/locales}/en.yml +0 -0
data/lib/card.rb
CHANGED
@@ -47,7 +47,7 @@ ActiveSupport.run_load_hooks(:before_card, self)
|
|
47
47
|
# @card.type_code # returns codename of type card [Symbol]
|
48
48
|
# @card.type_card # returns Cardtype card associated with @card's type [Card]
|
49
49
|
#
|
50
|
-
# {
|
50
|
+
# - {Set::All::Type Common type methods}
|
51
51
|
#
|
52
52
|
# ## Content
|
53
53
|
#
|
@@ -57,9 +57,8 @@ ActiveSupport.run_load_hooks(:before_card, self)
|
|
57
57
|
# @card.content # the "official" content, which may be different from
|
58
58
|
# db_content when db_content is overridden with a structure rule.
|
59
59
|
#
|
60
|
-
# {
|
61
|
-
#
|
62
|
-
# {file:mod/core/set/all/content.rb Common content methods}
|
60
|
+
# - {Content Processing card content}
|
61
|
+
# - {Set::All::Content Common content methods}
|
63
62
|
#
|
64
63
|
# ## Fetch
|
65
64
|
#
|
@@ -68,15 +67,35 @@ ActiveSupport.run_load_hooks(:before_card, self)
|
|
68
67
|
#
|
69
68
|
# Any of the above marks (name, key, id, codename) can be used to fetch a card, eg:
|
70
69
|
#
|
71
|
-
# @
|
70
|
+
# @card1 = Card.fetch "Garden" # returns the card with the name "Garden" (or, more
|
72
71
|
# precisely, with the key "garden")
|
73
|
-
# @
|
74
|
-
# @
|
72
|
+
# @card2 = Card.fetch 100 # returns the card with the id 100
|
73
|
+
# @card3 = Card.fetch :help # returns the card with the codename help
|
75
74
|
#
|
76
75
|
# The fetch API will first try to find the card in the cache and will only look in the
|
77
76
|
# database if necessary.
|
78
77
|
#
|
79
|
-
#
|
78
|
+
# The `Card[]` shortcut will return the same results but does not support the full range
|
79
|
+
# of advanced options and will not return virtual cards
|
80
|
+
# (cards that can be constructed from naming patterns but are not actually in the
|
81
|
+
# database).
|
82
|
+
#
|
83
|
+
# # equivalent to the above but more concise
|
84
|
+
# @card1 = Card["Garden"]
|
85
|
+
# @card2 = Card[100]
|
86
|
+
# @card3 = Card[:help]
|
87
|
+
#
|
88
|
+
# Better still, you can use the `#card` method on Strings, Integers, Symbols, and Arrays
|
89
|
+
#
|
90
|
+
# # equivalent to the above but even more concise
|
91
|
+
# @card1 = "Garden".card
|
92
|
+
# @card2 = 100.card
|
93
|
+
# @card3 = :help.card
|
94
|
+
#
|
95
|
+
# The `#card_id`, `#cardname`, and `#codename` methods work on all the same objects and
|
96
|
+
# provide convenient shortcuts for quickly fetching and returning card attributes.
|
97
|
+
#
|
98
|
+
# - {Card::Fetch::CardClass More on fetching.}
|
80
99
|
#
|
81
100
|
# ## Query
|
82
101
|
#
|
@@ -84,7 +103,7 @@ ActiveSupport.run_load_hooks(:before_card, self)
|
|
84
103
|
#
|
85
104
|
# Card.search type_id: 4 # returns an Array of cards with the type_id of 4.
|
86
105
|
#
|
87
|
-
# {Card::Query More on queries}
|
106
|
+
# - {Card::Query More on queries}
|
88
107
|
#
|
89
108
|
# ## Views and Events
|
90
109
|
#
|
@@ -95,9 +114,8 @@ ActiveSupport.run_load_hooks(:before_card, self)
|
|
95
114
|
# Both views and events are defined in {Cardio::Mod mods}, short for modules or
|
96
115
|
# modifications.
|
97
116
|
#
|
98
|
-
# {
|
99
|
-
#
|
100
|
-
# {Card::Set::Event::Api More on events}
|
117
|
+
# - {Set::Format::AbstractFormat#view More on views}
|
118
|
+
# - {Set::Event::Api#event More on events}
|
101
119
|
#
|
102
120
|
# ## Accounts and Permissions
|
103
121
|
#
|
@@ -9,21 +9,22 @@ module Cardio
|
|
9
9
|
class Parser < OptionParser
|
10
10
|
RSPEC_PATH_MESSAGE = <<~MESSAGE.freeze
|
11
11
|
|
12
|
-
|
12
|
+
#{Command.bin_name.upcase} ARGS
|
13
13
|
|
14
14
|
You don't have to give a full path for FILENAME; the basename is enough.
|
15
15
|
If FILENAME does not include '_spec', then rspec searches for the
|
16
|
-
corresponding spec file.
|
17
|
-
|
16
|
+
corresponding spec file. The line number always refers to the example in the
|
17
|
+
spec file.
|
18
18
|
|
19
19
|
MESSAGE
|
20
20
|
|
21
21
|
RSPEC_BANNER = <<~BANNER.freeze
|
22
22
|
|
23
|
-
Usage:
|
23
|
+
Usage: #{Command.bin_name} rspec [#{Command.bin_name.upcase} ARGS] -- [RSPEC ARGS]
|
24
24
|
|
25
25
|
RSPEC ARGS
|
26
26
|
|
27
|
+
See https://relishapp.com/rspec/rspec-core/docs/command-line
|
27
28
|
BANNER
|
28
29
|
|
29
30
|
DESC = {
|
@@ -90,6 +91,8 @@ module Cardio
|
|
90
91
|
end
|
91
92
|
|
92
93
|
def find_mod_file filename, base_dir
|
94
|
+
# FIXME: - use Cardio::Mod lookup
|
95
|
+
|
93
96
|
if File.exist?("mod/#{filename}") || File.exist?("#{base_dir}/mod/#{filename}")
|
94
97
|
"#{base_dir}/mod/#{filename}"
|
95
98
|
elsif (files = find_spec_file(filename, "mod"))&.present?
|
data/lib/cardio/generators.rb
CHANGED
@@ -27,12 +27,12 @@ module Cardio
|
|
27
27
|
name.to_s.sub(/^card-mod-/, "")
|
28
28
|
end
|
29
29
|
|
30
|
-
def
|
30
|
+
def leftover
|
31
31
|
Card.search(type: :mod).reject { |mod_card| fetch mod_card.modname }
|
32
32
|
end
|
33
33
|
|
34
34
|
def ensure_uninstalled
|
35
|
-
|
35
|
+
leftover.each do |mod_card|
|
36
36
|
Card::Auth.as_bot do
|
37
37
|
delete_auto_installed_cards mod_card
|
38
38
|
end
|
data/lib/cardio/mod/dirs.rb
CHANGED
@@ -65,7 +65,7 @@ module Cardio
|
|
65
65
|
# Add a mod to mod load paths
|
66
66
|
def add_mod mod_name, path: nil, group: nil
|
67
67
|
if @mods_by_name.key? Mod.normalize_name(mod_name)
|
68
|
-
raise
|
68
|
+
raise StandardError,
|
69
69
|
"name conflict: mod with name \"#{mod_name}\" already loaded"
|
70
70
|
end
|
71
71
|
|
@@ -6,11 +6,31 @@ module Cardio
|
|
6
6
|
# list of card attribute hashes
|
7
7
|
# @return [Array <Hash>]
|
8
8
|
def edibles
|
9
|
-
mods_with_data.map { |mod| mod_edibles mod }.flatten
|
9
|
+
explicit_edibles { mods_with_data.map { |mod| mod_edibles mod }.flatten }
|
10
10
|
end
|
11
11
|
|
12
12
|
private
|
13
13
|
|
14
|
+
def explicit_edibles
|
15
|
+
return yield unless @name
|
16
|
+
|
17
|
+
yield.reject do |edible|
|
18
|
+
if @name.match?(/^\:/)
|
19
|
+
explicit_codename_match? edible[:codename]
|
20
|
+
else
|
21
|
+
explicit_name_match? edible[:name]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def explicit_codename_match? codename
|
27
|
+
codename && (codename == @name[1..-1])
|
28
|
+
end
|
29
|
+
|
30
|
+
def explicit_name_match? name
|
31
|
+
name && (name.to_name == @name.to_name)
|
32
|
+
end
|
33
|
+
|
14
34
|
# if mod is specified, consider only that mod
|
15
35
|
# @return [Array <Cardio::Mod>]
|
16
36
|
def mods_with_data
|
data/lib/cardio/mod/eat.rb
CHANGED
@@ -11,9 +11,10 @@ module Cardio
|
|
11
11
|
class Eat
|
12
12
|
include Edibles
|
13
13
|
|
14
|
-
def initialize mod: nil,
|
14
|
+
def initialize mod: nil, podtype: nil, user: nil, verbose: nil, name: nil
|
15
15
|
@mod = mod
|
16
|
-
@pod_type =
|
16
|
+
@pod_type = podtype&.to_sym
|
17
|
+
@name = name
|
17
18
|
@user_id = user&.card_id
|
18
19
|
@verbose = !verbose.nil?
|
19
20
|
end
|
@@ -24,6 +25,7 @@ module Cardio
|
|
24
25
|
track edible do
|
25
26
|
current_user edible.delete(:user)
|
26
27
|
time_machine edible.delete(:time) do
|
28
|
+
# binding.pry if edible[:type] == :link_list
|
27
29
|
Card.ensure edible
|
28
30
|
end
|
29
31
|
end
|
data/lib/cardio/mod/sow.rb
CHANGED
@@ -9,14 +9,27 @@ module Cardio
|
|
9
9
|
@mod = args[:mod]
|
10
10
|
@name = args[:name]
|
11
11
|
@cql = args[:cql]
|
12
|
-
@
|
12
|
+
@podtype = args[:podtype] || (Rails.env.test? ? :test : :real)
|
13
13
|
@items = args[:items]
|
14
14
|
@field_tags = args[:field_tags]
|
15
15
|
end
|
16
16
|
|
17
|
+
# if output mod given,
|
18
|
+
def out
|
19
|
+
Card::Cache.reset_all
|
20
|
+
@mod ? dump : puts(new_data.to_yaml.yellow)
|
21
|
+
:success
|
22
|
+
rescue Card::Error::NotFound => e
|
23
|
+
e.message
|
24
|
+
rescue JSON::ParserError => e
|
25
|
+
e.message
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
17
30
|
# @return [Array <Hash>]
|
18
31
|
def new_data
|
19
|
-
@new_data ||= cards.map { |c| c.
|
32
|
+
@new_data ||= cards.map { |c| c.pod_hash field_tags: field_tag_marks }
|
20
33
|
end
|
21
34
|
|
22
35
|
def field_tag_marks
|
@@ -27,18 +40,7 @@ module Cardio
|
|
27
40
|
|
28
41
|
# @return [String] -- MOD_DIR/data/ENVIRONMENT.yml
|
29
42
|
def filename
|
30
|
-
@filename ||= File.join mod_path, "#{@
|
31
|
-
end
|
32
|
-
|
33
|
-
# if output mod given,
|
34
|
-
def out
|
35
|
-
Card::Cache.reset_all
|
36
|
-
@mod ? dump : puts(new_data.to_yaml.yellow)
|
37
|
-
:success
|
38
|
-
rescue Card::Error::NotFound => e
|
39
|
-
e.message
|
40
|
-
rescue JSON::ParserError => e
|
41
|
-
e.message
|
43
|
+
@filename ||= File.join mod_path, "#{@podtype}.yml"
|
42
44
|
end
|
43
45
|
|
44
46
|
# write yaml to file
|
@@ -48,8 +50,6 @@ module Cardio
|
|
48
50
|
puts "#{filename} now contains #{hash.size} items".green
|
49
51
|
end
|
50
52
|
|
51
|
-
private
|
52
|
-
|
53
53
|
def cards
|
54
54
|
if @name
|
55
55
|
cards_from_name
|
data/lib/cardio/mod.rb
CHANGED
@@ -1,65 +1,44 @@
|
|
1
1
|
require "cardio/mod/class_methods"
|
2
2
|
|
3
3
|
module Cardio
|
4
|
-
# A Card Mod (short for "module" or "modification") is a
|
5
|
-
# functionality. Mods are how the Decko community develops and shares
|
6
|
-
# If you want to customize a deck in a way that can't be done on the site itself,
|
4
|
+
# A Card Mod (short for "module" or "modification") is a library containing discrete
|
5
|
+
# chunk of card functionality. Mods are how the Decko community develops and shares
|
6
|
+
# code. If you want to customize a deck in a way that can't be done on the site itself,
|
7
7
|
# try a mod.
|
8
8
|
#
|
9
9
|
# The simplest way to add a mod is to run this command in your deck:
|
10
10
|
#
|
11
|
-
#
|
11
|
+
# card generate mod MOD_NAME
|
12
|
+
#
|
13
|
+
# # or, for short:
|
14
|
+
# card g mod MOD_NAME
|
12
15
|
#
|
13
16
|
# This will create a directory following the pattern `DECK_NAME/mod/MOD_NAME`. This
|
14
17
|
# directory contains all the specifications of your mod. By default that includes
|
15
|
-
# a README.md file and the
|
16
|
-
#
|
17
|
-
# - **assets**
|
18
|
-
#
|
19
|
-
#
|
18
|
+
# a README.md file and the subdirectories in **bold** below:
|
19
|
+
#
|
20
|
+
# - {file:mod/assets/README.md **assets**}
|
21
|
+
# - **script** - JavaScript, CoffeeScript, etc
|
22
|
+
# - **style** - CSS, SCSS, etc
|
23
|
+
# - **config**
|
24
|
+
# - **early** ruby init files loaded before Card
|
25
|
+
# - **late** ruby init files loaded after Card
|
26
|
+
# - **locales** i18n yml files
|
27
|
+
# - {file:SEEDME.md **data**} - seed and test data.
|
28
|
+
# - **lib** - standard ruby libraries
|
29
|
+
# - task - rake tasks
|
20
30
|
# - **public** - accessible via the web at DECK_URL_ROOT/mod/MOD_NAME/
|
21
|
-
# - **set** - the mod's focal point where card sets are configured
|
22
|
-
# -
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
# Set modules define methods for a given set of cards and their format objects.
|
27
|
-
# They are defined in a mod's _set_ directory. For example, suppose you've created a
|
28
|
-
# mod that called *biz*, your deck has Company cards, and you want to extend the
|
29
|
-
# behavior of those cards.
|
30
|
-
#
|
31
|
-
# You can add a set module like so:
|
32
|
-
#
|
33
|
-
# decko generate set biz type company
|
34
|
-
#
|
35
|
-
# This will create the following two files:
|
36
|
-
#
|
37
|
-
# mod/biz/set/type/company.rb
|
38
|
-
# mod/biz/spec/set/type/company.rb
|
31
|
+
# - **{Card::Set set}** - the mod's focal point where card sets are configured
|
32
|
+
# - {Card::Set::Pattern set_pattern} - (advanced) for adding types of sets.
|
33
|
+
# - {file:CONTRIBUTING.md#Testing **spec**} - for rspec tests
|
34
|
+
# - vendor - for external code, especially git submodules
|
39
35
|
#
|
40
|
-
#
|
41
|
-
# pattern into another directory, eg:
|
42
|
-
#
|
43
|
-
# mod/biz/set/type/company/foo.rb
|
44
|
-
# mod/biz/set/type/company/bar.rb
|
45
|
-
#
|
46
|
-
# The general pattern can be expressed as follows:
|
47
|
-
#
|
48
|
-
# DECKNAME/mod/MODNAME/set/SET_PATTERN/ANCHOR[/FREENAME].rb
|
36
|
+
# Mods also often contain a .gemspec file to specify the mod as a ruby gem.
|
49
37
|
#
|
50
38
|
# Learn more:
|
51
|
-
# - {Card} introduces card objects
|
52
|
-
# - {Card::Set} provides an overview of how set modules work
|
53
|
-
# - {Card::Set::Format} explains the basics of the format API
|
54
|
-
# - {Card::Set::Format::AbstractFormat} explains the basics of the view definition API
|
55
|
-
# - {Card::Set::Event::Api} explains the basics of the event API
|
56
39
|
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
# Other ways your mod can extend Decko functionality include:
|
60
|
-
# - **set_pattern** for additional {Card::Set::Pattern set patterns},
|
61
|
-
# or types of sets.
|
62
|
-
# - **file** for fixed initial card content
|
40
|
+
# - {Card} introduces card objects
|
41
|
+
# - {Card::Set} explains of how set modules work
|
63
42
|
class Mod
|
64
43
|
extend ClassMethods
|
65
44
|
|
@@ -105,7 +84,10 @@ module Cardio
|
|
105
84
|
def required_path path
|
106
85
|
return path if File.exist? path
|
107
86
|
|
108
|
-
raise
|
87
|
+
raise StandardError, "mod not found: #{@name}"
|
88
|
+
|
89
|
+
# FIXME: - need non-Card based error class
|
90
|
+
# raise Card::Error::NotFound,
|
109
91
|
end
|
110
92
|
end
|
111
93
|
end
|
data/lib/cardio/railtie.rb
CHANGED
@@ -80,11 +80,11 @@ module Cardio
|
|
80
80
|
|
81
81
|
p["lib/graph_q_l/types/query.rb"] <<
|
82
82
|
"#{mod_path}/lib/graph_q_l/types/query.rb"
|
83
|
-
p["config/initializers"] << "#{mod_path}/
|
84
|
-
p["late/initializers"] << "#{mod_path}/
|
83
|
+
p["config/initializers"] << "#{mod_path}/config/early"
|
84
|
+
p["late/initializers"] << "#{mod_path}/config/late"
|
85
85
|
p["lib/tasks"] << "#{mod_path}/lib/tasks"
|
86
86
|
p["mod-data"] << "#{mod_path}/data"
|
87
|
-
p["config/locales"] << "#{mod_path}/locales"
|
87
|
+
p["config/locales"] << "#{mod_path}/config/locales"
|
88
88
|
end
|
89
89
|
|
90
90
|
# Card doesn't use these rails patterns
|
@@ -7,11 +7,10 @@ module Cardio
|
|
7
7
|
def create_mod
|
8
8
|
inside mod_path do
|
9
9
|
assets_dir
|
10
|
-
|
10
|
+
config_dir
|
11
11
|
set_dir
|
12
12
|
spec_dir
|
13
13
|
empty_directory "public"
|
14
|
-
empty_directory "locales"
|
15
14
|
end
|
16
15
|
end
|
17
16
|
|
@@ -42,11 +41,12 @@ module Cardio
|
|
42
41
|
end
|
43
42
|
end
|
44
43
|
|
45
|
-
def
|
46
|
-
inside "
|
47
|
-
empty_directory "before"
|
44
|
+
def config_dir
|
45
|
+
inside "config" do
|
46
|
+
# empty_directory "before"
|
48
47
|
empty_directory "early"
|
49
48
|
empty_directory "late"
|
49
|
+
empty_directory "locales"
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
namespace :card do
|
2
2
|
namespace :mod do
|
3
|
+
desc "list current mods in load order"
|
3
4
|
task list: :environment do
|
4
5
|
Cardio.mods.each { |m| puts "#{m.name}: #{m.path}".green }
|
5
6
|
end
|
@@ -15,10 +16,12 @@ namespace :card do
|
|
15
16
|
end
|
16
17
|
end
|
17
18
|
|
18
|
-
|
19
|
-
|
19
|
+
desc "list mods still installed but not configured for use"
|
20
|
+
task leftover: :environment do
|
21
|
+
Cardio::Mod.leftover.each { |m| puts m.modname.yellow }
|
20
22
|
end
|
21
23
|
|
24
|
+
desc "uninstall leftover mods"
|
22
25
|
task uninstall: :environment do
|
23
26
|
Cardio::Mod.ensure_uninstalled
|
24
27
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require "colorize"
|
2
|
+
|
1
3
|
namespace :card do
|
2
4
|
namespace :seed do
|
3
5
|
desc "regenerate seed fixtures quickly from current fixtures. " \
|
@@ -13,7 +15,7 @@ namespace :card do
|
|
13
15
|
"(alias for db:seed:replant)"
|
14
16
|
task replant: ["db:seed:replant"]
|
15
17
|
|
16
|
-
desc "finalize seed data with migrations, installations, asset coding, and cleaning"
|
18
|
+
# desc "finalize seed data with migrations, installations, asset coding, and cleaning"
|
17
19
|
task polish: :environment do
|
18
20
|
ENV["STAMP_MIGRATIONS"] = "true"
|
19
21
|
|
@@ -22,14 +24,14 @@ namespace :card do
|
|
22
24
|
# It's important NOT to clean the test data and lose history, creator info, etc.
|
23
25
|
end
|
24
26
|
|
25
|
-
desc "remove unneeded cards, acts, actions, changes, and references"
|
27
|
+
# desc "remove unneeded cards, acts, actions, changes, and references"
|
26
28
|
task clean: :environment do
|
27
29
|
Cardio::Seed.clean
|
28
30
|
Cardio::Utils.empty_trash
|
29
31
|
Card::Cache.reset_all
|
30
32
|
end
|
31
33
|
|
32
|
-
desc "dump db to
|
34
|
+
# desc "dump db to fixtures"
|
33
35
|
task dump: :environment do
|
34
36
|
Card::Cache.reset_all
|
35
37
|
Cardio::Seed.dump
|
@@ -38,7 +40,7 @@ namespace :card do
|
|
38
40
|
desc "completely regenerate seed fixtures starting with dependee seed fixtures"
|
39
41
|
task build: %i[plow polish dump]
|
40
42
|
|
41
|
-
desc "reseed from the fixtures of the dependee seed mod"
|
43
|
+
# desc "reseed from the fixtures of the dependee seed mod"
|
42
44
|
task plow: :environment do
|
43
45
|
ENV["CARD_UPDATE_SEED"] = "true"
|
44
46
|
# tells Cardio::Seed to use fixtures upon which the seeds being updated depend
|
@@ -24,8 +24,12 @@ namespace :card do
|
|
24
24
|
task eat: :environment do
|
25
25
|
parse_options :eat do
|
26
26
|
add_opt :m, :mod, "only eat cards in given mod"
|
27
|
+
add_opt :n, :name, "only eat card with name"
|
28
|
+
# FIXME: - name seems not to work, especially in combination with other options
|
29
|
+
|
27
30
|
add_opt :u, :user, "user to credit unless specified (otherwise uses Decko Bot)"
|
28
|
-
add_opt :
|
31
|
+
add_opt :p, :podtype, "pod type: real, test, or all " \
|
32
|
+
"(defaults to all in test env, otherwise real)"
|
29
33
|
flag_opt :v, :verbose, "output progress info and error backtraces"
|
30
34
|
end
|
31
35
|
rake_result(:eat) { Cardio::Mod::Eat.new(**options).up }
|
@@ -36,10 +40,10 @@ namespace :card do
|
|
36
40
|
parse_options :sow do
|
37
41
|
add_opt :n, :name, "export card with name/mark (handles : and ~ prefixes)"
|
38
42
|
flag_opt :i, :items, "also export card items (with -n)"
|
39
|
-
flag_opt :o, :only_items, "
|
43
|
+
flag_opt :o, :only_items, "only export card items (with -n)", items: :only
|
40
44
|
add_opt :c, :cql, "export cards found by CQL (in JSON format)"
|
41
|
-
add_opt :m, :mod, "output yaml
|
42
|
-
add_opt :
|
45
|
+
add_opt :m, :mod, "output yaml file in mod"
|
46
|
+
add_opt :p, :podtype, "podtype to dump (real or test. default based on current env)"
|
43
47
|
add_opt :t, :field_tags, "comma-separated list of field tag marks"
|
44
48
|
end
|
45
49
|
rake_result(:sow) { Cardio::Mod::Sow.new(**options).out }
|
data/mod/core/set/all/states.rb
CHANGED
@@ -84,9 +84,15 @@ end
|
|
84
84
|
|
85
85
|
# has not been edited directly by human users. bleep blorp.
|
86
86
|
def pristine?
|
87
|
-
new_card?
|
88
|
-
|
87
|
+
if new_card?
|
88
|
+
true
|
89
|
+
elsif subcards? && subcards.cards.find(&:altered?)
|
90
|
+
false
|
91
|
+
elsif (created_at == updated_at) && (creator_id == WagnBotID)
|
92
|
+
true
|
93
|
+
else
|
89
94
|
!user_changes?
|
95
|
+
end
|
90
96
|
end
|
91
97
|
|
92
98
|
def altered?
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: card
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.105.
|
4
|
+
version: 1.105.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ethan McCutchen
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2023-
|
13
|
+
date: 2023-03-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: cardname
|
@@ -18,14 +18,14 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.15.
|
21
|
+
version: 0.15.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 0.15.
|
28
|
+
version: 0.15.1
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rake
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -731,6 +731,8 @@ files:
|
|
731
731
|
- lib/generators/set/set_generator.rb
|
732
732
|
- lib/generators/set/templates/set_spec_template.erb
|
733
733
|
- lib/generators/set/templates/set_template.erb
|
734
|
+
- mod/core/config/locales/de.yml
|
735
|
+
- mod/core/config/locales/en.yml
|
734
736
|
- mod/core/data/fixtures/real/card_actions.yml
|
735
737
|
- mod/core/data/fixtures/real/card_acts.yml
|
736
738
|
- mod/core/data/fixtures/real/card_changes.yml
|
@@ -746,13 +748,9 @@ files:
|
|
746
748
|
- mod/core/data/test/sample.yml
|
747
749
|
- mod/core/data/test/user.yml
|
748
750
|
- mod/core/lib/tasks/card.rake
|
749
|
-
- mod/core/lib/tasks/card/assets.rake
|
750
|
-
- mod/core/lib/tasks/card/create.rake
|
751
751
|
- mod/core/lib/tasks/card/migrate.rake
|
752
752
|
- mod/core/lib/tasks/card/mod.rake
|
753
753
|
- mod/core/lib/tasks/card/seed.rake
|
754
|
-
- mod/core/locales/de.yml
|
755
|
-
- mod/core/locales/en.yml
|
756
754
|
- mod/core/set/all/admin.rb
|
757
755
|
- mod/core/set/all/assign_attributes.rb
|
758
756
|
- mod/core/set/all/autoname.rb
|
@@ -1,17 +0,0 @@
|
|
1
|
-
namespace :card do
|
2
|
-
namespace :assets do
|
3
|
-
task refresh: :environment do
|
4
|
-
Card::Assets.refresh force: true
|
5
|
-
end
|
6
|
-
|
7
|
-
task code: :environment do
|
8
|
-
Cardio.config.compress_assets = true
|
9
|
-
Card::Cache.reset_all
|
10
|
-
Card::Assets.make_output_coded
|
11
|
-
end
|
12
|
-
|
13
|
-
task wipe: :environment do
|
14
|
-
Card::Assets.wipe
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|