amber_extension_generator 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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: []