Skip to content

Instantly share code, notes, and snippets.

@oliyoung
Last active December 15, 2015 04:29
Show Gist options
  • Save oliyoung/5202225 to your computer and use it in GitHub Desktop.
Save oliyoung/5202225 to your computer and use it in GitHub Desktop.
An eZPublish extension generator … in Ruby
#!/usr/bin/env ruby
require 'fileutils'
include FileUtils
args = ARGV
extension_name = args.reverse!.pop
if extension_name
modules = args.reverse!
folder_list = [
"classes",
"design",
"design/#{extension_name}/",
"design/#{extension_name}/javascript",
"design/#{extension_name}/templates",
"design/#{extension_name}/stylesheet",
"modules",
"settings"
];
file_list = [
"settings/design.ini.append.php",
"settings/module.ini.append.php"
]
modules.each do |module_name|
folder_list << "design/#{extension_name}/templates/#{module_name}"
folder_list << "modules/#{module_name}"
file_list << "design/#{extension_name}/javascript/#{module_name}.js"
file_list << "design/#{extension_name}/stylesheet/#{module_name}.css"
file_list << "modules/#{module_name}/module.php"
end
folder_list.map!{|m| "#{extension_name}/#{m}" }.uniq!
file_list.map!{|m| "#{extension_name}/#{m}" }.uniq!
design_ini = "<?php /* #?ini charset='utf-8'?
[ExtensionSettings]
DesignExtensions[]=#{extension_name}\n
[JavaScriptSettings]
#{modules.map{|m| "FrontendJavaScriptList[]=#{m}.js\n" }.to_s}
[StylesheetSettings]
#{modules.map{|m| "FrontendStylesheetList[]=#{m}.css\n" }.to_s}
*/ ?>"
module_ini = "<?php /* #?ini charset='utf-8'?
[ModuleSettings]
ExtensionRepositories[]=#{extension_name}
#{modules.map{|m| "ModuleList[]=#{m}\n" }.to_s}
*/ ?>"
FileUtils.mkdir_p(folder_list)
FileUtils.touch(file_list)
puts "Created\n#{folder_list.map{|m| "\t"+m}.join("\n")}"
puts "Touched\n#{file_list.map{|m| "\t"+m}.join("\n")}"
File.open("#{extension_name}/settings/design.ini.append.php", 'w') {|f| f.write(design_ini) }
File.open("#{extension_name}/settings/module.ini.append.php", 'w') {|f| f.write(module_ini) }
puts "Wrote\n\t#{extension_name}/settings/design.ini.append.php\n\t#{extension_name}/settings/module.ini.append.php"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment