[ADDED] Soporte para nuevos tipos de proyectos: PHP, C, C++, C# y Rust

This commit is contained in:
Mauro Rosero P. 2025-03-12 18:40:34 -05:00
parent 9c651f54c8
commit 6aa59d846b
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26

View file

@ -40,7 +40,7 @@ PROJECT_TYPE=""
PROJECT_DESCRIPTION="" PROJECT_DESCRIPTION=""
PROJECT_LICENSE="" PROJECT_LICENSE=""
PROJECT_LICENSE_TEXT="" PROJECT_LICENSE_TEXT=""
VALID_TYPES=("ansible" "odoo" "sp32home" "nodejs" "python" "cobol" "otros") VALID_TYPES=("ansible" "odoo" "sp32home" "nodejs" "python" "cobol" "php" "c" "cpp" "csharp" "rust" "otros")
# Estructura de datos para licencias: nombre, badge, texto corto # Estructura de datos para licencias: nombre, badge, texto corto
declare -A LICENSE_BADGES declare -A LICENSE_BADGES
@ -428,6 +428,89 @@ EOF
2. Active el entorno virtual: \`source .venv/bin/activate\` 2. Active el entorno virtual: \`source .venv/bin/activate\`
3. Instale las dependencias: \`pip install -r requirements.txt\` 3. Instale las dependencias: \`pip install -r requirements.txt\`
4. Instale el paquete en modo desarrollo: \`pip install -e .\` 4. Instale el paquete en modo desarrollo: \`pip install -e .\`
EOF
;;
"php")
cat >> "$PROJECT_PATH/README.md" << EOF
├── src/ # Código fuente PHP
├── public/ # Archivos públicos y punto de entrada
├── assets/ # Recursos estáticos (CSS, JS, imágenes)
├── templates/ # Plantillas
└── vendor/ # Dependencias (gestionadas por Composer)
\`\`\`
## 🚀 Uso
1. Instale las dependencias: \`composer install\`
2. Configure el servidor web para apuntar a la carpeta \`public/\`
3. Visite la aplicación en su navegador
EOF
;;
"c")
cat >> "$PROJECT_PATH/README.md" << EOF
├── include/ # Archivos de cabecera (.h)
├── src/ # Archivos fuente (.c)
├── lib/ # Bibliotecas
├── tests/ # Pruebas unitarias
└── build/ # Archivos de compilación
\`\`\`
## 🚀 Uso
1. Configure el proyecto: \`mkdir build && cd build && cmake ..\`
2. Compile el proyecto: \`make\`
3. Ejecute las pruebas: \`make test\`
4. Ejecute la aplicación: \`./bin/$PROJECT_NAME\`
EOF
;;
"cpp")
cat >> "$PROJECT_PATH/README.md" << EOF
├── include/ # Archivos de cabecera (.hpp)
├── src/ # Archivos fuente (.cpp)
├── lib/ # Bibliotecas
├── tests/ # Pruebas unitarias
└── build/ # Archivos de compilación
\`\`\`
## 🚀 Uso
1. Configure el proyecto: \`mkdir build && cd build && cmake ..\`
2. Compile el proyecto: \`make\`
3. Ejecute las pruebas: \`make test\`
4. Ejecute la aplicación: \`./bin/$PROJECT_NAME\`
EOF
;;
"csharp")
cat >> "$PROJECT_PATH/README.md" << EOF
├── src/ # Código fuente C#
├── Tests/ # Pruebas unitarias
├── Models/ # Modelos de datos
├── Controllers/ # Controladores (si es una aplicación web)
└── Properties/ # Configuraciones y propiedades
\`\`\`
## 🚀 Uso
1. Restaure las dependencias: \`dotnet restore\`
2. Compile el proyecto: \`dotnet build\`
3. Ejecute las pruebas: \`dotnet test\`
4. Ejecute la aplicación: \`dotnet run\`
EOF
;;
"rust")
cat >> "$PROJECT_PATH/README.md" << EOF
├── src/ # Código fuente Rust
├── tests/ # Pruebas
├── examples/ # Ejemplos de uso
└── target/ # Directorio de compilación (generado)
\`\`\`
## 🚀 Uso
1. Compile el proyecto: \`cargo build\`
2. Ejecute las pruebas: \`cargo test\`
3. Ejecute la aplicación: \`cargo run\`
4. Compile para producción: \`cargo build --release\`
EOF EOF
;; ;;
"cobol") "cobol")
@ -518,6 +601,155 @@ EOF
# Crear un __init__.py básico # Crear un __init__.py básico
touch "$PROJECT_PATH/src/$PROJECT_NAME/__init__.py" touch "$PROJECT_PATH/src/$PROJECT_NAME/__init__.py"
;; ;;
"php")
mkdir -p "$PROJECT_PATH/src"
mkdir -p "$PROJECT_PATH/public"
mkdir -p "$PROJECT_PATH/assets/css"
mkdir -p "$PROJECT_PATH/assets/js"
mkdir -p "$PROJECT_PATH/assets/img"
mkdir -p "$PROJECT_PATH/templates"
mkdir -p "$PROJECT_PATH/vendor"
# Crear un archivo index.php básico
echo '<?php\n// Punto de entrada de la aplicación\nrequire_once __DIR__ . "/../vendor/autoload.php";\n' > "$PROJECT_PATH/public/index.php"
# Crear composer.json básico
cat > "$PROJECT_PATH/composer.json" << EOF
{
"name": "rosero-one/$PROJECT_NAME",
"description": "Proyecto PHP $PROJECT_NAME",
"type": "project",
"require": {
"php": ">=7.4"
},
"autoload": {
"psr-4": {
"App\\\\": "src/"
}
}
}
EOF
;;
"c")
mkdir -p "$PROJECT_PATH/include"
mkdir -p "$PROJECT_PATH/src"
mkdir -p "$PROJECT_PATH/lib"
mkdir -p "$PROJECT_PATH/tests"
mkdir -p "$PROJECT_PATH/build"
# Crear un archivo CMakeLists.txt básico
cat > "$PROJECT_PATH/CMakeLists.txt" << EOF
cmake_minimum_required(VERSION 3.10)
project($PROJECT_NAME C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
include_directories(include)
file(GLOB SOURCES "src/*.c")
add_executable(\${PROJECT_NAME} \${SOURCES})
EOF
# Crear un archivo main.c básico
cat > "$PROJECT_PATH/src/main.c" << EOF
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Hola desde $PROJECT_NAME!\n");
return 0;
}
EOF
;;
"cpp")
mkdir -p "$PROJECT_PATH/include"
mkdir -p "$PROJECT_PATH/src"
mkdir -p "$PROJECT_PATH/lib"
mkdir -p "$PROJECT_PATH/tests"
mkdir -p "$PROJECT_PATH/build"
# Crear un archivo CMakeLists.txt básico
cat > "$PROJECT_PATH/CMakeLists.txt" << EOF
cmake_minimum_required(VERSION 3.10)
project($PROJECT_NAME CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include_directories(include)
file(GLOB SOURCES "src/*.cpp")
add_executable(\${PROJECT_NAME} \${SOURCES})
EOF
# Crear un archivo main.cpp básico
cat > "$PROJECT_PATH/src/main.cpp" << EOF
#include <iostream>
int main(int argc, char *argv[]) {
std::cout << "Hola desde $PROJECT_NAME!" << std::endl;
return 0;
}
EOF
;;
"csharp")
mkdir -p "$PROJECT_PATH/src"
mkdir -p "$PROJECT_PATH/Tests"
mkdir -p "$PROJECT_PATH/Models"
mkdir -p "$PROJECT_PATH/Controllers"
mkdir -p "$PROJECT_PATH/Properties"
# Crear un archivo de proyecto .csproj básico
cat > "$PROJECT_PATH/$PROJECT_NAME.csproj" << EOF
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
EOF
# Crear un archivo Program.cs básico
cat > "$PROJECT_PATH/src/Program.cs" << EOF
namespace $PROJECT_NAME;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hola desde $PROJECT_NAME!");
}
}
EOF
;;
"rust")
mkdir -p "$PROJECT_PATH/src"
mkdir -p "$PROJECT_PATH/tests"
mkdir -p "$PROJECT_PATH/examples"
# Crear un archivo Cargo.toml básico
cat > "$PROJECT_PATH/Cargo.toml" << EOF
[package]
name = "$PROJECT_NAME"
version = "0.1.0"
edition = "2021"
[dependencies]
EOF
# Crear un archivo main.rs básico
cat > "$PROJECT_PATH/src/main.rs" << EOF
fn main() {
println!("Hola desde $PROJECT_NAME!");
}
EOF
# Crear un archivo lib.rs básico
cat > "$PROJECT_PATH/src/lib.rs" << EOF
// Biblioteca principal para $PROJECT_NAME
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}
EOF
;;
"cobol") "cobol")
mkdir -p "$PROJECT_PATH/src/main" mkdir -p "$PROJECT_PATH/src/main"
mkdir -p "$PROJECT_PATH/src/copy" mkdir -p "$PROJECT_PATH/src/copy"