layered_stack 0.0.4 → 0.0.6

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 (153) hide show
  1. checksums.yaml +4 -4
  2. data/bin/layered_stack +2 -2
  3. data/lib/layered_stack/backend/create.rb +42 -0
  4. data/lib/layered_stack/backend/start.rb +30 -0
  5. data/lib/layered_stack/frontend/create.rb +137 -0
  6. data/lib/layered_stack/frontend/start.rb +33 -0
  7. data/lib/layered_stack/root/create.rb +80 -0
  8. data/lib/layered_stack/version.rb +1 -1
  9. data/lib/layered_stack.rb +39 -8
  10. data/templates/backend/rails_template.rb +51 -0
  11. data/{assets → templates/frontend}/page.js +1 -0
  12. data/templates/root/Gemfile +11 -0
  13. data/templates/root/Procfile +2 -0
  14. data/templates/root/devcontainer/Dockerfile +9 -0
  15. data/templates/root/devcontainer/devcontainer.json +19 -0
  16. data/templates/root/devcontainer/docker-compose.yml +12 -0
  17. data/templates/root/devcontainer/layered-stack-0.0.1.vsix +0 -0
  18. data/templates/root/layered_stack/cli/LICENSE.md +21 -0
  19. data/templates/root/layered_stack/cli/bin/layered_stack +3 -0
  20. data/templates/root/layered_stack/cli/cli/LICENSE.md +21 -0
  21. data/templates/root/layered_stack/cli/cli/bin/layered_stack +3 -0
  22. data/templates/root/layered_stack/cli/cli/layered_stack-0.0.6.gem +0 -0
  23. data/templates/root/layered_stack/cli/cli/layered_stack.gemspec +30 -0
  24. data/templates/root/layered_stack/cli/cli/lib/layered_stack/backend/create.rb +42 -0
  25. data/templates/root/layered_stack/cli/cli/lib/layered_stack/backend/start.rb +30 -0
  26. data/templates/root/layered_stack/cli/cli/lib/layered_stack/frontend/create.rb +137 -0
  27. data/templates/root/layered_stack/cli/cli/lib/layered_stack/frontend/start.rb +33 -0
  28. data/templates/root/layered_stack/cli/cli/lib/layered_stack/root/create.rb +80 -0
  29. data/templates/root/layered_stack/cli/cli/lib/layered_stack/version.rb +5 -0
  30. data/templates/root/layered_stack/cli/cli/lib/layered_stack.rb +63 -0
  31. data/templates/root/layered_stack/cli/cli/templates/backend/rails_template.rb +51 -0
  32. data/templates/root/layered_stack/cli/cli/templates/frontend/images/logo_dark.svg +29 -0
  33. data/templates/root/layered_stack/cli/cli/templates/frontend/images/logo_light.svg +29 -0
  34. data/templates/root/layered_stack/cli/cli/templates/frontend/layout.js +21 -0
  35. data/templates/root/layered_stack/cli/cli/templates/frontend/page.js +35 -0
  36. data/templates/root/layered_stack/cli/cli/templates/frontend/tailwind.config.js +19 -0
  37. data/templates/root/layered_stack/cli/cli/templates/root/Gemfile +11 -0
  38. data/templates/root/layered_stack/cli/cli/templates/root/Procfile +2 -0
  39. data/templates/root/layered_stack/cli/cli/templates/root/devcontainer/Dockerfile +9 -0
  40. data/templates/root/layered_stack/cli/cli/templates/root/devcontainer/devcontainer.json +19 -0
  41. data/templates/root/layered_stack/cli/cli/templates/root/devcontainer/docker-compose.yml +12 -0
  42. data/templates/root/layered_stack/cli/cli/templates/root/devcontainer/layered-stack-0.0.1.vsix +0 -0
  43. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/LICENSE.md +21 -0
  44. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/bin/layered_stack +3 -0
  45. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/layered_stack-0.0.6.gem +0 -0
  46. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/layered_stack.gemspec +30 -0
  47. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/lib/layered_stack/backend/create.rb +42 -0
  48. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/lib/layered_stack/backend/start.rb +30 -0
  49. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/lib/layered_stack/frontend/create.rb +137 -0
  50. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/lib/layered_stack/frontend/start.rb +33 -0
  51. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/lib/layered_stack/root/create.rb +80 -0
  52. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/lib/layered_stack/version.rb +5 -0
  53. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/lib/layered_stack.rb +63 -0
  54. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/backend/rails_template.rb +48 -0
  55. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/frontend/images/logo_dark.svg +29 -0
  56. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/frontend/images/logo_light.svg +29 -0
  57. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/frontend/layout.js +21 -0
  58. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/frontend/page.js +35 -0
  59. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/frontend/tailwind.config.js +19 -0
  60. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/Gemfile +8 -0
  61. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/Procfile +2 -0
  62. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/devcontainer/Dockerfile +9 -0
  63. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/devcontainer/devcontainer.json +19 -0
  64. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/devcontainer/docker-compose.yml +11 -0
  65. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/devcontainer/layered-stack-0.0.1.vsix +0 -0
  66. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/layered_stack/rails/LICENSE.md +21 -0
  67. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/layered_stack/rails/bin/layered_stack-rails +3 -0
  68. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/layered_stack/rails/layered_stack-rails.gemspec +29 -0
  69. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/generators/layered_stack_rails/scaffold_generator.rb +89 -0
  70. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/generators/layered_stack_rails/templates/active_record/model/model.erb +9 -0
  71. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/layered_stack_rails/example.rb +97 -0
  72. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/layered_stack_rails/generate.rb +34 -0
  73. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/layered_stack_rails/generate_new.rb +34 -0
  74. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/layered_stack_rails/version.rb +5 -0
  75. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/layered_stack_rails.rb +26 -0
  76. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/LICENSE.md +21 -0
  77. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/bin/layered_stack-rails +3 -0
  78. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/layered_stack-rails.gemspec +29 -0
  79. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/lib/generators/layered_stack_rails/scaffold_generator.rb +89 -0
  80. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/lib/generators/layered_stack_rails/templates/active_record/model/model.erb +9 -0
  81. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/lib/layered_stack_rails/example.rb +97 -0
  82. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/lib/layered_stack_rails/generate.rb +34 -0
  83. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/lib/layered_stack_rails/generate_new.rb +34 -0
  84. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/lib/layered_stack_rails/version.rb +5 -0
  85. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/lib/layered_stack_rails.rb +26 -0
  86. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/rails/LICENSE.md +21 -0
  87. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/rails/bin/layered_stack-rails +3 -0
  88. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/rails/layered_stack-rails.gemspec +29 -0
  89. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/rails/lib/generators/layered_stack_rails/scaffold_generator.rb +89 -0
  90. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/rails/lib/generators/layered_stack_rails/templates/active_record/model/model.erb +9 -0
  91. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/rails/lib/layered_stack_rails/example.rb +97 -0
  92. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/rails/lib/layered_stack_rails/generate.rb +34 -0
  93. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/rails/lib/layered_stack_rails/generate_new.rb +34 -0
  94. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/rails/lib/layered_stack_rails/version.rb +5 -0
  95. data/templates/root/layered_stack/cli/cli/templates/root/layered_stack/rails/rails/lib/layered_stack_rails.rb +26 -0
  96. data/templates/root/layered_stack/cli/layered_stack-0.0.6.gem +0 -0
  97. data/templates/root/layered_stack/cli/layered_stack.gemspec +30 -0
  98. data/templates/root/layered_stack/cli/lib/layered_stack/backend/create.rb +42 -0
  99. data/templates/root/layered_stack/cli/lib/layered_stack/backend/start.rb +30 -0
  100. data/templates/root/layered_stack/cli/lib/layered_stack/frontend/create.rb +137 -0
  101. data/templates/root/layered_stack/cli/lib/layered_stack/frontend/start.rb +33 -0
  102. data/templates/root/layered_stack/cli/lib/layered_stack/root/create.rb +80 -0
  103. data/templates/root/layered_stack/cli/lib/layered_stack/version.rb +5 -0
  104. data/templates/root/layered_stack/cli/lib/layered_stack.rb +63 -0
  105. data/templates/root/layered_stack/cli/templates/backend/rails_template.rb +48 -0
  106. data/templates/root/layered_stack/cli/templates/frontend/images/logo_dark.svg +29 -0
  107. data/templates/root/layered_stack/cli/templates/frontend/images/logo_light.svg +29 -0
  108. data/templates/root/layered_stack/cli/templates/frontend/layout.js +21 -0
  109. data/templates/root/layered_stack/cli/templates/frontend/page.js +35 -0
  110. data/templates/root/layered_stack/cli/templates/frontend/tailwind.config.js +19 -0
  111. data/templates/root/layered_stack/cli/templates/root/Gemfile +8 -0
  112. data/templates/root/layered_stack/cli/templates/root/Procfile +2 -0
  113. data/templates/root/layered_stack/cli/templates/root/devcontainer/Dockerfile +9 -0
  114. data/templates/root/layered_stack/cli/templates/root/devcontainer/devcontainer.json +19 -0
  115. data/templates/root/layered_stack/cli/templates/root/devcontainer/docker-compose.yml +11 -0
  116. data/templates/root/layered_stack/cli/templates/root/devcontainer/layered-stack-0.0.1.vsix +0 -0
  117. data/templates/root/layered_stack/cli/templates/root/layered_stack/rails/LICENSE.md +21 -0
  118. data/templates/root/layered_stack/cli/templates/root/layered_stack/rails/bin/layered_stack-rails +3 -0
  119. data/templates/root/layered_stack/cli/templates/root/layered_stack/rails/layered_stack-rails.gemspec +29 -0
  120. data/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/generators/layered_stack_rails/scaffold_generator.rb +89 -0
  121. data/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/generators/layered_stack_rails/templates/active_record/model/model.erb +9 -0
  122. data/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/layered_stack_rails/example.rb +97 -0
  123. data/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/layered_stack_rails/generate.rb +34 -0
  124. data/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/layered_stack_rails/generate_new.rb +34 -0
  125. data/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/layered_stack_rails/version.rb +5 -0
  126. data/templates/root/layered_stack/cli/templates/root/layered_stack/rails/lib/layered_stack_rails.rb +26 -0
  127. data/templates/root/layered_stack/rails/LICENSE.md +21 -0
  128. data/templates/root/layered_stack/rails/bin/layered_stack-rails +3 -0
  129. data/templates/root/layered_stack/rails/layered_stack-rails.gemspec +29 -0
  130. data/templates/root/layered_stack/rails/lib/generators/layered_stack_rails/scaffold_generator.rb +89 -0
  131. data/templates/root/layered_stack/rails/lib/generators/layered_stack_rails/templates/active_record/model/model.erb +9 -0
  132. data/templates/root/layered_stack/rails/lib/layered_stack_rails/example.rb +97 -0
  133. data/templates/root/layered_stack/rails/lib/layered_stack_rails/generate.rb +34 -0
  134. data/templates/root/layered_stack/rails/lib/layered_stack_rails/generate_new.rb +34 -0
  135. data/templates/root/layered_stack/rails/lib/layered_stack_rails/version.rb +5 -0
  136. data/templates/root/layered_stack/rails/lib/layered_stack_rails.rb +26 -0
  137. data/templates/root/layered_stack/rails/rails/LICENSE.md +21 -0
  138. data/templates/root/layered_stack/rails/rails/bin/layered_stack-rails +3 -0
  139. data/templates/root/layered_stack/rails/rails/layered_stack-rails.gemspec +29 -0
  140. data/templates/root/layered_stack/rails/rails/lib/generators/layered_stack_rails/scaffold_generator.rb +89 -0
  141. data/templates/root/layered_stack/rails/rails/lib/generators/layered_stack_rails/templates/active_record/model/model.erb +9 -0
  142. data/templates/root/layered_stack/rails/rails/lib/layered_stack_rails/example.rb +97 -0
  143. data/templates/root/layered_stack/rails/rails/lib/layered_stack_rails/generate.rb +34 -0
  144. data/templates/root/layered_stack/rails/rails/lib/layered_stack_rails/generate_new.rb +34 -0
  145. data/templates/root/layered_stack/rails/rails/lib/layered_stack_rails/version.rb +5 -0
  146. data/templates/root/layered_stack/rails/rails/lib/layered_stack_rails.rb +26 -0
  147. metadata +167 -14
  148. data/lib/layered_stack/commands/create_command.rb +0 -139
  149. data/lib/layered_stack/commands/start_command.rb +0 -70
  150. /data/{assets → templates/frontend}/images/logo_dark.svg +0 -0
  151. /data/{assets → templates/frontend}/images/logo_light.svg +0 -0
  152. /data/{assets → templates/frontend}/layout.js +0 -0
  153. /data/{assets → templates/frontend}/tailwind.config.js +0 -0
