ariadne_view_components 0.0.44-x86_64-linux → 0.0.46-x86_64-linux

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
  SHA256:
3
- metadata.gz: 25f526fcbe94fc0acc726cfbbe0f7ed2a34f72fdcab459e979eedf2a5ab35317
4
- data.tar.gz: 891bf24d1595018b2251ebcd8b24e873be4323c14b00c878fe4b4d60af6bcd38
3
+ metadata.gz: 1d90424762e811b06f46cd8b3b8e36ebce3556e770143a916cf3363ad853634c
4
+ data.tar.gz: fbacf104eb509a9adc089edde954c90983961f694197c58ed8fdf5b878f97e29
5
5
  SHA512:
6
- metadata.gz: 7bf5e9e3721261388ff74f617b7765a86972f6f9a9402f2ecf7be62ef93a80955fff10bbc5f682a79d6afc39ffb00f88ca4576ec0842740267a4f8ecea73f714
7
- data.tar.gz: 1e20d90e850f132c000a4351f4bdc32afe854e21759f251c86383b883bcbc49b4a3cfdaeee32d946241b66a7f711cf166ed4d5f7035c87f62479311c0d76449a
6
+ metadata.gz: aaa0d6641eeb3ff812a55d0c1e65af3cff80706a7df17491e049d31e14cb2daa2eb63cdd2fd2045a5c667bcc23f8180b56df5e9f1dd65cced2b2f9b63f215620
7
+ data.tar.gz: 9f846feec836db2b3340206de70a885d8c540543757a056886730c002dc558bccadf27a0b6c7224322b63e1c9d278f2bfd05254d3abe99f8c873fba99fa81397
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.0.45](https://github.com/yettoapp/ariadne/tree/v0.0.45) (2023-05-04)
4
+
5
+ [Full Changelog](https://github.com/yettoapp/ariadne/compare/v0.0.44...v0.0.45)
6
+
7
+ ## [v0.0.44](https://github.com/yettoapp/ariadne/tree/v0.0.44) (2023-05-04)
8
+
9
+ [Full Changelog](https://github.com/yettoapp/ariadne/compare/v0.0.43...v0.0.44)
10
+
11
+ **Merged pull requests:**
12
+
13
+ - build\(deps-dev\): bump @typescript-eslint/eslint-plugin from 5.59.1 to 5.59.2 [\#298](https://github.com/yettoapp/ariadne/pull/298) ([dependabot[bot]](https://github.com/apps/dependabot))
14
+ - \[auto-browserslist\] Update Browserslist db [\#296](https://github.com/yettoapp/ariadne/pull/296) ([sisyphusbot](https://github.com/sisyphusbot))
15
+
3
16
  ## [v0.0.43](https://github.com/yettoapp/ariadne/tree/v0.0.43) (2023-05-02)
4
17
 
5
18
  [Full Changelog](https://github.com/yettoapp/ariadne/compare/v0.0.42...v0.0.43)
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ariadne
4
+ module ActionViewExtensions
5
+ # :nodoc:
6
+ module FormHelper
7
+ include ClassNameHelper
8
+
9
+ DEFAULT_FORM_CLASSES = "ariadne-space-y-8 sm:ariadne-space-y-5"
10
+ def ariadne_form_with(model: nil, scope: nil, url: nil, format: nil, classes: "", attributes: {}, **options, &block)
11
+ options[:class] = merge_class_names(DEFAULT_FORM_CLASSES, options[:class])
12
+ options[:builder] ||= Ariadne::FormBuilder
13
+ options[:html] = attributes
14
+
15
+ data_controller = options[:html].fetch(:"data-controller", "")
16
+ options[:html][:"data-controller"] = if data_controller.present?
17
+ "#{data_controller} ariadne-form"
18
+ else
19
+ "ariadne-form"
20
+ end
21
+
22
+ form_with(model: model, scope: scope, url: url, format: format, **options, &block)
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ ActiveSupport.on_load(:action_view) do
29
+ include Ariadne::ActionViewExtensions::FormHelper
30
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/concern"
4
+
5
+ module Ariadne
6
+ # :nodoc:
7
+ module Audited
8
+ # DSL to register when a component has passed an accessibility audit.
9
+ #
10
+ # Example:
11
+ #
12
+ # class MyComponent < ViewComponent::Base
13
+ # include Ariadne::Audited::Dsl
14
+ # audited_at 'YYYY-MM-DD'
15
+ # end
16
+ module Dsl
17
+ extend ActiveSupport::Concern
18
+
19
+ included do
20
+ class_attribute :audit_date, instance_writer: false
21
+ end
22
+
23
+ class_methods do
24
+ def audited_at(date = nil)
25
+ return audit_date if date.nil?
26
+
27
+ self.audit_date = date
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Helps build a list of conditional class names
4
+ module Ariadne
5
+ # :nodoc:
6
+ module ClassNameHelper
7
+ def merge_class_names(*args)
8
+ [].tap do |classes|
9
+ args.each do |class_name|
10
+ next if class_name.blank?
11
+
12
+ case class_name
13
+ when String
14
+ classes << class_name
15
+ else
16
+ raise ArgumentError, "Expected String class name, got #{class_name.class}"
17
+ end
18
+ end
19
+ end.join(" ")
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Ariadne::FetchOrFallbackHelper
4
+ # A little helper to enable graceful fallbacks
5
+ #
6
+ # Use this helper to quietly ensure a value is
7
+ # one that you expect:
8
+ #
9
+ # allowed_values - allowed options for *value*
10
+ # given_value - input being coerced
11
+ # fallback - returned if *given_value* is not included in *allowed_values*
12
+ #
13
+ # fetch_or_raise([1,2,3], 5) => 2
14
+ # fetch_or_raise([1,2,3], 1) => 1
15
+ # fetch_or_raise([1,2,3], nil) => 2
16
+ module Ariadne
17
+ # :nodoc:
18
+ module FetchOrFallbackHelper
19
+ include LoggerHelper
20
+
21
+ mattr_accessor :fallback_raises, default: true
22
+
23
+ InvalidValueError = Class.new(StandardError)
24
+
25
+ TRUE_OR_FALSE = Set.new([true, false]).freeze
26
+
27
+ INTEGER_TYPES = Set.new(["Integer"]).freeze
28
+
29
+ def fetch_or_raise(allowed_values, given_value, against: nil)
30
+ if !allowed_values.is_a?(Array) && !allowed_values.is_a?(Set)
31
+ raise ArgumentError, "allowed_values must be an array or a set; it was #{allowed_values.class}"
32
+ end
33
+
34
+ check_against_given_value = against || given_value
35
+ if allowed_values.include?(check_against_given_value)
36
+ given_value
37
+ else
38
+ raise InvalidValueError, <<~MSG
39
+ fetch_or_raise was called with an invalid value.
40
+
41
+ Expected one of: #{allowed_values.inspect}
42
+ Got: #{given_value.inspect}
43
+ MSG
44
+ end
45
+ end
46
+
47
+ # TODO: use these two more
48
+ def fetch_or_raise_boolean(given_value)
49
+ fetch_or_raise(TRUE_OR_FALSE, given_value)
50
+ end
51
+
52
+ def fetch_or_raise_integer(given_value)
53
+ fetch_or_raise(INTEGER_TYPES, given_value, against: given_value.class.name)
54
+ end
55
+
56
+ # TODO: test this
57
+ def check_incoming_tag(preferred_tag, given_tag)
58
+ return preferred_tag if given_tag.blank? || preferred_tag == given_tag
59
+
60
+ unless silence_warnings?
61
+ message = <<~MSG
62
+ Ariadne: note that `#{preferred_tag}` is the preferred tag here;
63
+ you passed `#{given_tag}` (which will still be used)
64
+ MSG
65
+
66
+ logger.warn(message)
67
+ end
68
+
69
+ given_tag
70
+ end
71
+
72
+ # TODO: test this
73
+ def check_incoming_attribute(preferred_attribute, given_attribute)
74
+ return preferred_attribute if given_attribute.blank? || preferred_attribute != given_attribute
75
+
76
+ unless silence_warnings?
77
+ message = <<~MSG
78
+ Ariadne: note that `#{preferred_attribute}` is the preferred attribute here;
79
+ you passed `#{given_attribute}` (which will still be used)
80
+ MSG
81
+
82
+ logger.warn(message)
83
+ end
84
+
85
+ given_attribute
86
+ end
87
+
88
+ # TODO: test this
89
+ def check_incoming_value(preferred_value, given_pair)
90
+ return preferred_value if given_pair.blank? || !given_pair.is_a?(Hash)
91
+
92
+ given_key = given_pair.keys.first
93
+ given_value = given_pair.values.first
94
+
95
+ return preferred_value if given_value.blank?
96
+
97
+ unless silence_warnings?
98
+
99
+ message = <<~MSG
100
+ Ariadne: note that `#{preferred_value}` is the preferred value for `#{given_key}` here;
101
+ you passed `#{given_value}` (which will still be used)
102
+ MSG
103
+
104
+ logger.warn(message)
105
+ end
106
+
107
+ given_value
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ariadne
4
+ # :nodoc:
5
+ # Many of the form methods simply call out to the corresponding ActionView::Helpers::FormBuilder methods,
6
+ # documented at https://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html, with
7
+ # default Tailwind classes applied.
8
+ class FormBuilder < ActionView::Helpers::FormBuilder
9
+ include ClassNameHelper
10
+
11
+ DEFAULT_SECTION_CLASSES = "ariadne-space-y-6 ariadne-px-4"
12
+ def section(classes: "", attributes: {}, &block)
13
+ actual_classes = merge_class_names(DEFAULT_SECTION_CLASSES, classes)
14
+ options = { class: actual_classes, **attributes }
15
+ @template.content_tag(:div, **options, &block)
16
+ end
17
+
18
+ DEFAULT_SECTION_HEADING_CLASSES = "ariadne-text-lg ariadne-leading-6 ariadne-py-4 ariadne-font-medium ariadne-text-gray-900"
19
+ def heading(tag: :h3, classes: "", attributes: {}, &block)
20
+ actual_classes = merge_class_names(DEFAULT_SECTION_HEADING_CLASSES, classes)
21
+ options = { class: actual_classes, **attributes }
22
+ @template.content_tag(tag, **options, &block)
23
+ end
24
+
25
+ DEFAULT_SECTION_SUBHEADING_CLASSES = "ariadne-mt-1 ariadne-max-w-2xl ariadne-text-sm ariadne-text-gray-500"
26
+ def subheading(classes: "", attributes: {}, &block)
27
+ actual_classes = merge_class_names(DEFAULT_SECTION_SUBHEADING_CLASSES, classes)
28
+ options = { class: actual_classes, **attributes }
29
+ @template.content_tag(:p, **options, &block)
30
+ end
31
+
32
+ DEFAULT_LABEL_CLASSES = "ariadne-block ariadne-text-sm ariadne-font-medium ariadne-text-gray-700 ariadne-pl-2"
33
+ def label(method, text = nil, options = {}, &block)
34
+ options[:class] = merge_class_names(DEFAULT_LABEL_CLASSES, options.delete(:classes))
35
+ super(method, text, options, &block)
36
+ end
37
+
38
+ DEFAULT_TEXT_CLASSES = "ariadne-shadow-sm focus:ariadne-ring-slate-500 focus:ariadne-border-slate-500 ariadne-block ariadne-w-full sm:ariadne-text-sm ariadne-border-gray-300 ariadne-rounded-md"
39
+ def text_field(method, options = {})
40
+ options[:class] = merge_class_names(DEFAULT_TEXT_CLASSES, options.delete(:classes))
41
+ super(method, **options)
42
+ end
43
+
44
+ DEFAULT_CHECKBOX_CLASSES = "focus:ariadne-ring-slate-500 ariadne-h-4 ariadne-w-4 ariadne-text-slate-600 ariadne-border-slate-300 ariadne-rounded"
45
+ def check_box(method, options = {}, checked_value = "1", unchecked_value = "0")
46
+ options[:class] = merge_class_names(DEFAULT_CHECKBOX_CLASSES, options.delete(:classes))
47
+ super(method, options, checked_value, unchecked_value)
48
+ end
49
+
50
+ DEFAULT_RADIO_CLASSES = "focus:ariadne-ring-slate-500 ariadne-h-4 ariadne-w-4 ariadne-text-slate-600 ariadne-border-gray-300 ariadne-rounded"
51
+ def radio_button(method, tag_value, options = {})
52
+ options[:class] = merge_class_names(DEFAULT_RADIO_CLASSES, options.delete(:classes))
53
+ super(method, tag_value, **options)
54
+ end
55
+
56
+ DEFAULT_TEXTAREA_CLASSES = "ariadne-shadow-sm focus:ariadne-ring-slate-500 focus:ariadne-border-slate-500 ariadne-block ariadne-w-full sm:ariadne-text-sm ariadne-border ariadne-border-gray-300 ariadne-rounded-md"
57
+ def text_area(method, options = {})
58
+ options[:class] = merge_class_names(DEFAULT_TEXTAREA_CLASSES, options.delete(:classes))
59
+ super(method, **options)
60
+ end
61
+
62
+ DEFAULT_EMAIL_CLASSES = "ariadne-shadow-sm focus:ariadne-ring-slate-500 focus:ariadne-border-slate-500 ariadne-block ariadne-w-full sm:ariadne-text-sm ariadne-border-gray-300 ariadne-rounded-md"
63
+ def email_field(method, options = {})
64
+ options[:class] = merge_class_names(DEFAULT_EMAIL_CLASSES, options.delete(:classes))
65
+ super(method, **options)
66
+ end
67
+
68
+ DEFAULT_PASSWORD_CLASSES = "ariadne-appearance-none ariadne-block ariadne-w-full ariadne-px-3 ariadne-py-2 ariadne-border ariadne-border-gray-300 ariadne-rounded-md ariadne-shadow-sm ariadne-placeholder-gray-400 focus:ariadne-outline-none focus:ariadne-ring-slate-500 focus:ariadne-border-slate-500 sm:ariadne-text-sm"
69
+ def password_field(method, options = {})
70
+ options[:class] = merge_class_names(DEFAULT_PASSWORD_CLASSES, options.delete(:classes))
71
+ super(method, **options)
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Ariadne::IconHelper
4
+ # A helper that insists on certain values when
5
+ # checking herocions and their varients.
6
+ #
7
+ # Use this helper to loudly ensure a value is
8
+ # one that you expect.
9
+ module Ariadne
10
+ # :nodoc:
11
+ module IconHelper
12
+ include FetchOrFallbackHelper
13
+
14
+ def check_icon_presence!(icon, variant)
15
+ return true unless has_partial_icon?(icon, variant)
16
+
17
+ icon_presence!(icon, variant)
18
+ variant_presence!(icon, variant)
19
+ ensure_valid_variant(variant)
20
+
21
+ true
22
+ end
23
+
24
+ def ensure_valid_variant(variant)
25
+ check_variant = if variant.blank? || !variant.respond_to?(:to_s)
26
+ ""
27
+ else
28
+ variant.to_s
29
+ end
30
+
31
+ fetch_or_raise(HeroiconsHelper::Icon::VALID_VARIANTS, check_variant)
32
+ end
33
+ module_function :ensure_valid_variant
34
+
35
+ def has_partial_icon?(icon, variant)
36
+ icon.present? || variant.present?
37
+ end
38
+
39
+ def icon_presence!(icon, variant)
40
+ raise(ArgumentError, "You must provide an `icon` when providing a `variant`.") if icon.blank? && variant.present?
41
+
42
+ true
43
+ end
44
+
45
+ def variant_presence!(icon, variant)
46
+ raise(ArgumentError, "You must provide a `variant` when providing an `icon`.") if icon.present? && variant.blank?
47
+
48
+ true
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ariadne
4
+ # :nodoc:
5
+ module LoggerHelper
6
+ def logger
7
+ return Rails.logger if defined?(Rails) && Rails.logger
8
+
9
+ require "logger"
10
+ Logger.new($stderr)
11
+ end
12
+
13
+ # TODO: test
14
+ def silence_deprecations?
15
+ Rails.application.config.ariadne_view_components.silence_deprecations
16
+ end
17
+
18
+ # TODO: test
19
+ def silence_warnings?
20
+ Rails.application.config.ariadne_view_components.silence_warnings
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/concern"
4
+
5
+ module Ariadne
6
+ # :nodoc:
7
+ module Status
8
+ # DSL to allow components to register their status.
9
+ #
10
+ # Example:
11
+ #
12
+ # class MyComponent < ViewComponent::Base
13
+ # include Ariadne::Status::Dsl
14
+ # status :experimental
15
+ # end
16
+ module Dsl
17
+ extend ActiveSupport::Concern
18
+
19
+ STATUSES = {
20
+ experimental: :experimental,
21
+ stable: :stable,
22
+ }.freeze
23
+
24
+ class UnknownStatusError < StandardError; end
25
+
26
+ included do
27
+ class_attribute :component_status, instance_writer: false, default: STATUSES[:stable]
28
+ end
29
+
30
+ class_methods do
31
+ def status(status = nil)
32
+ return component_status if status.nil?
33
+
34
+ raise UnknownStatusError, "status #{status} does not exist" if STATUSES[status].nil?
35
+
36
+ self.component_status = STATUSES[status]
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nocov:
4
+ module Ariadne
5
+ # Module to allow shorthand calls for Ariadne components
6
+ module ViewHelper
7
+ class ViewHelperNotFound < StandardError; end
8
+
9
+ HELPERS = {
10
+ heroicon: "Ariadne::HeroiconComponent",
11
+ heading: "Ariadne::HeadingComponent",
12
+ time_ago: "Ariadne::TimeAgoComponent",
13
+ image: "Ariadne::ImageComponent",
14
+ }.freeze
15
+
16
+ HELPERS.each do |name, component|
17
+ define_method "ariadne_#{name}" do |*args, **kwargs, &block|
18
+ render component.constantize.new(*args, **kwargs), &block
19
+ end
20
+ end
21
+ end
22
+ end
@@ -3,6 +3,6 @@
3
3
  # :nocov:
4
4
  module Ariadne
5
5
  module ViewComponents
6
- VERSION = "0.0.44"
6
+ VERSION = "0.0.46"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ariadne_view_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.44
4
+ version: 0.0.46
5
5
  platform: x86_64-linux
6
6
  authors:
7
7
  - Garen J. Torikian
@@ -222,6 +222,15 @@ files:
222
222
  - app/components/ariadne/tooltip_component/tooltip-component.js
223
223
  - app/components/ariadne/tooltip_component/tooltip-component.ts
224
224
  - app/components/ariadne/tooltip_component/tooltip_component.html.erb
225
+ - app/lib/ariadne/action_view_extensions/form_helper.rb
226
+ - app/lib/ariadne/audited/dsl.rb
227
+ - app/lib/ariadne/class_name_helper.rb
228
+ - app/lib/ariadne/fetch_or_fallback_helper.rb
229
+ - app/lib/ariadne/form_builder.rb
230
+ - app/lib/ariadne/icon_helper.rb
231
+ - app/lib/ariadne/logger_helper.rb
232
+ - app/lib/ariadne/status/dsl.rb
233
+ - app/lib/ariadne/view_helper.rb
225
234
  - config/importmap.rb
226
235
  - exe/tailwindcss
227
236
  - exe/x86_64-linux/tailwindcss
@@ -241,17 +250,6 @@ files:
241
250
  - lib/rubocop/cop/ariadne.rb
242
251
  - lib/rubocop/cop/ariadne/base_cop.rb
243
252
  - lib/rubocop/cop/ariadne/no_tag_memoize.rb
244
- - lib/tasks/ariadne_view_components.rake
245
- - lib/tasks/build.rake
246
- - lib/tasks/coverage.rake
247
- - lib/tasks/docs.rake
248
- - lib/tasks/helpers/ast_processor.rb
249
- - lib/tasks/helpers/ast_traverser.rb
250
- - lib/tasks/static.rake
251
- - lib/tasks/test.rake
252
- - lib/yard/docs_helper.rb
253
- - lib/yard/renders_many_handler.rb
254
- - lib/yard/renders_one_handler.rb
255
253
  - static/arguments.yml
256
254
  - static/assets/view-components.svg
257
255
  - static/audited_at.json
@@ -1,48 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- ERB_GLOB = "**/*.html{+*,}.erb"
4
- RB_GLOB = "**/*.rb"
5
- # copied from Rails: action_view/template/handlers/erb/erubi.rb
6
- BLOCK_EXPR = /\s*((\s+|\))do|\{)(\s*\|[^|]*\|)?\s*\Z/
7
-
8
- namespace :ariadne_view_components do
9
- desc "Report arguments used in each component"
10
- task :report, [:paths] do |_, args|
11
- require "rubocop"
12
- require "better_html"
13
- require "better_html/parser"
14
- require "erb_lint/processed_source"
15
- require_relative "helpers/ast_processor"
16
-
17
- paths = args[:paths].split
18
- stats = {}
19
-
20
- rb_files = paths.reduce([]) { |mem, path| mem + Dir[File.join(path, RB_GLOB)] }
21
-
22
- rb_files.each do |f|
23
- ast = RuboCop::AST::ProcessedSource.from_file(f, RUBY_VERSION.to_f).ast
24
- AstProcessor.process_ast(ast, stats)
25
- end
26
-
27
- erb_files = paths.reduce([]) { |mem, path| mem + Dir[File.join(path, ERB_GLOB)] }
28
-
29
- erb_files.each do |f|
30
- erb_ast = ERBLint::ProcessedSource.new(f, File.read(f)).ast
31
-
32
- erb_ast.descendants(:erb).each do |erb_node|
33
- indicator, _, code_node, = *erb_node
34
-
35
- next if indicator&.children&.first == "#" # don't analyze comments
36
-
37
- trimmed_source = code_node.loc.source.sub(BLOCK_EXPR, "").strip
38
- ast = RuboCop::AST::ProcessedSource.new(trimmed_source, RUBY_VERSION.to_f).ast
39
- AstProcessor.process_ast(ast, stats)
40
- end
41
- end
42
-
43
- File.open(".ariadne-view-components-report.json", "w") do |f|
44
- f.write(JSON.pretty_generate(stats))
45
- f.write($INPUT_RECORD_SEPARATOR)
46
- end
47
- end
48
- end
data/lib/tasks/build.rake DELETED
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "ariadne/view_components/commands"
4
-
5
- namespace :ariadne_view_components do
6
- desc "Build Ariadne View Components CSS"
7
- task :build do |_, args|
8
- debug = args.extras.include?("debug")
9
- command = Ariadne::ViewComponents::Commands.compile_command(debug: debug)
10
- puts command.inspect
11
- system(*command, exception: true)
12
- end
13
-
14
- desc "Watch and build Ariadne View Components CSS on file changes"
15
- task :watch do |_, args|
16
- debug = args.extras.include?("debug")
17
- poll = args.extras.include?("poll")
18
- command = Ariadne::ViewComponents::Commands.watch_command(debug: debug, poll: poll)
19
- puts command.inspect
20
- system(*command)
21
- end
22
- end
23
-
24
- Rake::Task["assets:precompile"].enhance(["ariadne_view_components:build"]) if Rake::Task.task_defined?("assets:precompile")
25
-
26
- if Rake::Task.task_defined?("test:prepare")
27
- Rake::Task["test:prepare"].enhance(["ariadne_view_components:build"])
28
- elsif Rake::Task.task_defined?("db:test:prepare")
29
- Rake::Task["db:test:prepare"].enhance(["ariadne_view_components:build"])
30
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- namespace :coverage do
4
- desc "Run coverage report. This should ideally be done only on CI."
5
- task :report do
6
- require "simplecov"
7
- require "simplecov-console"
8
-
9
- SimpleCov.collate(Dir["coverage/.resultset.json"], "rails") do
10
- formatter SimpleCov::Formatter::Console
11
-
12
- minimum_coverage 100
13
- maximum_coverage_drop 2
14
-
15
- add_group "Ignored Code" do |src_file|
16
- File.readlines(src_file.filename).grep(/:nocov:/).any?
17
- end
18
- end
19
- end
20
- end