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