From ba31eb35da6d216936ec588314d43bc6da43d2c6 Mon Sep 17 00:00:00 2001 From: Mayel de Borniol Date: Mon, 20 Jan 2025 10:17:05 +0000 Subject: [PATCH] improve generator --- lib/mix_tasks/extension/extension.new.ex | 31 +++++++++++++----------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/lib/mix_tasks/extension/extension.new.ex b/lib/mix_tasks/extension/extension.new.ex index c94f5be..4fe24b0 100644 --- a/lib/mix_tasks/extension/extension.new.ex +++ b/lib/mix_tasks/extension/extension.new.ex @@ -2,48 +2,51 @@ defmodule Mix.Tasks.Bonfire.Extension.New do use Mix.Task def run([extension_name]) do + snake_name = Macro.underscore(extension_name) + + camel_name = + extension_name + |> String.replace("bonfire_", "bonfire/") + |> Macro.camelize() + if File.exists?("extensions/bonfire_extension_template") do - File.cp_r!("extensions/bonfire_extension_template", "extensions/#{extension_name}") + File.cp_r!("extensions/bonfire_extension_template", "extensions/#{snake_name}") else System.cmd( "git", [ "clone", "https://github.com/bonfire-networks/bonfire_extension_template.git", - extension_name + snake_name ], cd: "extensions" ) end - rename_modules(extension_name) - rename_config_file(extension_name) - reset_git(extension_name) + rename_modules(snake_name, camel_name) + rename_config_file(snake_name) + reset_git(snake_name) - IO.puts( - "Done! You can now start developing your extension in ./extensions/#{extension_name}/" - ) + IO.puts("Done! You can now start developing your extension in ./extensions/#{snake_name}/") end - defp rename_modules(extension_name) do + defp rename_modules(snake_name, camel_name) do # Get all .ex, .exs, and .md files in the extension directory ["**/*.ex", "**/*.exs", "**/*.md", "**/*.sface"] - |> Enum.flat_map(&Path.wildcard("extensions/#{extension_name}/" <> &1)) + |> Enum.flat_map(&Path.wildcard("extensions/#{snake_name}/" <> &1)) |> Enum.each(fn path -> # Read the file file_content = File.read!(path) # Replace the module names new_content = - String.replace(file_content, "bonfire_extension_template", extension_name) + String.replace(file_content, "bonfire_extension_template", snake_name) new_content = String.replace( new_content, "Bonfire.ExtensionTemplate", - extension_name - |> String.replace("bonfire_", "bonfire/") - |> Macro.camelize() + camel_name ) # Write the new content to the file