moved component maker into it's own repo:
This commit is contained in:
parent
9add26b186
commit
f1e74c60fb
@ -1,14 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Check if $name is set
|
|
||||||
if [[ -z "${name}" ]]; then
|
|
||||||
echo "Error: Variable \$name is not set. Exiting (displaycontroller.sh)."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat <<EOM > admin/tmpl/${name}/default.php
|
|
||||||
<?php defined('_JEXEC') or die('Restricted Access'); ?>
|
|
||||||
|
|
||||||
<h2>Hello ${name}!</h2>
|
|
||||||
|
|
||||||
EOM
|
|
@ -1,29 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Check if $name is set
|
|
||||||
if [[ -z "${name}" ]]; then
|
|
||||||
echo "Error: Variable \$name is not set. Exiting (displaycontroller.sh)."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat <<EOM > admin/src/Controller/DisplayController.php
|
|
||||||
<?php
|
|
||||||
namespace Harvst\\Component\\${name^}\\Administrator\\Controller;
|
|
||||||
|
|
||||||
defined('_JEXEC') or die;
|
|
||||||
|
|
||||||
use Joomla\CMS\MVC\Controller\BaseController;
|
|
||||||
|
|
||||||
class DisplayController extends BaseController {
|
|
||||||
|
|
||||||
protected \$default_view = '${name}';
|
|
||||||
|
|
||||||
public function display(\$cachable = false, \$urlparams = array()) {
|
|
||||||
return parent::display(\$cachable, \$urlparams);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
EOM
|
|
||||||
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
cat <<EOM > admin/language/en-GB/en-GB.com_${name}.ini
|
|
||||||
; com_${name}
|
|
||||||
COM_${name^^}_DESCRIPTION="Placeholder description, edit in language file"
|
|
||||||
EOM
|
|
||||||
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
current_date=$(date +'%B %Y')
|
|
||||||
current_year=$(date +'%Y')
|
|
||||||
# Check if JOOMLA_USER is set, otherwise prompt for it
|
|
||||||
if [ -z "$JOOMLA_USER" ]; then
|
|
||||||
read -p "Enter the Joomla user: " JOOMLA_USER
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if EMAIL is set, otherwise prompt for it
|
|
||||||
if [ -z "$EMAIL" ]; then
|
|
||||||
read -p "Enter the email address: " EMAIL
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat <<EOM > ${name}.xml
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<extension type="component" method="upgrade">
|
|
||||||
<name>${name}</name>
|
|
||||||
<creationDate>${current_date}</creationDate>
|
|
||||||
<author>${JOOMLA_USER}</author>
|
|
||||||
<authorEmail>${EMAIL}</authorEmail>
|
|
||||||
<authorUrl>https://www.example.com/</authorUrl>
|
|
||||||
<copyright>Copyright (C) ${current_year} ${JOOMLA_USER}, All rights reserved.</copyright>
|
|
||||||
<license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
|
|
||||||
|
|
||||||
<version>0.0.1</version>
|
|
||||||
|
|
||||||
<!-- The description is optional and defaults to the name -->
|
|
||||||
<description>COM_${name^^}_DESCRIPTION</description>
|
|
||||||
|
|
||||||
<namespace path="src/">Harvst\Component\\${name^}</namespace>
|
|
||||||
|
|
||||||
<administration>
|
|
||||||
<!-- The link that will appear in the Admin panel's "Components" menu -->
|
|
||||||
<menu link="index.php?option=com_${name}">${name^}</menu>
|
|
||||||
<files folder="admin">
|
|
||||||
<folder>language</folder>
|
|
||||||
<folder>services</folder>
|
|
||||||
<folder>src</folder>
|
|
||||||
<folder>tmpl</folder>
|
|
||||||
</files>
|
|
||||||
<languages folder="admin">
|
|
||||||
<!-- TODO: It's there but not working -->
|
|
||||||
<language tag="en-GB">language/en-GB/en-GB.com_${name}.ini</language>
|
|
||||||
</languages>
|
|
||||||
</administration>
|
|
||||||
</extension>
|
|
||||||
EOM
|
|
||||||
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
cat <<EOM > admin/services/provider.php
|
|
||||||
|
|
||||||
<?php defined('_JEXEC') or die;
|
|
||||||
|
|
||||||
use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface;
|
|
||||||
use Joomla\CMS\Extension\ComponentInterface;
|
|
||||||
use Joomla\CMS\Extension\MVCComponent;
|
|
||||||
use Joomla\CMS\Extension\Service\Provider\ComponentDispatcherFactory;
|
|
||||||
use Joomla\CMS\Extension\Service\Provider\MVCFactory;
|
|
||||||
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
|
|
||||||
use Joomla\DI\Container;
|
|
||||||
use Joomla\DI\ServiceProviderInterface;
|
|
||||||
|
|
||||||
return new class implements ServiceProviderInterface {
|
|
||||||
|
|
||||||
public function register(Container \$container): void {
|
|
||||||
\$container->registerServiceProvider(new MVCFactory('\\\\Harvst\\\\Component\\\\${name^}'));
|
|
||||||
\$container->registerServiceProvider(new ComponentDispatcherFactory('\\\\Harvst\\\\Component\\\\${name^}'));
|
|
||||||
\$container->set(
|
|
||||||
ComponentInterface::class,
|
|
||||||
function (Container \$container) {
|
|
||||||
\$component = new MVCComponent(\$container->get(ComponentDispatcherFactoryInterface::class));
|
|
||||||
\$component->setMVCFactory(\$container->get(MVCFactoryInterface::class));
|
|
||||||
|
|
||||||
return \$component;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
EOM
|
|
@ -1,26 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Check if $name is set
|
|
||||||
if [[ -z "${name}" ]]; then
|
|
||||||
echo "Error: Variable \$name is not set. Exiting (displaycontroller.sh)."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat <<EOM > admin/src/View/${name^}/HtmlView.php
|
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Harvst\\Component\\${name^}\\Administrator\\View\\${name^};
|
|
||||||
|
|
||||||
defined('_JEXEC') or die;
|
|
||||||
|
|
||||||
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
|
|
||||||
|
|
||||||
class HtmlView extends BaseHtmlView {
|
|
||||||
|
|
||||||
function display(\$tpl = null) {
|
|
||||||
parent::display(\$tpl);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
EOM
|
|
@ -1,81 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# create_component.sh componentName
|
|
||||||
|
|
||||||
# Determine the directory where the script is located
|
|
||||||
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
|
||||||
|
|
||||||
#################################################################################
|
|
||||||
# ENV File
|
|
||||||
#################################################################################
|
|
||||||
# Import variables from .env file
|
|
||||||
if [ -f "$script_dir/../.env" ]; then
|
|
||||||
read -p "Found .env file at '$script_dir/.env'. Press Enter to use it, or enter a different file path: " env_file
|
|
||||||
if [ -z "$env_file" ]; then
|
|
||||||
env_file="$script_dir/.env"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
read -p "Enter the path to the .env file: " env_file
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Validate the .env file path
|
|
||||||
if [ ! -f "$env_file" ]; then
|
|
||||||
echo "Invalid .env file path. Please make sure the file exists."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Source the variables from the .env file
|
|
||||||
source "$env_file"
|
|
||||||
|
|
||||||
echo "Variables from .env file imported successfully!"
|
|
||||||
|
|
||||||
#################################################################################
|
|
||||||
# Component Name
|
|
||||||
#################################################################################
|
|
||||||
|
|
||||||
# Check if the component name is provided as the first parameter
|
|
||||||
if [ -n "$1" ]; then
|
|
||||||
name="$1"
|
|
||||||
else
|
|
||||||
# Prompt for the name of the component
|
|
||||||
read -p "Enter the name of the component (one word in lowercase): " name
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Validate the component name
|
|
||||||
if [[ ! "$name" =~ ^[a-z0-9_]+$ ]]; then
|
|
||||||
echo "Invalid component name. The name should be one word in lowercase with no spaces or special characters."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if Components directory exists (development)
|
|
||||||
if [ ! -d "development" ]; then
|
|
||||||
echo "Development directory not found. Creating the directory..."
|
|
||||||
mkdir "development"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Change the current working directory to Components
|
|
||||||
cd "development" || exit
|
|
||||||
|
|
||||||
#################################################################################
|
|
||||||
# Do the work
|
|
||||||
#################################################################################
|
|
||||||
|
|
||||||
# Create the component directory
|
|
||||||
component_dir="com_${name}"
|
|
||||||
mkdir -p "$component_dir"
|
|
||||||
|
|
||||||
# Create the main component files
|
|
||||||
cd "$component_dir" || exit
|
|
||||||
mkdir -p site
|
|
||||||
mkdir -p admin/language/en-GB admin/services
|
|
||||||
mkdir -p admin/src/Controller admin/src/View/${name^} admin/tmpl/${name}
|
|
||||||
|
|
||||||
# Source the files for generating component files
|
|
||||||
source "$script_dir/component_parts/manifest.sh"
|
|
||||||
source "$script_dir/component_parts/language.sh"
|
|
||||||
source "$script_dir/component_parts/provider.sh"
|
|
||||||
source "$script_dir/component_parts/displaycontroller.sh"
|
|
||||||
source "$script_dir/component_parts/view.sh"
|
|
||||||
source "$script_dir/component_parts/defaultview.sh"
|
|
||||||
|
|
||||||
echo "Component framework generated successfully!"
|
|
||||||
echo "You should manually edit the manifest file before checkin"
|
|
@ -1,50 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
###################################################################################################
|
|
||||||
# INSTRUCTIONS
|
|
||||||
# Move to the directory of the component
|
|
||||||
# Run this script with component name (com_name)
|
|
||||||
###################################################################################################
|
|
||||||
|
|
||||||
# Check if the component name is provided as the first parameter
|
|
||||||
if [ -n "$1" ]; then
|
|
||||||
componentName="$1"
|
|
||||||
else
|
|
||||||
# Prompt for the name of the component
|
|
||||||
read -p "Enter the name of the component (including com_): " componentName
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if the component name starts with 'com_'
|
|
||||||
if [[ $componentName != com_* ]]; then
|
|
||||||
echo "Invalid component name. The name should start with 'com_'"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if the component folder exists
|
|
||||||
if [ ! -d "$componentName" ]; then
|
|
||||||
echo "Component folder '$componentName' does not exist."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Extract the name by removing the first four characters
|
|
||||||
name="${componentName:4}"
|
|
||||||
|
|
||||||
# Read the contents of $name/$name.xml file
|
|
||||||
xml_file="$componentName/$name.xml"
|
|
||||||
if [ -f "$xml_file" ]; then
|
|
||||||
xml_contents=$(cat "$xml_file")
|
|
||||||
else
|
|
||||||
echo "XML file '$xml_file' not found."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Extract the version from the XML contents
|
|
||||||
regex="<version>(.*?)<\/version>"
|
|
||||||
if [[ $xml_contents =~ $regex ]]; then
|
|
||||||
version="${BASH_REMATCH[1]}"
|
|
||||||
else
|
|
||||||
echo "Version not found in the XML file."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
zip_filename="$name-$version.zip"
|
|
||||||
cd "$componentName" && 7z a "../$zip_filename" *
|
|
Reference in New Issue
Block a user