amber_extension_generator 0.0.5

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.
Files changed (34) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +185 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.solargraph.yml +20 -0
  6. data/CHANGELOG.md +5 -0
  7. data/Gemfile +20 -0
  8. data/Gemfile.lock +116 -0
  9. data/LICENSE +21 -0
  10. data/README.md +37 -0
  11. data/Rakefile +16 -0
  12. data/amber_extension_generator.gemspec +46 -0
  13. data/exe/amber_extension_generator +6 -0
  14. data/lib/amber_extension_generator/cli/args.rb +47 -0
  15. data/lib/amber_extension_generator/cli/gem_generator.rb +406 -0
  16. data/lib/amber_extension_generator/cli.rb +17 -0
  17. data/lib/amber_extension_generator/gem_name.rb +6 -0
  18. data/lib/amber_extension_generator/templates/assets/stylesheets/components.scss +2 -0
  19. data/lib/amber_extension_generator/templates/assets/stylesheets/main.scss.erb +6 -0
  20. data/lib/amber_extension_generator/templates/bin/dev.erb +10 -0
  21. data/lib/amber_extension_generator/templates/bin/generate.erb +142 -0
  22. data/lib/amber_extension_generator/templates/components/base_component.rb.erb +11 -0
  23. data/lib/amber_extension_generator/templates/components.rb +4 -0
  24. data/lib/amber_extension_generator/templates/rails_dummy/Gemfile.erb +33 -0
  25. data/lib/amber_extension_generator/templates/railtie.rb.erb +13 -0
  26. data/lib/amber_extension_generator/templates/templates/component.rb.tt +11 -0
  27. data/lib/amber_extension_generator/templates/templates/component_test.rb.tt +17 -0
  28. data/lib/amber_extension_generator/templates/templates/style.scss.tt +5 -0
  29. data/lib/amber_extension_generator/templates/templates/view.html.erb.tt +8 -0
  30. data/lib/amber_extension_generator/templates/test/component_test_case.rb +7 -0
  31. data/lib/amber_extension_generator/version.rb +6 -0
  32. data/lib/amber_extension_generator.rb +16 -0
  33. data/lib/dummy_rails_app_template.rb +61 -0
  34. metadata +127 -0
