Merge remote-tracking branch 'jvelilla/roc_tool' into ewf_v1_roctool
This commit is contained in:
287
tools/roc/application.e
Normal file
287
tools/roc/application.e
Normal file
@@ -0,0 +1,287 @@
|
|||||||
|
note
|
||||||
|
description: "[
|
||||||
|
roc tool: install modules into an existing CMS Application.
|
||||||
|
|
||||||
|
roc install [--module|-m <MODULE_PATH>] [(--dir|-d <CMS_PATH>) | <MODULE_NAME>]
|
||||||
|
|
||||||
|
install: Install a given module to the corresponding cms application
|
||||||
|
--module|-m: module path or current directory if is not defined.
|
||||||
|
--dir|-d cms application path or current directory if is not defined
|
||||||
|
|
||||||
|
Running the command will copy to the CMS Application site/modules the following artifacts if the current module provide them.
|
||||||
|
|
||||||
|
config
|
||||||
|
scripts
|
||||||
|
themes
|
||||||
|
running
|
||||||
|
roc instal blog
|
||||||
|
will look for a module blog in the modules directory starting at the current directory.
|
||||||
|
]"
|
||||||
|
date: "$Date$"
|
||||||
|
revision: "$Revision$"
|
||||||
|
|
||||||
|
class
|
||||||
|
APPLICATION
|
||||||
|
|
||||||
|
inherit
|
||||||
|
|
||||||
|
SHARED_EXECUTION_ENVIRONMENT
|
||||||
|
|
||||||
|
ARGUMENTS
|
||||||
|
|
||||||
|
create
|
||||||
|
make
|
||||||
|
|
||||||
|
feature {NONE} -- Initialization
|
||||||
|
|
||||||
|
make
|
||||||
|
-- Initialize tool.
|
||||||
|
do
|
||||||
|
-- TODO add support to other commands.
|
||||||
|
if argument_count = 0 then
|
||||||
|
print ("Use: roc install [--module|-m <MODULE_PATH>] [(--dir|-d <CMS_PATH>) | <MODULE_NAME>]")
|
||||||
|
elseif argument (1).starts_with ("install") then
|
||||||
|
execute_install
|
||||||
|
else
|
||||||
|
print ("Wrong command")
|
||||||
|
print ("%NUse: roc install [--module|-m <MODULE_PATH>] -cap <CMS_PATH>")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
feature {NONE} -- Install
|
||||||
|
|
||||||
|
execute_install
|
||||||
|
-- Install a new module.
|
||||||
|
local
|
||||||
|
i: INTEGER
|
||||||
|
error: BOOLEAN
|
||||||
|
optional_module: BOOLEAN
|
||||||
|
cms_path: BOOLEAN
|
||||||
|
do
|
||||||
|
if is_valid_install_cmd then
|
||||||
|
do_execute_install
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
do_execute_install
|
||||||
|
-- Install a module into a cms application.
|
||||||
|
-- Pattern
|
||||||
|
-- app/site/modules/module_name/config/....
|
||||||
|
-- app/site/modules/module_name/scripts/....
|
||||||
|
-- app/site/modules/module_name/themes/....
|
||||||
|
local
|
||||||
|
l_module_path: PATH
|
||||||
|
l_config: PATH
|
||||||
|
l_site_dir: DIRECTORY
|
||||||
|
l_modules_dir: DIRECTORY
|
||||||
|
l_dest_dir: DIRECTORY
|
||||||
|
l_file: FILE
|
||||||
|
do
|
||||||
|
if attached install_cms_path as l_cms_path then
|
||||||
|
l_module_path := install_module_path
|
||||||
|
--Install configuration files.
|
||||||
|
if attached l_module_path.entry as l_entry then
|
||||||
|
create l_site_dir.make_with_path (l_cms_path.extended ("site"))
|
||||||
|
create l_modules_dir.make_with_path (l_cms_path.extended ("site").extended ("modules"))
|
||||||
|
|
||||||
|
if
|
||||||
|
l_site_dir.exists and then
|
||||||
|
l_modules_dir.exists
|
||||||
|
then
|
||||||
|
create l_dest_dir.make_with_path (l_cms_path.extended ("site").extended ("modules").extended (l_entry.name))
|
||||||
|
if not l_dest_dir.exists then
|
||||||
|
l_dest_dir.create_dir
|
||||||
|
end
|
||||||
|
install_module_elements (l_module_path, l_dest_dir.path, Config_dir)
|
||||||
|
install_module_elements (l_module_path, l_dest_dir.path, Scripts_dir)
|
||||||
|
install_module_elements (l_module_path, l_dest_dir.path, Themes_dir)
|
||||||
|
print ("Module ")
|
||||||
|
print ( l_entry)
|
||||||
|
print ( " was successfuly installed to the cms Application located ")
|
||||||
|
print (l_cms_path.name)
|
||||||
|
print ("%NCheck the module elements at ")
|
||||||
|
print (l_dest_dir.path.name)
|
||||||
|
else
|
||||||
|
print ("The CMS Application located at does not have the site or modules folders")
|
||||||
|
end
|
||||||
|
else
|
||||||
|
print ("Error not possible to retrieve module name.")
|
||||||
|
end
|
||||||
|
else
|
||||||
|
print ("%NWrong path to CMS application")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
install_module_elements (a_module_path: PATH; a_cms_path: PATH; a_element: STRING)
|
||||||
|
-- Install module configuration files from `a_module_path' to cms application `a_cms_path' to the element `a_element'.
|
||||||
|
local
|
||||||
|
l_config: PATH
|
||||||
|
l_dest_dir: DIRECTORY
|
||||||
|
l_src_dir: DIRECTORY
|
||||||
|
l_file: FILE
|
||||||
|
do
|
||||||
|
if attached a_module_path.entry as l_entry then
|
||||||
|
l_config := a_module_path.extended ("site").extended (a_element)
|
||||||
|
|
||||||
|
create l_src_dir.make_with_path (l_config)
|
||||||
|
-- Create the element
|
||||||
|
create l_dest_dir.make_with_path (a_cms_path.extended(a_element))
|
||||||
|
if not l_dest_dir.exists then
|
||||||
|
l_dest_dir.create_dir
|
||||||
|
end
|
||||||
|
copy_elements (l_src_dir, l_dest_dir)
|
||||||
|
else
|
||||||
|
print ("Error not possible to retrieve module name.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
copy_elements (a_src_dir: DIRECTORY; a_dest_dir: DIRECTORY)
|
||||||
|
-- Copy all elements from a_src_dir to a_dest_dir.
|
||||||
|
local
|
||||||
|
l_dir: DIRECTORY
|
||||||
|
l_new_dir: DIRECTORY
|
||||||
|
entry: PATH
|
||||||
|
l_file: FILE
|
||||||
|
do
|
||||||
|
across
|
||||||
|
a_src_dir.entries as ic
|
||||||
|
loop
|
||||||
|
entry := ic.item
|
||||||
|
if not (entry.is_current_symbol or else entry.is_parent_symbol) then
|
||||||
|
create {RAW_FILE} l_file.make_with_path (a_src_dir.path.extended_path (ic.item))
|
||||||
|
if not l_file.is_directory then
|
||||||
|
copy_file (l_file, a_dest_dir.path)
|
||||||
|
else
|
||||||
|
create l_dir.make_with_path (a_src_dir.path.extended_path (entry))
|
||||||
|
create l_new_dir.make_with_path (a_dest_dir.path.extended_path (entry))
|
||||||
|
if not l_new_dir.exists then
|
||||||
|
l_new_dir.create_dir
|
||||||
|
end
|
||||||
|
if l_dir.exists then
|
||||||
|
copy_elements (l_dir, l_new_dir)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
feature {NONE} -- Copy File
|
||||||
|
|
||||||
|
copy_file (a_file: FILE; a_dir: PATH)
|
||||||
|
--Copy file `a_file' to dir `a_dir'.
|
||||||
|
local
|
||||||
|
l_dest: RAW_FILE
|
||||||
|
l_path: PATH
|
||||||
|
do
|
||||||
|
if attached a_file.path.entry as l_name then
|
||||||
|
l_path := a_dir.absolute_path.extended (l_name.name)
|
||||||
|
create l_dest.make_with_path (l_path)
|
||||||
|
l_dest.create_read_write
|
||||||
|
a_file.open_read
|
||||||
|
-- Copy file source to destination
|
||||||
|
if l_dest.exists and then l_dest.is_writable and then a_file.exists and then a_file.is_readable then
|
||||||
|
a_file.copy_to (l_dest)
|
||||||
|
a_file.close
|
||||||
|
l_dest.close
|
||||||
|
end
|
||||||
|
else
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
feature {NONE} -- Command Validator
|
||||||
|
|
||||||
|
install_module_path: PATH
|
||||||
|
-- Path to the module to install.
|
||||||
|
do
|
||||||
|
if attached separate_word_option_value ("m") as l_m then
|
||||||
|
create Result.make_from_string (l_m)
|
||||||
|
elseif attached separate_word_option_value ("-module") as l_m then
|
||||||
|
create Result.make_from_string (l_m)
|
||||||
|
else
|
||||||
|
Result := Execution_environment.current_working_path
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
install_cms_path: PATH
|
||||||
|
-- Path to the cms application to install a module.
|
||||||
|
local
|
||||||
|
l_dir: DIRECTORY
|
||||||
|
do
|
||||||
|
if attached separate_word_option_value ("d") as l_m then
|
||||||
|
create Result.make_from_string (l_m)
|
||||||
|
elseif attached separate_word_option_value ("-dir") as l_m then
|
||||||
|
create Result.make_from_string (l_m)
|
||||||
|
else
|
||||||
|
Result := Execution_environment.current_working_path.extended ("modules")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
is_valid_install_cmd: BOOLEAN
|
||||||
|
-- Is the submitted install command valid?
|
||||||
|
-- install [--module|-m %MODULE_PATH%] -cap %CMS_PATH%
|
||||||
|
local
|
||||||
|
i: INTEGER
|
||||||
|
error: BOOLEAN
|
||||||
|
optional_module: BOOLEAN
|
||||||
|
cms_path: BOOLEAN
|
||||||
|
do
|
||||||
|
-- TODO add error reporting.
|
||||||
|
if argument_count >= 2 and then argument_count <= 5 then
|
||||||
|
from
|
||||||
|
i := 2
|
||||||
|
until
|
||||||
|
i > argument_count
|
||||||
|
loop
|
||||||
|
if option_word_equal (argument (i), "m") then
|
||||||
|
optional_module := True
|
||||||
|
elseif option_word_equal (argument (i), "-module") then
|
||||||
|
optional_module := True
|
||||||
|
elseif option_word_equal (argument (i), "d") then
|
||||||
|
cms_path := True
|
||||||
|
elseif option_word_equal (argument (i), "-dir") then
|
||||||
|
cms_path := True
|
||||||
|
end
|
||||||
|
i := i + 1
|
||||||
|
end
|
||||||
|
if argument_count = 5 then
|
||||||
|
if (cms_path and optional_module) then
|
||||||
|
-- valid command
|
||||||
|
Result := True
|
||||||
|
else
|
||||||
|
print ("Error check the optional argument --module|-m and --dir|-d")
|
||||||
|
end
|
||||||
|
elseif argument_count = 3 then
|
||||||
|
if (cms_path and not optional_module) then
|
||||||
|
Result := True
|
||||||
|
else
|
||||||
|
print ("Error missing value for dir")
|
||||||
|
Result := False
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Result := True
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Result := False
|
||||||
|
if argument_count > 5 then
|
||||||
|
print ("Too many arguments")
|
||||||
|
end
|
||||||
|
if argument_count < 2 then
|
||||||
|
print ("Too few argumetns")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
feature -- Constants
|
||||||
|
|
||||||
|
Config_dir: STRING = "config"
|
||||||
|
-- Configuration dir.
|
||||||
|
|
||||||
|
Scripts_dir: STRING = "scripts"
|
||||||
|
-- Scripts dir.
|
||||||
|
|
||||||
|
Themes_dir: STRING = "themes"
|
||||||
|
-- Themes dir.
|
||||||
|
|
||||||
|
end
|
||||||
19
tools/roc/roc.ecf
Normal file
19
tools/roc/roc.ecf
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-13-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-13-0 http://www.eiffel.com/developers/xml/configuration-1-13-0.xsd" name="roc" uuid="10B0F9A7-B711-419B-A1B5-833EB61DF8A6">
|
||||||
|
<target name="roc">
|
||||||
|
<root class="APPLICATION" feature="make"/>
|
||||||
|
<option warning="true" void_safety="all">
|
||||||
|
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
|
||||||
|
</option>
|
||||||
|
<setting name="console_application" value="true"/>
|
||||||
|
<precompile name="base_pre" location="$ISE_PRECOMP\base-safe.ecf"/>
|
||||||
|
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
|
||||||
|
<cluster name="roc" location=".\" recursive="true">
|
||||||
|
<file_rule>
|
||||||
|
<exclude>/EIFGENs$</exclude>
|
||||||
|
<exclude>/CVS$</exclude>
|
||||||
|
<exclude>/.svn$</exclude>
|
||||||
|
</file_rule>
|
||||||
|
</cluster>
|
||||||
|
</target>
|
||||||
|
</system>
|
||||||
Reference in New Issue
Block a user