@@ -1,139 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'fileutils'
4
- require 'thor'
5
- require 'logger'
6
-
7
- module LayeredStack
8
- module Cli
9
- module Commands
10
- class CreateCommand < Thor
11
- CREATE_NEXT_APP_SWITCHES = "--js --tailwind --eslint --app --src-dir --import-alias @/* --use-npm"
12
-
13
- FRONTEND_DIR = "frontend"
14
-
15
- def self.asset_path(relative_path)
16
- File.expand_path("../../../../assets/#{relative_path}", __FILE__)
17
- end
18
-
19
- ASSET_FILES = {
20
- asset_path("tailwind.config.js") => "frontend/tailwind.config.js",
21
- asset_path("layout.js") => "frontend/src/app/layout.js",
22
- asset_path("page.js") => "frontend/src/app/page.js",
23
- asset_path("images/logo_dark.svg") => "frontend/src/app/logo_dark.svg",
24
- asset_path("images/logo_light.svg") => "frontend/src/app/logo_light.svg",
25
- }
26
-
27
- LOGO_FILES = {
28
- "assets/images/logo_dark.svg" => "frontend/src/app/logo_dark.svg",
29
- "assets/images/logo_light.svg" => "frontend/src/app/logo_light.svg",
30
- }
31
-
32
- def self.execute
33
- new.execute
34
- end
35
-
36
- no_commands do
37
- def execute
38
- logger.info("> layered_stack/create")
39
- remove_existing_frontend
40
- run_create_next_app
41
- Dir.chdir(FRONTEND_DIR) do
42
- install_dependencies
43
- update_package_json
44
- end
45
- copy_asset_files
46
- copy_logo_files
47
- print_next_step
48
- end
49
-
50
- private
51
-
52
- def logger
53
- @logger ||= Logger.new(STDOUT)
54
- end
55
-
56
- def remove_existing_frontend
57
- if Dir.exist?(FRONTEND_DIR)
58
- logger.info("\n# Removing existing /#{FRONTEND_DIR} directory")
59
- FileUtils.rm_rf(FRONTEND_DIR)
60
- end
61
- end
62
-
63
- def run_create_next_app
64
- command = "npx create-next-app@latest #{CREATE_NEXT_APP_SWITCHES} #{FRONTEND_DIR}"
65
- run_command(command, "Running create-next-app")
66
- end
67
-
68
- def install_dependencies
69
- dependencies = [
70
- "next-themes",
71
- "@heroicons/react@latest",
72
- "@layeredstack/ui@latest"
73
- ]
74
- dependencies.each do |dep|
75
- run_command("npm install #{dep}", "Installing #{dep}")
76
- end
77
- end
78
-
79
- def update_package_json
80
- logger.info("# Updating package.json to change the port to 3001")
81
- update_file("package.json", '"dev": "next dev"', '"dev": "next dev -p 3001"')
82
- update_file("package.json", '"start": "next start"', '"start": "next start -p 3001"')
83
- end
84
-
85
- def copy_asset_files
86
- logger.info("\n# Copying asset files to the frontend directory")
87
- copy_files(ASSET_FILES)
88
- end
89
-
90
- def copy_logo_files
91
- logger.info("\n# Copying logo files to the frontend directory")
92
- copy_files(LOGO_FILES) { |src, dest| copy_logo_file(src, dest) }
93
- end
94
-
95
- def copy_files(files)
96
- files.each do |src, dest|
97
- if block_given?
98
- yield(src, dest)
99
- else
100
- FileUtils.cp(src, dest)
101
- end
102
- end
103
- end
104
-
105
- def copy_logo_file(src, dest)
106
- if File.exist?(src)
107
- logger.info("User provided logo exists in assets, copying #{src} to #{dest}")
108
- FileUtils.cp(src, dest)
109
- else
110
- template_src = ASSET_FILES.find { |k, _| k.include?(File.basename(src)) }&.first
111
- if template_src
112
- logger.info("No user provided logo found in 'assets/images/', copying default logo from #{template_src} to #{dest}")
113
- FileUtils.cp(template_src, dest)
114
- else
115
- logger.warn("Default logo file #{src} not found")
116
- end
117
- end
118
- end
119
-
120
- def run_command(command, message)
121
- logger.info(message)
122
- system(command)
123
- end
124
-
125
- def update_file(file, old_content, new_content)
126
- content = File.read(file)
127
- new_content = content.gsub(old_content, new_content)
128
- File.write(file, new_content)
129
- end
130
-
131
- def print_next_step
132
- logger.info("\n# Next step:")
133
- logger.info("bundle exec layered_stack start")
134
- end
135
- end
136
- end
137
- end
138
- end
139
- end
@@ -1,70 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'thor'
4
- require 'logger'
5
-
6
- module LayeredStack
7
- module Cli
8
- module Commands
9
- class StartCommand < Thor
10
- FRONTEND_DIR = "frontend"
11
- LOCALHOST_URL = "http://localhost:3001"
12
-
13
- def self.execute
14
- new.execute
15
- end
16
-
17
- no_commands do
18
- def execute
19
- logger.info("> layered_stack/start")
20
-
21
- if change_directory
22
- open_browser
23
- run_development_server
24
- end
25
- end
26
-
27
- private
28
-
29
- def logger
30
- @logger ||= Logger.new(STDOUT)
31
- end
32
-
33
- def change_directory
34
- if Dir.exist?(FRONTEND_DIR)
35
- begin
36
- Dir.chdir(FRONTEND_DIR)
37
- logger.info("Changed directory to '#{FRONTEND_DIR}'")
38
- true
39
- rescue => e
40
- logger.error("Failed to change directory: #{e.message}")
41
- false
42
- end
43
- else
44
- logger.error("Directory '#{FRONTEND_DIR}' does not exist")
45
- false
46
- end
47
- end
48
-
49
- def open_browser
50
- logger.info("\n# Opening the browser")
51
- run_command("open #{LOCALHOST_URL}", "Browser opened successfully", "Failed to open the browser")
52
- end
53
-
54
- def run_development_server
55
- logger.info("\n# Running the development server")
56
- run_command("npm run dev", "Development server started successfully", "Failed to start the development server")
57
- end
58
-
59
- def run_command(command, success_message, error_message)
60
- if system(command)
61
- logger.info(success_message)
62
- else
63
- logger.error(error_message)
64
- end
65
- end
66
- end
67
- end
68
- end
69
- end
70
- end
File without changes
File without changes