@@ -0,0 +1,5 @@
1
+ .<%= component_css_class %> {
2
+ h2 {
3
+ color: blue;
4
+ }
5
+ }
@@ -0,0 +1,8 @@
1
+ <div class='<%= component_css_class %>'>
2
+ <h2>
3
+ Hello from <b><%= full_class_name %></b>, initialized at: <%%= @time %>
4
+ </h2>
5
+ <p>
6
+ <%%= description %>
7
+ </p>
8
+ </div>
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'amber_component/minitest_test_case'
4
+
5
+ class ComponentTestCase < ::AmberComponent::MinitestTestCase
6
+ # Your custom assertions and helpers go here
7
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ::AmberExtensionGenerator
4
+ # @return [String]
5
+ VERSION = '0.0.5'
6
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'amber_extension_generator/version'
4
+ require_relative 'amber_extension_generator/gem_name'
5
+
6
+ require 'pathname'
7
+
8
+ module ::AmberExtensionGenerator
9
+ class Error < ::StandardError; end
10
+ # @return [Pathname]
11
+ ROOT_GEM_PATH = ::Pathname.new ::File.expand_path('..', __dir__)
12
+ # @return [Pathname]
13
+ TEMPLATES_FOLDER_PATH = ROOT_GEM_PATH / 'lib' / 'amber_extension_generator' / 'templates'
14
+ end
15
+
16
+ require_relative 'amber_extension_generator/cli'
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ after_bundle do
4
+ generate :controller, 'test', 'index'
5
+ end
6
+
7
+ gem 'sassc-rails'
8
+ route "root to: 'test#index'"
9
+
10
+ environment <<~RUBY, env: :development
11
+ # === GEM AUTO-RELOADING ===
12
+
13
+ if defined?(::AMBER_EXTENSION_GEM)
14
+ # create the file watcher paths hash for the extension gem
15
+ reload_paths = {}
16
+ dir = ::AMBER_EXTENSION_GEM.path.to_s
17
+ reload_paths[dir] = ['rb']
18
+
19
+ # define a file watcher for the extension gem
20
+ extension_gem_reloader = config.file_watcher.new([], reload_paths) do
21
+ puts ' Reloading the extension gem'
22
+
23
+ # delete all constants defined by the extension gem
24
+ ::AMBER_EXTENSION_GEM.constants.each do |const|
25
+ # Normalize ::Foo, ::Object::Foo, Object::Foo, Object::Object::Foo, etc. as Foo.
26
+ normalized = const.to_s.delete_prefix('::')
27
+ normalized.sub!(/\A(Object::)+/, '')
28
+
29
+ constants = normalized.split('::')
30
+ to_remove = constants.pop
31
+ parent = constants.empty? ? ::Object : ::Object.const_get(constants.join('::'))
32
+
33
+ parent.__send__(:remove_const, to_remove)
34
+ end
35
+
36
+ # remove extension gems' files from the global
37
+ # list of already required files
38
+ $LOADED_FEATURES.reject! { _1.start_with?(::AMBER_EXTENSION_GEM.path) }
39
+
40
+ # require this gem once again
41
+ require ::AMBER_EXTENSION_GEM.require_path
42
+ end
43
+
44
+ ::Rails.application.reloaders << extension_gem_reloader
45
+
46
+ first_reload = true
47
+ config.to_prepare do
48
+ puts ' Reloading app code'
49
+
50
+ if first_reload
51
+ first_reload = false
52
+ next extension_gem_reloader.execute
53
+ end
54
+
55
+ extension_gem_reloader.execute_if_updated
56
+ end
57
+ end
58
+
59
+ # === END GEM AUTO-RELOADING ===
60
+
61
+ RUBY
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: amber_extension_generator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Ruby-Amber
8
+ - Mateusz Drewniak
9
+ - Garbus Beach
10
+ autorequire:
11
+ bindir: exe
12
+ cert_chain: []
13
+ date: 2022-11-07 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: cli-ui
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rainbow
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '3.0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '3.0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: tty-command
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ description: |
58
+ A utility for generating new extensions or component libraries which hook into `amber_component`.
59
+ Create your own themes!
60
+ email:
61
+ - matmg24@gmail.com
62
+ - piotr.garbus.garbicz@gmail.com
63
+ executables:
64
+ - amber_extension_generator
65
+ extensions: []
66
+ extra_rdoc_files: []
67
+ files:
68
+ - ".rubocop.yml"
69
+ - ".ruby-gemset"
70
+ - ".ruby-version"
71
+ - ".solargraph.yml"
72
+ - CHANGELOG.md
73
+ - Gemfile
74
+ - Gemfile.lock
75
+ - LICENSE
76
+ - README.md
77
+ - Rakefile
78
+ - amber_extension_generator.gemspec
79
+ - exe/amber_extension_generator
80
+ - lib/amber_extension_generator.rb
81
+ - lib/amber_extension_generator/cli.rb
82
+ - lib/amber_extension_generator/cli/args.rb
83
+ - lib/amber_extension_generator/cli/gem_generator.rb
84
+ - lib/amber_extension_generator/gem_name.rb
85
+ - lib/amber_extension_generator/templates/assets/stylesheets/components.scss
86
+ - lib/amber_extension_generator/templates/assets/stylesheets/main.scss.erb
87
+ - lib/amber_extension_generator/templates/bin/dev.erb
88
+ - lib/amber_extension_generator/templates/bin/generate.erb
89
+ - lib/amber_extension_generator/templates/components.rb
90
+ - lib/amber_extension_generator/templates/components/base_component.rb.erb
91
+ - lib/amber_extension_generator/templates/rails_dummy/Gemfile.erb
92
+ - lib/amber_extension_generator/templates/railtie.rb.erb
93
+ - lib/amber_extension_generator/templates/templates/component.rb.tt
94
+ - lib/amber_extension_generator/templates/templates/component_test.rb.tt
95
+ - lib/amber_extension_generator/templates/templates/style.scss.tt
96
+ - lib/amber_extension_generator/templates/templates/view.html.erb.tt
97
+ - lib/amber_extension_generator/templates/test/component_test_case.rb
98
+ - lib/amber_extension_generator/version.rb
99
+ - lib/dummy_rails_app_template.rb
100
+ homepage: https://github.com/amber-ruby/amber_extension_generator
101
+ licenses:
102
+ - MIT
103
+ metadata:
104
+ homepage_uri: https://github.com/amber-ruby/amber_extension_generator
105
+ source_code_uri: https://github.com/amber-ruby/amber_extension_generator
106
+ rubygems_mfa_required: 'true'
107
+ post_install_message:
108
+ rdoc_options: []
109
+ require_paths:
110
+ - lib
111
+ required_ruby_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: 2.7.0
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ requirements: []
122
+ rubygems_version: 3.3.7
123
+ signing_key:
124
+ specification_version: 4
125
+ summary: A utility for generating new extensions or component libraries which hook
126
+ into `amber_component`
127
+ test_files: []