card 1.108.1 → 1.109.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 +4 -4
- data/VERSION +1 -1
- data/config/environments/development.rb +1 -1
- data/config/environments/production.rb +5 -2
- data/config/initializers/01_core_extensions/array.rb +1 -0
- data/config/initializers/01_core_extensions/hash.rb +4 -0
- data/config/initializers/02_patches/active_record.rb +1 -1
- data/config/initializers/core_extensions.rb +0 -1
- data/config/initializers/deck_config.rb +3 -3
- data/config/initializers/patches.rb +6 -6
- data/lib/card/auth/current.rb +8 -6
- data/lib/card/auth.rb +7 -6
- data/lib/card/cache/class_methods.rb +2 -4
- data/lib/card/cache/shared.rb +1 -1
- data/lib/card/cache/temporary.rb +2 -2
- data/lib/card/codename.rb +0 -1
- data/lib/card/content/chunk/abstract.rb +1 -0
- data/lib/card/content/chunk.rb +0 -1
- data/lib/card/content/clean.rb +4 -2
- data/lib/card/content/diff/l_c_s.rb +1 -2
- data/lib/card/content/diff/result.rb +2 -1
- data/lib/card/content/diff.rb +2 -1
- data/lib/card/content/parser.rb +8 -7
- data/lib/card/content.rb +1 -1
- data/lib/card/director/subdirector_array.rb +1 -0
- data/lib/card/director.rb +1 -1
- data/lib/card/dirty/method_factory.rb +1 -0
- data/lib/card/env/location.rb +3 -3
- data/lib/card/env/location_history.rb +12 -11
- data/lib/card/env/success/target.rb +4 -4
- data/lib/card/env/support.rb +24 -2
- data/lib/card/error.rb +1 -0
- data/lib/card/fetch/store.rb +1 -1
- data/lib/card/format/error.rb +1 -0
- data/lib/card/format/method_delegation.rb +6 -4
- data/lib/card/format/registration.rb +5 -3
- data/lib/card/format/wrapper.rb +1 -0
- data/lib/card/mailer.rb +1 -14
- data/lib/card/name/all/parts.rb +1 -1
- data/lib/card/name/all.rb +1 -0
- data/lib/card/name/name_variants.rb +1 -0
- data/lib/card/query/abstract_query/query_helper.rb +1 -2
- data/lib/card/query/abstract_query/tie.rb +1 -1
- data/lib/card/query/abstract_query.rb +3 -3
- data/lib/card/query/card_class.rb +1 -0
- data/lib/card/query/clause.rb +1 -0
- data/lib/card/query/join.rb +3 -3
- data/lib/card/reference/all.rb +6 -7
- data/lib/card/rule/cache.rb +1 -0
- data/lib/card/rule/preference_cache.rb +2 -0
- data/lib/card/rule/read_rule_cache.rb +3 -0
- data/lib/card/set/event/all.rb +6 -4
- data/lib/card/set/event/callbacks.rb +1 -0
- data/lib/card/set/event/options.rb +3 -2
- data/lib/card/set/event/skip_and_trigger.rb +1 -1
- data/lib/card/set/event.rb +2 -2
- data/lib/card/set/format/abstract_format/view_definition.rb +1 -1
- data/lib/card/set/format/haml_paths.rb +1 -1
- data/lib/card/set/format.rb +4 -4
- data/lib/card/set/helpers.rb +4 -4
- data/lib/card/set/i18n_scanner.rb +23 -22
- data/lib/card/set/i18n_scope.rb +4 -3
- data/lib/card/set/pattern/all.rb +1 -1
- data/lib/card/set/pattern/base.rb +6 -3
- data/lib/card/set/pattern/class_methods.rb +1 -1
- data/lib/card/set/pattern.rb +1 -1
- data/lib/card/set/required_field.rb +3 -0
- data/lib/card/set/trait.rb +6 -1
- data/lib/card/subcards/all.rb +12 -4
- data/lib/card/view/cache/cache_action.rb +1 -1
- data/lib/card/view/cache.rb +1 -1
- data/lib/card/view/classy.rb +5 -5
- data/lib/card/view/options/key_lists.rb +1 -0
- data/lib/card/view/options/voo_api.rb +1 -1
- data/lib/cardio/command/application.rb +1 -1
- data/lib/cardio/command/custom.rb +7 -6
- data/lib/cardio/command/rake_command.rb +3 -2
- data/lib/cardio/command/rspec_command.rb +1 -0
- data/lib/cardio/generators/deck_generator_loader.rb +1 -1
- data/lib/cardio/generators.rb +4 -3
- data/lib/cardio/migration/port.rb +2 -0
- data/lib/cardio/migration/stamp.rb +1 -0
- data/lib/cardio/migration/transform.rb +1 -0
- data/lib/cardio/migration.rb +2 -0
- data/lib/cardio/mod/class_methods.rb +1 -2
- data/lib/cardio/mod/dirs.rb +2 -4
- data/lib/cardio/mod/eat/edibles.rb +8 -6
- data/lib/cardio/mod/eat.rb +6 -5
- data/lib/cardio/mod/load_strategy/set_binding_magic.rb +1 -1
- data/lib/cardio/mod/load_strategy/tmp_files.rb +3 -2
- data/lib/cardio/mod/load_strategy.rb +1 -0
- data/lib/cardio/mod/loader/set_pattern_loader.rb +4 -0
- data/lib/cardio/mod/loader/set_template.rb +14 -4
- data/lib/cardio/mod/loader.rb +2 -2
- data/lib/cardio/mod/sow/card_source.rb +1 -1
- data/lib/cardio/mod/sow/remote_source.rb +32 -0
- data/lib/cardio/mod/sow.rb +10 -10
- data/lib/cardio/railtie.rb +1 -0
- data/lib/cardio/script_loader.rb +1 -1
- data/lib/cardio/seed.rb +1 -1
- data/lib/cardio/utils.rb +1 -1
- data/lib/cardio/version.rb +2 -1
- data/lib/cardio.rb +3 -0
- data/lib/generators/deck/templates/config.ru.erb +1 -1
- data/mod/core/config/locales/en.yml +1 -0
- data/mod/core/data/schema/20141001105348_move_revisions_to_actions.rb +2 -2
- data/mod/core/data/schema/20241017160402_unique_codename.rb +8 -0
- data/mod/core/data/transform/20150724123438_update_file_and_image_cards.rb +1 -1
- data/mod/core/lib/tasks/card/export.rake +28 -0
- data/mod/core/lib/tasks/card/migrate.rake +3 -3
- data/mod/core/lib/tasks/card/seed.rake +2 -1
- data/mod/core/lib/tasks/card.rake +47 -16
- data/mod/core/set/all/admin.rb +1 -2
- data/mod/core/set/all/assign_attributes.rb +3 -2
- data/mod/core/set/all/codename.rb +7 -0
- data/mod/core/set/all/debug.rb +3 -3
- data/mod/core/set/all/initialize.rb +1 -0
- data/mod/core/set/all/states.rb +7 -6
- data/mod/core/set/all/type.rb +2 -0
- data/mod/core/set/all/utils.rb +0 -1
- data/mod/core/set/self/admin.rb +2 -1
- data/mod/core/set/self/autoname.rb +1 -1
- data/mod/core/set/self/mod.rb +4 -4
- data/mod/core/set/self/trash.rb +1 -1
- data/mod/core/set/type/mod.rb +18 -15
- data/mod/core/set_pattern/09_self.rb +4 -0
- data/mod/core/spec/set/all/trash_spec.rb +7 -7
- metadata +42 -29
data/lib/card/mailer.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
require "open-uri"
|
4
4
|
|
5
5
|
class Card
|
6
|
+
# extends ActionMailer with card config
|
6
7
|
class Mailer < ActionMailer::Base
|
7
8
|
class << self
|
8
9
|
def new_mail *args, &block
|
@@ -14,20 +15,6 @@ class Card
|
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
17
|
-
def layout message
|
18
|
-
<<-HTML
|
19
|
-
<!DOCTYPE html>
|
20
|
-
<html>
|
21
|
-
<head>
|
22
|
-
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>
|
23
|
-
</head>
|
24
|
-
<body>
|
25
|
-
#{message}
|
26
|
-
</body>
|
27
|
-
</html>
|
28
|
-
HTML
|
29
|
-
end
|
30
|
-
|
31
18
|
def defaults_from_config
|
32
19
|
(Card.config.email_defaults || {}).symbolize_keys.tap do |defaults|
|
33
20
|
defaults[:return_path] ||= defaults[:from] if defaults[:from]
|
data/lib/card/name/all/parts.rb
CHANGED
@@ -5,7 +5,7 @@ class Card
|
|
5
5
|
module Parts
|
6
6
|
def left *args
|
7
7
|
case
|
8
|
-
when simple?
|
8
|
+
when simple? then nil
|
9
9
|
when superleft then superleft
|
10
10
|
when name_is_changing? && name.to_name.trunk_name == name_before_act.to_name
|
11
11
|
nil # prevent recursion when, eg, renaming A+B to A+B+C
|
data/lib/card/name/all.rb
CHANGED
data/lib/card/query/clause.rb
CHANGED
data/lib/card/query/join.rb
CHANGED
data/lib/card/reference/all.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
class Card
|
2
2
|
class Reference < Cardio::Record
|
3
|
-
|
4
|
-
# frozen_string_literal: true
|
5
|
-
|
6
|
-
# Cards can refer to other cards in their content, eg via links and nests.
|
7
|
-
# The card that refers is the "referer", the card that is referred to is
|
8
|
-
# the "referee". The reference itself has its own class (Card::Reference),
|
9
|
-
# which handles id-based reference tracking.
|
3
|
+
# frozen_string_literal: true
|
10
4
|
|
5
|
+
# Cards can refer to other cards in their content, eg via links and nests.
|
6
|
+
# The card that refers is the "referer", the card that is referred to is
|
7
|
+
# the "referee". The reference itself has its own class (Card::Reference),
|
8
|
+
# which handles id-based reference tracking.
|
9
|
+
module All
|
11
10
|
PARTIAL_REF_CODE = "P".freeze
|
12
11
|
|
13
12
|
# cards that refer to self
|
data/lib/card/rule/cache.rb
CHANGED
data/lib/card/set/event/all.rb
CHANGED
@@ -14,7 +14,9 @@ class Card
|
|
14
14
|
include SkipAndTrigger
|
15
15
|
|
16
16
|
def event_applies? event
|
17
|
-
|
17
|
+
unless set_condition_applies? event.set_module, event.opts[:changing]
|
18
|
+
return false
|
19
|
+
end
|
18
20
|
|
19
21
|
CONDITIONS.all? { |c| send "#{c}_condition_applies?", event, event.opts[c] }
|
20
22
|
end
|
@@ -91,10 +93,10 @@ class Card
|
|
91
93
|
def wrong_stage opts
|
92
94
|
return false if director.stage_ok? opts
|
93
95
|
|
94
|
-
if
|
95
|
-
"phase method #{method} called outside of event phases"
|
96
|
-
else
|
96
|
+
if stage
|
97
97
|
"#{opts.inspect} method #{method} called in stage #{stage}"
|
98
|
+
else
|
99
|
+
"phase method #{method} called outside of event phases"
|
98
100
|
end
|
99
101
|
end
|
100
102
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
class Card
|
2
2
|
module Set
|
3
3
|
class Event
|
4
|
+
# handle options available for event definition
|
4
5
|
module Options
|
5
6
|
def validate_conditions
|
6
7
|
@opts.each do |key, val|
|
@@ -32,8 +33,8 @@ class Card
|
|
32
33
|
return if invalid.empty?
|
33
34
|
|
34
35
|
raise ArgumentError,
|
35
|
-
"invalid option#{'s' if invalid.size > 1} '#{invalid}' "\
|
36
|
-
|
36
|
+
"invalid option#{'s' if invalid.size > 1} '#{invalid}' " \
|
37
|
+
"for condition '#{condition}' in event '#{@event}'"
|
37
38
|
end
|
38
39
|
|
39
40
|
def invalid_condition_values condition, val
|
@@ -7,7 +7,7 @@ class Card
|
|
7
7
|
:skip, # [Array] skip event(s) for all cards in act
|
8
8
|
:skip_in_action, # [Array] skip event for just this card
|
9
9
|
:trigger, # [Array] trigger event(s) for all cards in act
|
10
|
-
:trigger_in_action
|
10
|
+
:trigger_in_action # [Array] trigger event for just this card
|
11
11
|
]
|
12
12
|
attr_reader(*settings)
|
13
13
|
|
data/lib/card/set/event.rb
CHANGED
@@ -165,8 +165,8 @@ class Card
|
|
165
165
|
end
|
166
166
|
|
167
167
|
# one failed integration event should not harm others.
|
168
|
-
def rescuing_integration
|
169
|
-
Error.rescue_card(self)
|
168
|
+
def rescuing_integration &block
|
169
|
+
Error.rescue_card(self, &block)
|
170
170
|
ensure
|
171
171
|
true
|
172
172
|
end
|
data/lib/card/set/format.rb
CHANGED
@@ -103,14 +103,14 @@ class Card
|
|
103
103
|
|
104
104
|
# shortcut for {AbstractFormat#view} for when #view is called outside of a format
|
105
105
|
# block
|
106
|
-
def view
|
107
|
-
format { view(
|
106
|
+
def view(...)
|
107
|
+
format { view(...) }
|
108
108
|
end
|
109
109
|
|
110
110
|
# shortcut for {AbstractFormat#before} for when #before is called outside of a
|
111
111
|
# format block
|
112
|
-
def before
|
113
|
-
format { before
|
112
|
+
def before(...)
|
113
|
+
format { before(...) }
|
114
114
|
end
|
115
115
|
|
116
116
|
private
|
data/lib/card/set/helpers.rb
CHANGED
@@ -10,7 +10,7 @@ class Card
|
|
10
10
|
# Card::Set::Type::User
|
11
11
|
def shortname
|
12
12
|
first = 2 # shortname eliminates Card::Set
|
13
|
-
last = first + num_set_parts
|
13
|
+
last = pattern_code == :self ? -1 : (first + num_set_parts)
|
14
14
|
set_name_parts[first..last].join "::"
|
15
15
|
end
|
16
16
|
|
@@ -88,7 +88,7 @@ class Card
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def test_set
|
91
|
-
# rubocop:disable
|
91
|
+
# rubocop:disable Security/Eval
|
92
92
|
::Card::Set::Self.const_remove_if_defined :TestSet
|
93
93
|
eval <<-RUBY, binding, __FILE__, __LINE__ + 1
|
94
94
|
class ::Card::Set::Self
|
@@ -99,7 +99,7 @@ class Card
|
|
99
99
|
end
|
100
100
|
RUBY
|
101
101
|
::Card::Set::Self::TestSet
|
102
|
-
# rubocop:enable
|
102
|
+
# rubocop:enable Security/Eval
|
103
103
|
end
|
104
104
|
|
105
105
|
def base_format_modules?
|
@@ -115,7 +115,7 @@ class Card
|
|
115
115
|
Card::Set.modules[set_format_type_key][format_class][shortname] || []
|
116
116
|
end
|
117
117
|
|
118
|
-
def num_set_parts
|
118
|
+
def num_set_parts
|
119
119
|
return 1 if pattern_code == :abstract
|
120
120
|
|
121
121
|
Pattern.find(pattern_code).anchor_parts_count
|
@@ -1,23 +1,24 @@
|
|
1
1
|
# lib/my_custom_scanner.rb
|
2
|
-
require "i18n/tasks/scanners/file_scanner"
|
3
|
-
class Card
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
2
|
+
# require "i18n/tasks/scanners/file_scanner"
|
3
|
+
# class Card
|
4
|
+
# module Set
|
5
|
+
# class I18nScanner < ::I18n::Tasks::Scanners::FileScanner
|
6
|
+
# include ::I18n::Tasks::Scanners::RelativeKeys
|
7
|
+
# include ::I18n::Tasks::Scanners::OccurrenceFromPosition
|
8
|
+
#
|
9
|
+
# # @return [Array<[absolute key, Results::Occurrence]>]
|
10
|
+
# def scan_file path
|
11
|
+
# text = read_file(path)
|
12
|
+
#
|
13
|
+
# # tr()
|
14
|
+
# text.scan(/[^\w._-]tr[( ]\s*["':](\w+)/).map do |_match|
|
15
|
+
# occurrence = occurrence_from_position(
|
16
|
+
# path, text, Regexp.last_match.offset(0).first
|
17
|
+
# )
|
18
|
+
# [absolute_key(".#{_match[0]}", path), occurrence]
|
19
|
+
# end
|
20
|
+
# end
|
21
|
+
# end
|
22
|
+
# ::I18n::Tasks.add_scanner "Card::Set::I18nScanner"
|
23
|
+
# end
|
24
|
+
# end
|
data/lib/card/set/i18n_scope.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
class Card
|
2
2
|
module Set
|
3
|
+
# Adapt Internationalization(i18n) scope handling to infer mod prefixes.
|
3
4
|
module I18nScope
|
4
5
|
delegate :tmp_files?, to: Cardio::Mod::LoadStrategy
|
5
6
|
|
@@ -22,7 +23,7 @@ class Card
|
|
22
23
|
|
23
24
|
def set_from_parts parts, index
|
24
25
|
start_index = index + (tmp_files? ? 2 : 1)
|
25
|
-
parts[start_index
|
26
|
+
parts[start_index..].join "."
|
26
27
|
end
|
27
28
|
|
28
29
|
def mod_from_parts parts, set_index
|
@@ -55,7 +56,7 @@ class Card
|
|
55
56
|
# this method returns ["core", "all", "event"]
|
56
57
|
# def set_path_parts backtrace
|
57
58
|
# parts = path_parts backtrace
|
58
|
-
# res = parts[path_mod_index(parts)
|
59
|
+
# res = parts[path_mod_index(parts)..]
|
59
60
|
# res.delete_at 1
|
60
61
|
# end
|
61
62
|
|
@@ -65,7 +66,7 @@ class Card
|
|
65
66
|
# this method returns ["core", "all", "event"]
|
66
67
|
# def tmp_set_path_parts backtrace
|
67
68
|
# path_parts = find_tmp_set_path(backtrace).split(File::SEPARATOR)
|
68
|
-
# res = path_parts[tmp_path_mod_index(path_parts)
|
69
|
+
# res = path_parts[tmp_path_mod_index(path_parts)..]
|
69
70
|
# res[0] = mod_name_from_tmp_dir res.first
|
70
71
|
# res[-1] = res.last.split(".").first
|
71
72
|
# res
|
data/lib/card/set/pattern/all.rb
CHANGED
@@ -4,8 +4,7 @@ class Card
|
|
4
4
|
# class from which set patterns inherit
|
5
5
|
class Base
|
6
6
|
extend ClassMethods
|
7
|
-
delegate :pattern_code, :pattern, :anchorless?, :
|
8
|
-
:assigns_type, to: :class
|
7
|
+
delegate :pattern_code, :pattern, :anchorless?, :assigns_type, to: :class
|
9
8
|
|
10
9
|
def initialize card
|
11
10
|
return if anchorless?
|
@@ -43,6 +42,10 @@ class Card
|
|
43
42
|
end
|
44
43
|
end
|
45
44
|
|
45
|
+
def anchor_parts_count
|
46
|
+
@anchor_parts_count ||= self.class.anchor_parts_count @anchor_name
|
47
|
+
end
|
48
|
+
|
46
49
|
def anchor_parts
|
47
50
|
return [@anchor_name] unless anchor_parts_count > 1
|
48
51
|
|
@@ -51,7 +54,7 @@ class Card
|
|
51
54
|
parts
|
52
55
|
else
|
53
56
|
# handles cases where anchor is a compound card, eg A+B+*self
|
54
|
-
[@anchor_name[0..-anchor_parts_count]] + parts[(-anchor_parts_count + 1)
|
57
|
+
[@anchor_name[0..-anchor_parts_count]] + parts[(-anchor_parts_count + 1)..]
|
55
58
|
end
|
56
59
|
end
|
57
60
|
|
data/lib/card/set/pattern.rb
CHANGED
data/lib/card/set/trait.rb
CHANGED
@@ -53,6 +53,7 @@ class Card
|
|
53
53
|
|
54
54
|
def assign_trait_type trait, type
|
55
55
|
return unless type && (parts = trait_module_key_parts trait)
|
56
|
+
|
56
57
|
assign_type type, normalize_const(parts)
|
57
58
|
end
|
58
59
|
|
@@ -71,7 +72,11 @@ class Card
|
|
71
72
|
end
|
72
73
|
|
73
74
|
def define_trait_card trait, opts
|
74
|
-
define_method "#{trait}_card" do
|
75
|
+
define_method "#{trait}_card" do |sub=false|
|
76
|
+
if sub && (card = subfield trait)
|
77
|
+
return card
|
78
|
+
end
|
79
|
+
|
75
80
|
# opts = opts.clone.merge supercard: card
|
76
81
|
fetch trait.to_sym, new: opts.clone, eager_cache: true
|
77
82
|
end
|
data/lib/card/subcards/all.rb
CHANGED
@@ -30,7 +30,7 @@ class Card
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def field field_name, args={}
|
33
|
-
if (sf =
|
33
|
+
if (sf = subfield field_name)
|
34
34
|
sf.assign_attributes args
|
35
35
|
sf
|
36
36
|
else
|
@@ -39,11 +39,19 @@ class Card
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def field_content field_name
|
42
|
-
|
42
|
+
subfield(field_name)&.content
|
43
43
|
end
|
44
44
|
|
45
|
-
def
|
46
|
-
|
45
|
+
def subfield field_name
|
46
|
+
subcards.field field_name
|
47
|
+
end
|
48
|
+
|
49
|
+
def subfield? field_name
|
50
|
+
subfield(field_name).present?
|
51
|
+
end
|
52
|
+
|
53
|
+
def field? field_name
|
54
|
+
fetch(field_name) || subfield?(field_name)
|
47
55
|
end
|
48
56
|
|
49
57
|
def drop_subcard name_or_card
|
@@ -89,7 +89,7 @@ class Card
|
|
89
89
|
return true if caching == :deep || parent.present?
|
90
90
|
# a parent voo means we're still in the same card
|
91
91
|
|
92
|
-
return unless (superformat_card = format.parent&.card)
|
92
|
+
return false unless (superformat_card = format.parent&.card)
|
93
93
|
|
94
94
|
superformat_card.name == card.name.left_name
|
95
95
|
end
|
data/lib/card/view/cache.rb
CHANGED
data/lib/card/view/classy.rb
CHANGED
@@ -120,18 +120,18 @@ class Card
|
|
120
120
|
[classes, class_list(:single_use).delete(klass)]
|
121
121
|
end
|
122
122
|
|
123
|
+
OK_TYPES = { ancestor_format: [:public],
|
124
|
+
self_format: %i[public format_private],
|
125
|
+
self: %i[public format_private private] }.freeze
|
123
126
|
def ok_types space
|
124
|
-
|
125
|
-
when :ancestor_format then [:public]
|
126
|
-
when :self_format then %i[public format_private]
|
127
|
-
when :self then %i[public format_private private]
|
128
|
-
end
|
127
|
+
OK_TYPES[space]
|
129
128
|
end
|
130
129
|
|
131
130
|
def class_list type=:private
|
132
131
|
unless type.in? %i[private format_private public single_use]
|
133
132
|
raise ArgumentError, "#{type} not a valid class list"
|
134
133
|
end
|
134
|
+
|
135
135
|
@class_list ||= {}
|
136
136
|
@class_list[type] ||= {}
|
137
137
|
end
|
@@ -197,7 +197,7 @@ class Card
|
|
197
197
|
# @param opts [Hash] options hash
|
198
198
|
# @return [Hash] options Hash
|
199
199
|
def foreign_options_in opts
|
200
|
-
foreign_opts = opts.
|
200
|
+
foreign_opts = opts.except(*Options.all_keys)
|
201
201
|
foreign_opts.empty? ? nil : foreign_opts
|
202
202
|
end
|
203
203
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require "rails/generators"
|
2
|
-
require File.expand_path("
|
2
|
+
require File.expand_path("../../generators/deck/deck_generator", __dir__)
|
3
3
|
require "cardio/command"
|
4
4
|
|
5
5
|
Cardio::Command.run_non_deck_command ARGV.first, "cardio/commands"
|
@@ -8,14 +8,14 @@ module Cardio
|
|
8
8
|
private
|
9
9
|
|
10
10
|
def run_new
|
11
|
-
if
|
12
|
-
ARGV.unshift "new"
|
13
|
-
require "cardio/command/application"
|
14
|
-
else
|
11
|
+
if ["-h", "--help"].intersection(args).empty?
|
15
12
|
puts "Can't initialize a new deck within the directory of another, " \
|
16
13
|
"please change to a non-deck directory first.\n"
|
17
14
|
puts "Type '#{gem}' for help."
|
18
15
|
exit 1
|
16
|
+
else
|
17
|
+
ARGV.unshift "new"
|
18
|
+
require "cardio/command/application"
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -46,9 +46,10 @@ module Cardio
|
|
46
46
|
|
47
47
|
def run_help_for_group group
|
48
48
|
puts
|
49
|
-
puts "For "
|
49
|
+
puts "For #{"#{group}s".yellow}:"
|
50
50
|
map.each do |command, conf|
|
51
51
|
next unless conf[:group] == group
|
52
|
+
|
52
53
|
puts command_help(command, conf)
|
53
54
|
end
|
54
55
|
puts
|
@@ -57,7 +58,7 @@ module Cardio
|
|
57
58
|
# formats command string for help text
|
58
59
|
def command_help command, conf
|
59
60
|
alt = conf[:alias] ? "(or #{conf[:alias]})" : ""
|
60
|
-
"
|
61
|
+
" #{command.to_s.ljust(12).light_cyan}#{alt.ljust(10)}#{conf[:desc]}"
|
61
62
|
end
|
62
63
|
end
|
63
64
|
end
|