Compare commits

...

2 commits

Author SHA1 Message Date
f29bcb7940
[SOPS] Limpieza de archivos obsoletos y adición de archivos de configuración
- Eliminados scripts obsoletos (project_create.sh, odoo_set.sh)
- Eliminados archivos de configuración obsoletos (odoo.repo.1, odoo.repo.2)
- Añadidos nuevos archivos de configuración (python.head, rate_temperature.ai)

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-03-13 07:40:30 -05:00
bd0b200118
[ADDED] Archivos .gitignore específicos para cada tipo de proyecto
- Creados archivos .gitignore para cada tipo de proyecto con reglas específicas
- Para Odoo, se excluye de seguimiento la carpeta data y su contenido
- Integrados en project_new.sh para copiarse automáticamente al crear un proyecto

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-03-13 07:35:25 -05:00
19 changed files with 917 additions and 978 deletions

View file

@ -0,0 +1,43 @@
# Ansible gitignore
# Ansible roles downloaded from Galaxy
roles/*
!roles/requirements.yml
# Ansible vault password file
.vault_pass
# Inventory files with sensitive data
inventory/group_vars/*/vault.yml
inventory/host_vars/*/vault.yml
# Retry files
*.retry
# Log files
*.log
# Runtime files
*.pid
# Python artifacts
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

76
bin/config/c.gitignore Normal file
View file

@ -0,0 +1,76 @@
# C gitignore
# Prerequisites
*.d
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
# CMake build
build/
CMakeFiles/
CMakeCache.txt
cmake_install.cmake
Makefile
*.cmake
# IDE specific files
.vscode/
.idea/
*.swp
*.swo
*~
# Logs
*.log
# Test binary
test_*
!test_*.c

View file

@ -0,0 +1,52 @@
# COBOL gitignore
# Objetos compilados
*.o
*.so
*.dll
*.exe
*.out
*.obj
# Archivos intermedios
*.int
*.gnt
*.idy
*.lst
*.i
*.x
*.d
*.lis
# Archivos de respaldo
*~
*.bak
*.back
*.backup
# Logs y archivos temporales
*.log
*.tmp
temp/
tmp/
# Archivos específicos de IDE
.vscode/
.idea/
*.sublime-project
*.sublime-workspace
# Directorios de compilación
build/
bin/
obj/
# Archivos de configuración local
*.env
.env
local_settings.txt
# Archivos de datos de prueba
*.dat
*.idx
*.testdata

96
bin/config/cpp.gitignore Normal file
View file

@ -0,0 +1,96 @@
# C++ gitignore
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
# Build directories
build/
debug/
release/
bin/
obj/
# CMake artifacts
CMakeFiles/
CMakeCache.txt
cmake_install.cmake
compile_commands.json
CTestTestfile.cmake
Makefile
*.cmake
# IDE specific files
.vscode/
.idea/
*.sublime-workspace
*.sublime-project
*.swp
*.swo
*~
.vs/
*.ncb
*.suo
*.sdf
*.opensdf
*.user
*.filters
ipch/
# Editor specific
*.bak
*.tmp
# Qt
moc_*.cpp
qrc_*.cpp
ui_*.h
object_script.*
*.pro.user
*.pro.user.*
*.qbs.user
*.qbs.user.*
*.moc
# Doxygen
html/
latex/
docs/
# Logs
*.log
# Dependencies
conan.lock
conanbuildinfo.*
conaninfo.*
graph_info.json

114
bin/config/csharp.gitignore Normal file
View file

@ -0,0 +1,114 @@
# C# gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio files
.vs/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
*.psess
*.vsp
*.vspx
*.sap
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# ReSharper
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode
.JustCode
# TeamCity
_TeamCity*
# DotCover
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# Logs
*.log
*.logs
# Rider
.idea/
*.sln.iml
# User-specific files
*.rsuser

View file

@ -0,0 +1,77 @@
# Node.js gitignore
# Dependencias
node_modules/
jspm_packages/
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Archivos de diagnóstico
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Datos en tiempo de ejecución
pids
*.pid
*.seed
*.pid.lock
# Directorio para bibliotecas instrumentadas generadas por jscoverage/JSCover
lib-cov
# Directorio de cobertura utilizado por herramientas como istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Almacenamiento intermedio de TypeScript
*.tsbuildinfo
# Directorios opcionales de npm
.npm
.node_repl_history
# Salida de 'npm pack'
*.tgz
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# Cache y build
.cache/
dist/
build/
.next/
out/
.nuxt/
.output/
.vuepress/dist
# Directorios específicos del sistema
.DS_Store
Thumbs.db
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
# Archivos de bloqueo
package-lock.json
yarn.lock
# Mantener en el repositorio
!.yarn.lock

63
bin/config/odoo.gitignore Normal file
View file

@ -0,0 +1,63 @@
# Odoo gitignore
# Data directory - No hacer seguimiento de la carpeta data y su contenido
data/
/data/
# Bytecode
*.py[cod]
__pycache__/
# Archivos generados por Odoo
*.pot
*.pyc
*.pyo
*.mo
*.egg-info
*.egg
# Directorios generados por Odoo
.eggs/
eggs/
develop-eggs/
node_modules/
/venv/
/.venv/
# Logs y bases de datos de prueba
filestore/
logs/
*.log
*.sql
*.sqlite
*.rdb
# IDE y configuración de entorno
.idea/
.vscode/
.DS_Store
.env
.env*
!.env.example
# Configuración local
odoo.conf
.odoorc
.odoorpc
# Archivos temporales
*.swp
*.tmp
*~
*.bak
# Archivos de sesión
.directory
.Trash-*
# Archivos de virtualenv
bin/
include/
lib/
share/
pip-selfcheck.json

View file

@ -1 +0,0 @@
git@git.rosero.one:mrosero/devs_odoo.git

View file

@ -1 +0,0 @@
https://git.rosero.one/mrosero/devs_odoo.git

View file

@ -0,0 +1,94 @@
# Archivo .gitignore genérico para diversos proyectos
# Archivos temporales
*.tmp
*.temp
*.swp
*.swo
*~
._*
*#
# Archivos de log
*.log
log/
logs/
# Archivos de entorno
.env
.env.*
!.env.example
# Archivos de caché
.cache/
cache/
.cached/
.sass-cache/
.eslintcache
.npm
.yarn/cache
# Dependencias
node_modules/
vendor/
bower_components/
jspm_packages/
.pnp/
.pnp.js
# Archivos de construcción
dist/
build/
out/
output/
target/
bin/
obj/
# Archivos de IDE
.idea/
.vscode/
*.sublime-project
*.sublime-workspace
.project
.settings/
.classpath
.DS_Store
.directory
Thumbs.db
.vs/
# Archivos de cobertura y testing
coverage/
.coverage
htmlcov/
test-results/
.pytest_cache/
.nyc_output/
.phpunit.result.cache
junit.xml
*.lcov
# Documentación generada
docs/_build/
docs/generated/
api-docs/
jsdoc/
apidoc/
# Archivos de configuración local y datos
*.sqlite
*.sqlite3
*.db
*.sql
*.dat
*.bak
config/local.json
config/local.yaml
config/local.yml
local.conf
# Sistema específico
.DS_Store
Thumbs.db
desktop.ini

85
bin/config/php.gitignore Normal file
View file

@ -0,0 +1,85 @@
# PHP gitignore
# Composer
/vendor/
composer.phar
/composer.lock
# Archivos de configuración sensibles
.env
.env.backup
.phpunit.result.cache
phpunit.xml
# Archivos de caché
*.cache
# Archivos de logs
*.log
logs/
error_log
access_log
# Archivos y directorios específicos de frameworks
/bootstrap/cache/
/storage/
/public/storage
/public/hot
# Laravel Mix
/node_modules/
/public/css/
/public/js/
/public/mix-manifest.json
# Symfony
/bin/*
/var/
/vendor/
/.env.local
/.env.local.php
/.env.*.local
/config/secrets/prod/prod.decrypt.private.php
/public/bundles/
# PHPUnit
/.phpunit.cache
.phpunit.result.cache
/phpunit.xml
# Directorios específicos del sistema
.DS_Store
Thumbs.db
# IDE y editores
/.idea/
/.vscode/
/.vagrant/
.project
.settings/
*.swp
*.swo
*~
.vs/
*.sublime-project
*.sublime-workspace
*.code-workspace
# Archivos específicos de WordPress
/wp-config.php
/wp-content/uploads/
/wp-content/cache/
/wp-content/backup-db/
/wp-content/upgrade/
/wp-content/updraft/
/wp-content/advanced-cache.php
/wp-content/wp-cache-config.php
/wp-content/debug.log
# Archivos de sistema
*.com
*.class
*.dll
*.exe
*.o
*.so

View file

@ -0,0 +1,83 @@
# Python gitignore
# Bytecode
__pycache__/
*.py[cod]
*$py.class
# Distribución y empaquetado
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Documentación
docs/_build/
docs/api/
docs/generated/
# Ambientes virtuales
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Archivos de configuración y datos locales
.spyderproject
.spyproject
.ropeproject
local_settings.py
db.sqlite3
db.sqlite3-journal
instance/
.webassets-cache
.ipynb_checkpoints
profile_default/
ipython_config.py
# Mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Entornos IDE
.idea/
.vscode/
*.swp
*.swo
*~
# Logs
*.log

11
bin/config/python.head Normal file
View file

@ -0,0 +1,11 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Programa:[program filename]
Descripción: [short program description]
Autor: [git user fullname <git user email>]
Creación: [Created Date]
Actualización: [updated]
Versión: [from version file]
Licencia: AGPL
"""

View file

@ -0,0 +1 @@
0.4

61
bin/config/rust.gitignore Normal file
View file

@ -0,0 +1,61 @@
# Rust gitignore
# Generated by Cargo
/target/
Cargo.lock
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
# These are backup files generated by rustfmt
**/*.rs.bk
# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb
# IDE specific files
.idea/
.vscode/
*.swp
*.swo
# Generated documentation
/doc/
/target/doc/
# Coverage reports
coverage/
*.profraw
# Logs
*.log
# Environment variables
.env
.env.*
!.env.example
# Compiled files
*.rlib
*.rmeta
*.a
*.so
*.dylib
*.dll
# Debug symbols
*.dSYM/
# Test binaries
tests/test_*/
# Optional: remove all test binaries in debug folder
target/debug/deps/*
!target/debug/deps/*.d
# Profiling data
*.prof
# OS specific
.DS_Store
Thumbs.db

View file

@ -0,0 +1,56 @@
# ESP32/Arduino gitignore
# Platformio
.pio
.pioenvs
.piolibdeps
.clang_complete
.gcc-flags.json
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch
# Archivos Arduino específicos
.build/
/build/
.arduino15/
ArduinoOutput/
# IDE específicos
.vscode/
.idea/
*.iml
*.iws
*.ipr
.DS_Store
.directory
# Archivos binarios y de compilación
*.bin
*.elf
*.hex
*.map
*.d
*.o
*.a
*.mk
*.gch
# Archivos de configuración privados
**/wifi_credentials.h
**/credentials.h
secrets.h
wifi_config.h
# Logs
*.log
debug.txt
serial.txt
# Archivos temporales
*~
~*
._*
*.bak
*.swp

View file

@ -1,169 +0,0 @@
#\!/bin/bash
#
# odoo_set.sh
# Modified: 2025/03/12 15:00:00
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one> (mauro.rosero@gmail.com)]
#
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
# bajo los términos de la Licencia Pública Affero General de GNU tal como
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
# o (a su elección) cualquier versión posterior.
#
# Este programa se distribuye con la esperanza de que sea útil,
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
# Licencia Pública Affero General de GNU para obtener más detalles.
#
# Debería haber recibido una copia de la Licencia Pública Affero General
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
# Script para crear proyectos Odoo
# Uso:
# ./odoo_set.sh
DEVSPATH=devs
BIN_HOME=$HOME/$DEVSPATH
BIN_MESG=bin/msg
BIN_LIBS=bin/lib
BIN_CFGS=bin/config
VERSION=1.0.0
# CHECK SHELL LANGUAGE
BIN_LANG=${LANG:0:2}
# LOAD BASE BASH LIBRARY
source $BIN_HOME/$BIN_LIBS/base.lib
# LOAD CONSOLE BASH LIBRARY
source $BIN_HOME/$BIN_LIBS/console.lib
# LOAD ODOO BASH LIBRARY
source $BIN_HOME/$BIN_LIBS/odoo.lib
# Load head messages
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
# Load odoo messages
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "odoo"
########### MAIN PROGRAM ###########
# Set program title
title="$head_000 $odmsg_000"
apps_title="${odmsg_102}"
# Check if dialog is not installed, exited\!
command_installed "dialog"
if [ $? -ne 0 ]
then
display_devstools_header "${odmsg_000}"
echo "${head_001}"
exit 200
fi
# Check if os is valid\!
get_osname
if [ "${os_name}" == "${head_unknow}" ]
then
dialog_error_box "${head_error}" "${head_os_error}"
exit 3
fi
# Obtener el nombre de carpeta de proyectos desde projects.dat
if [ -f "$BIN_HOME/$BIN_CFGS/projects.dat" ]; then
PROJECTS_FOLDER=$(cat "$BIN_HOME/$BIN_CFGS/projects.dat" | head -n 1)
else
dialog_error_box "${head_error}" "${odmsg_112}"
exit 4
fi
# Solicitar nombre del proyecto Odoo
clear
dialog_input_box "${odmsg_105}" "${odmsg_106}" ""
if [ $? -ne 0 ]; then
dialog_error_box "${head_error}" "${head_op_error}"
exit 1
fi
# Validar que el nombre no esté vacío
if [ -z "$value" ]; then
dialog_error_box "${head_error}" "${odmsg_107}"
exit 2
fi
PROJECT_NAME="$value"
# Solicitar descripción del proyecto Odoo
clear
dialog_input_box "${odmsg_117}" "" ""
if [ $? -ne 0 ]; then
dialog_error_box "${head_error}" "${head_op_error}"
exit 1
fi
PROJECT_DESCRIPTION="$value"
# Si no se proporciona descripción, usar un texto predeterminado
if [ -z "$PROJECT_DESCRIPTION" ]; then
PROJECT_DESCRIPTION="Este es un proyecto Odoo para gestionar procesos de negocio."
fi
# Inicializar la variable result
result=0
TEMP_FILE="/tmp/odoo_set_result.$$"
# Mostrar progreso de creación
(
echo 0; sleep 1
echo 20; echo "# ${odmsg_111}"
# Crear el proyecto Odoo
odoo_create_project "$PROJECT_NAME" "$PROJECTS_FOLDER" "$PROJECT_DESCRIPTION"
result=$?
# Guardar el resultado en un archivo temporal para recuperarlo después
echo $result > "$TEMP_FILE"
echo 80;
# Mensaje basado en el resultado
if [ $result -eq 0 ]; then
echo "# ${odmsg_115}"
elif [ $result -eq 1 ]; then
echo "# ${odmsg_110}"
else
echo "# ${odmsg_109}"
fi
sleep 1
# Finalizar
echo 100
sleep 1
) | dialog --backtitle "${title}" --title "${apps_title}" --gauge "" 10 70 0
# Recuperar el resultado
result=0 # Valor predeterminado en caso de error
if [ -f "$TEMP_FILE" ]; then
result=$(cat "$TEMP_FILE")
rm -f "$TEMP_FILE"
fi
case $result in
0)
# Mostrar mensaje de éxito con caja de diálogo ampliada para mejor visibilidad
# Bypassing dialog_error_box para tener más control sobre el tamaño
title_text="${head_info} - ${apps_title}"
message_text="${odmsg_108} $HOME/$DEVSPATH/$PROJECTS_FOLDER/$PROJECT_NAME\n\n${odmsg_116}"
dialog --backtitle "${title}" --title "${title_text}" --msgbox "\n${message_text}" 12 80
;;
1)
dialog_error_box "${head_warning}" "${odmsg_110}"
;;
2|3)
dialog_error_box "${head_error}" "${odmsg_109}"
;;
esac
# End Main Program
clear
exit 0

View file

@ -1,807 +0,0 @@
#!/bin/bash
#
# Script: project_create.sh
# Description: Crea una carpeta de proyecto con la estructura requerida
# Modified: 2025-03-12 20:26:07
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@rosero.one>]
#
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
# bajo los términos de la Licencia Pública Affero General de GNU tal como
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
# o (a su elección) cualquier versión posterior.
#
# Este programa se distribuye con la esperanza de que sea útil,
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
# Licencia Pública Affero General de GNU para obtener más detalles.
#
# Debería haber recibido una copia de la Licencia Pública Affero General
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
# Directorios base
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BASE_DIR="$(dirname "$SCRIPT_DIR")"
CONFIG_DIR="$SCRIPT_DIR/config"
LIB_DIR="$SCRIPT_DIR/lib"
MSG_DIR="$SCRIPT_DIR/msg"
# Cargar libraries
source "$LIB_DIR/base.lib"
source "$LIB_DIR/console.lib"
source "$MSG_DIR/head.es"
# Variables globales
title="${head_000} ${head_002}"
apps_title="${proj_001}"
PROJECT_FOLDER=""
PROJECT_NAME=""
PROJECT_PATH=""
PROJECT_TYPE=""
PROJECT_DESCRIPTION=""
PROJECT_LICENSE=""
PROJECT_LICENSE_TEXT=""
VALID_TYPES=("ansible" "odoo" "sp32home" "nodejs" "python" "cobol" "php" "c" "cpp" "csharp" "rust" "otros")
# Estructura de datos para licencias: nombre, badge, texto corto
declare -A LICENSE_BADGES
LICENSE_BADGES["AGPL-3.0"]="https://img.shields.io/badge/License-AGPL--3.0-blue.svg"
LICENSE_BADGES["GPL-3.0"]="https://img.shields.io/badge/License-GPL--3.0-blue.svg"
LICENSE_BADGES["LGPL-3.0"]="https://img.shields.io/badge/License-LGPL--3.0-blue.svg"
LICENSE_BADGES["MIT"]="https://img.shields.io/badge/License-MIT-yellow.svg"
LICENSE_BADGES["Apache-2.0"]="https://img.shields.io/badge/License-Apache_2.0-blue.svg"
LICENSE_BADGES["BSD-3-Clause"]="https://img.shields.io/badge/License-BSD_3--Clause-blue.svg"
LICENSE_BADGES["BSD-2-Clause"]="https://img.shields.io/badge/License-BSD_2--Clause-orange.svg"
LICENSE_BADGES["CC-BY-4.0"]="https://img.shields.io/badge/License-CC_BY_4.0-lightgrey.svg"
LICENSE_BADGES["CC-BY-SA-4.0"]="https://img.shields.io/badge/License-CC_BY--SA_4.0-lightgrey.svg"
LICENSE_BADGES["CC0-1.0"]="https://img.shields.io/badge/License-CC0_1.0-lightgrey.svg"
LICENSE_BADGES["EPL-2.0"]="https://img.shields.io/badge/License-EPL_2.0-red.svg"
LICENSE_BADGES["MPL-2.0"]="https://img.shields.io/badge/License-MPL_2.0-brightgreen.svg"
LICENSE_BADGES["Unlicense"]="https://img.shields.io/badge/license-Unlicense-blue.svg"
LICENSE_BADGES["OPL-1.0"]="https://img.shields.io/badge/License-OPL--1.0-orange.svg"
LICENSE_BADGES["OEEL-1.0"]="https://img.shields.io/badge/License-OEEL--1.0-red.svg"
LICENSE_BADGES["CC-BY-NC-4.0"]="https://img.shields.io/badge/License-CC_BY--NC_4.0-lightgrey.svg"
LICENSE_BADGES["CC-BY-NC-SA-4.0"]="https://img.shields.io/badge/License-CC_BY--NC--SA_4.0-lightgrey.svg"
LICENSE_BADGES["CC-BY-ND-4.0"]="https://img.shields.io/badge/License-CC_BY--ND_4.0-lightgrey.svg"
LICENSE_BADGES["CC-BY-NC-ND-4.0"]="https://img.shields.io/badge/License-CC_BY--NC--ND_4.0-lightgrey.svg"
LICENSE_BADGES["Copyright"]="https://img.shields.io/badge/License-Copyright-darkred.svg"
LICENSE_BADGES["Proprietary"]="https://img.shields.io/badge/License-Proprietary-darkblue.svg"
declare -A LICENSE_TEXTS
LICENSE_TEXTS["AGPL-3.0"]="Este proyecto está licenciado bajo la Licencia Pública General Affero de GNU (AGPL-3.0)."
LICENSE_TEXTS["GPL-3.0"]="Este proyecto está licenciado bajo la Licencia Pública General de GNU (GPL-3.0)."
LICENSE_TEXTS["LGPL-3.0"]="Este proyecto está licenciado bajo la Licencia Pública General Menor de GNU (LGPL-3.0)."
LICENSE_TEXTS["MIT"]="Este proyecto está licenciado bajo la Licencia MIT."
LICENSE_TEXTS["Apache-2.0"]="Este proyecto está licenciado bajo la Licencia Apache 2.0."
LICENSE_TEXTS["BSD-3-Clause"]="Este proyecto está licenciado bajo la Licencia BSD de 3 cláusulas."
LICENSE_TEXTS["BSD-2-Clause"]="Este proyecto está licenciado bajo la Licencia BSD de 2 cláusulas."
LICENSE_TEXTS["CC-BY-4.0"]="Este proyecto está licenciado bajo Creative Commons Attribution 4.0 International."
LICENSE_TEXTS["CC-BY-SA-4.0"]="Este proyecto está licenciado bajo Creative Commons Attribution-ShareAlike 4.0 International."
LICENSE_TEXTS["CC0-1.0"]="Este proyecto está dedicado al dominio público bajo Creative Commons Zero v1.0 Universal."
LICENSE_TEXTS["EPL-2.0"]="Este proyecto está licenciado bajo la Licencia Pública Eclipse 2.0."
LICENSE_TEXTS["MPL-2.0"]="Este proyecto está licenciado bajo la Licencia Pública de Mozilla 2.0."
LICENSE_TEXTS["Unlicense"]="Este proyecto está en el dominio público bajo The Unlicense."
LICENSE_TEXTS["OPL-1.0"]="Este proyecto está licenciado bajo la Licencia Pública de Odoo (OPL-1.0)."
LICENSE_TEXTS["OEEL-1.0"]="Este proyecto está licenciado bajo la Licencia de Empresa de Odoo (OEEL-1.0)."
LICENSE_TEXTS["CC-BY-NC-4.0"]="Este proyecto está licenciado bajo Creative Commons Attribution-NonCommercial 4.0 International."
LICENSE_TEXTS["CC-BY-NC-SA-4.0"]="Este proyecto está licenciado bajo Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International."
LICENSE_TEXTS["CC-BY-ND-4.0"]="Este proyecto está licenciado bajo Creative Commons Attribution-NoDerivatives 4.0 International."
LICENSE_TEXTS["CC-BY-NC-ND-4.0"]="Este proyecto está licenciado bajo Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International."
LICENSE_TEXTS["Copyright"]="Este proyecto está protegido por derechos de autor (Copyright). Todos los derechos reservados."
LICENSE_TEXTS["Proprietary"]="Este proyecto está bajo licencia propietaria. Todos los derechos reservados."
# Verifica que dialog esté instalado
if ! command -v dialog &> /dev/null; then
echo "${head_001}"
exit 1
fi
# Función para obtener la carpeta de proyectos desde projects.dat
function get_projects_folder() {
if [ -f "$CONFIG_DIR/projects.dat" ]; then
PROJECTS_DIR_NAME=$(head -n 1 "$CONFIG_DIR/projects.dat")
else
PROJECTS_DIR_NAME="proyectos"
echo "$PROJECTS_DIR_NAME" > "$CONFIG_DIR/projects.dat"
fi
# La carpeta de proyectos siempre está dentro de devs (BASE_DIR)
PROJECT_FOLDER="$BASE_DIR/$PROJECTS_DIR_NAME"
# Verificar si la carpeta base de proyectos existe, si no, crearla
if [ ! -d "$PROJECT_FOLDER" ]; then
mkdir -p "$PROJECT_FOLDER"
fi
}
# Función para solicitar el nombre del proyecto
function request_project_name() {
dialog_input_box "${proj_002}" "${proj_003}" ""
if [ $codex -ne 0 ]; then
echo "${head_canceled}"
exit 1
fi
PROJECT_NAME="$value"
# Validar que el nombre no esté vacío
if [ -z "$PROJECT_NAME" ]; then
dialog_error_box "$head_error" "${proj_004}"
request_project_name
return
fi
# Validar que el nombre sea válido para una carpeta
if [[ "$PROJECT_NAME" =~ [^a-zA-Z0-9_-] ]]; then
dialog_error_box "$head_error" "${proj_005}"
request_project_name
return
fi
PROJECT_PATH="$PROJECT_FOLDER/$PROJECT_NAME"
# Verificar si el proyecto ya existe
if [ -d "$PROJECT_PATH" ]; then
# Crear mensaje personalizado con el nombre del proyecto
proyecto_existe_msg="El proyecto '$PROJECT_NAME' ya existe. ¿Desea seleccionar otro nombre?"
dialog_yesno "$proyecto_existe_msg"
if [ $? -eq 0 ]; then
request_project_name
else
echo "${proj_007}"
exit 1
fi
fi
}
# Función para solicitar el tipo de proyecto
function request_project_type() {
# Construir las opciones para el diálogo
OPTIONS=""
for i in "${!VALID_TYPES[@]}"; do
if [ "${VALID_TYPES[$i]}" == "otros" ]; then
# Seleccionar "otros" como opción por defecto
OPTIONS="$OPTIONS ${VALID_TYPES[$i]} ${VALID_TYPES[$i]} on"
else
OPTIONS="$OPTIONS ${VALID_TYPES[$i]} ${VALID_TYPES[$i]} off"
fi
done
dialog_input_radio "${proj_008}" "${proj_009}" "$OPTIONS" 22 22 70
if [ $codex -ne 0 ]; then
echo "${head_canceled}"
exit 1
fi
PROJECT_TYPE="$value"
# Validar que el tipo seleccionado sea válido
VALID_TYPE=0
for t in "${VALID_TYPES[@]}"; do
if [ "$t" == "$PROJECT_TYPE" ]; then
VALID_TYPE=1
break
fi
done
if [ $VALID_TYPE -eq 0 ]; then
dialog_error_box "$head_error" "${proj_010}"
request_project_type
fi
}
# Función para solicitar la licencia del proyecto
function request_project_license() {
# Construir las opciones para el diálogo
OPTIONS=""
# Obtenemos todas las claves del array asociativo
license_keys=("${!LICENSE_BADGES[@]}")
# Ordenamos las claves alfabéticamente
IFS=$'\n' sorted_keys=($(sort <<<"${license_keys[*]}"))
unset IFS
# Filtramos las licencias específicas de Odoo si el proyecto no es de tipo odoo
filtered_keys=()
for license in "${sorted_keys[@]}"; do
# Si es licencia de Odoo (OPL o OEEL) y el proyecto no es de tipo odoo, la omitimos
if [[ "$license" == "OPL-1.0" || "$license" == "OEEL-1.0" ]]; then
if [[ "$PROJECT_TYPE" == "odoo" ]]; then
filtered_keys+=("$license")
fi
else
filtered_keys+=("$license")
fi
done
# Establecemos AGPL-3.0 como seleccionada por defecto (es la licencia predeterminada del proyecto)
# Para proyectos Odoo, usar OPL-1.0 como predeterminada
default_license="AGPL-3.0"
if [[ "$PROJECT_TYPE" == "odoo" ]]; then
default_license="OPL-1.0"
fi
for license in "${filtered_keys[@]}"; do
if [ "$license" == "$default_license" ]; then
OPTIONS="$OPTIONS $license \"$license\" on"
else
OPTIONS="$OPTIONS $license \"$license\" off"
fi
done
# Reducimos el tamaño del diálogo para que muestre menos opciones a la vez
dialog_input_radio "${proj_014}" "${proj_015}" "$OPTIONS" 22 22 70
if [ $codex -ne 0 ]; then
echo "${head_canceled}"
exit 1
fi
PROJECT_LICENSE="$value"
PROJECT_LICENSE_TEXT="${LICENSE_TEXTS[$PROJECT_LICENSE]}"
# Si por alguna razón no se encuentra la licencia, usamos la predeterminada según el tipo de proyecto
if [ -z "$PROJECT_LICENSE_TEXT" ]; then
if [[ "$PROJECT_TYPE" == "odoo" ]]; then
PROJECT_LICENSE="OPL-1.0"
else
PROJECT_LICENSE="AGPL-3.0"
fi
PROJECT_LICENSE_TEXT="${LICENSE_TEXTS[$PROJECT_LICENSE]}"
fi
}
# Función para solicitar la descripción del proyecto
function request_project_description() {
# Aumentar número de filas y columnas para mostrar más líneas en el diálogo
# Parámetros: mensaje, ayuda, valor_defecto, filas, ancho
# La altura predeterminada es CROWS=8, aumentamos a 12 para mostrar las 3 líneas
dialog_input_box "${proj_012}" "${proj_013}" "" 12 80
if [ $codex -ne 0 ]; then
echo "${head_canceled}"
exit 1
fi
PROJECT_DESCRIPTION="$value"
# Usar una descripción por defecto si está vacía
if [ -z "$PROJECT_DESCRIPTION" ]; then
PROJECT_DESCRIPTION="Proyecto de tipo $PROJECT_TYPE creado con MRDevs Tools."
fi
}
# Función para crear la estructura del proyecto
function create_project_structure() {
# Crear la carpeta del proyecto
mkdir -p "$PROJECT_PATH"
# Crear estructura básica común a todos los proyectos
mkdir -p "$PROJECT_PATH/docs"
mkdir -p "$PROJECT_PATH/src"
# Inicializar repositorio git
cd "$PROJECT_PATH"
git init
# Crear archivo setup.md básico
cat > "$PROJECT_PATH/docs/setup.md" << EOF
# Configuración del Entorno de Desarrollo
Este documento describe los pasos necesarios para configurar el entorno de desarrollo para el proyecto $PROJECT_NAME.
## Requisitos Previos
- [Requisito 1]
- [Requisito 2]
- [Requisito 3]
## Instalación
1. Clone el repositorio:
\`\`\`bash
git clone [URL-del-repositorio]
cd $PROJECT_NAME
\`\`\`
2. Configure el entorno según el tipo de proyecto ($PROJECT_TYPE).
3. [Pasos adicionales específicos del proyecto]
## Configuración
[Instrucciones de configuración específicas]
## Pruebas
[Instrucciones para ejecutar pruebas]
## Solución de Problemas
[Problemas comunes y soluciones]
---
> Nota: Este es un documento de configuración inicial que debe ser completado con la información específica del proyecto.
EOF
# Obtener fecha actual
CURRENT_DATE=$(date +%Y-%m-%d)
# Crear archivo README.md mejorado
cat > "$PROJECT_PATH/README.md" << EOF
# $PROJECT_NAME
![License](${LICENSE_BADGES[$PROJECT_LICENSE]})
![Status](https://img.shields.io/badge/Status-En%20Desarrollo-yellow)
## 📋 Descripción
$PROJECT_DESCRIPTION
## 🔧 Tecnologías
\`\`\`
Tipo de Proyecto: $PROJECT_TYPE
Fecha de Creación: $CURRENT_DATE
\`\`\`
## 📁 Estructura
\`\`\`
$PROJECT_NAME/
├── docs/ # Documentación del proyecto
├── src/ # Código fuente
EOF
# Añadir estructura específica según el tipo de proyecto
case "$PROJECT_TYPE" in
"ansible")
cat >> "$PROJECT_PATH/README.md" << EOF
├── inventories/ # Inventarios de Ansible
├── roles/ # Roles de Ansible
└── playbooks/ # Playbooks de Ansible
\`\`\`
## 🚀 Uso
1. Actualice el inventario en \`inventories/\`
2. Configure los roles necesarios en \`roles/\`
3. Ejecute los playbooks mediante \`ansible-playbook playbooks/nombre-playbook.yml\`
EOF
;;
"odoo")
cat >> "$PROJECT_PATH/README.md" << EOF
├── addons/ # Módulos personalizados de Odoo
├── data/ # Archivos de datos
├── scripts/ # Scripts de utilidad
└── build/ # Configuración de construcción
\`\`\`
## 🚀 Uso
1. Configure el entorno en la carpeta \`build/\`
2. Ejecute \`scripts/start.sh\` para iniciar el entorno Odoo
3. Acceda a la aplicación en http://localhost:8069
EOF
;;
"sp32home")
cat >> "$PROJECT_PATH/README.md" << EOF
├── hardware/ # Diseños y esquemas de hardware
├── firmware/ # Código firmware ESP32
├── libraries/ # Bibliotecas personalizadas
└── build/ # Archivos de construcción
\`\`\`
## 🚀 Uso
1. Revise los esquemas en \`hardware/\`
2. Compile el firmware usando PlatformIO o Arduino IDE
3. Cargue el firmware en su dispositivo ESP32
EOF
;;
"nodejs")
cat >> "$PROJECT_PATH/README.md" << EOF
├── src/
│ ├── controllers/ # Controladores de la aplicación
│ ├── models/ # Modelos de datos
│ └── routes/ # Definición de rutas
├── public/ # Archivos estáticos
└── tests/ # Pruebas unitarias y de integración
\`\`\`
## 🚀 Uso
1. Instale las dependencias: \`npm install\`
2. Configure las variables de entorno en \`.env\`
3. Ejecute la aplicación: \`npm start\`
EOF
;;
"python")
cat >> "$PROJECT_PATH/README.md" << EOF
├── src/
│ └── $PROJECT_NAME/ # Código fuente del paquete
└── tests/ # Pruebas unitarias
\`\`\`
## 🚀 Uso
1. Cree un entorno virtual: \`python -m venv .venv\`
2. Active el entorno virtual: \`source .venv/bin/activate\`
3. Instale las dependencias: \`pip install -r requirements.txt\`
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
;;
"cobol")
cat >> "$PROJECT_PATH/README.md" << EOF
├── src/
│ ├── main/ # Programas principales
│ └── copy/ # Libros de copybook
└── build/ # Archivos de compilación
\`\`\`
## 🚀 Uso
1. Configure el entorno COBOL según su implementación (GnuCOBOL, MicroFocus, etc.)
2. Compile los programas usando la configuración en \`build/\`
3. Ejecute los programas compilados
EOF
;;
"otros")
cat >> "$PROJECT_PATH/README.md" << EOF
\`\`\`
## 🚀 Uso
Consulte la documentación específica en la carpeta \`docs/\` para instrucciones de configuración y uso.
EOF
;;
esac
# Añadir secciones comunes al final
cat >> "$PROJECT_PATH/README.md" << EOF
## 🔍 Prerrequisitos
> Por definir según las necesidades específicas del proyecto
## ⚙️ Configuración
Para configurar el entorno de desarrollo, siga las instrucciones en [docs/setup.md](docs/setup.md).
## 📄 Licencia
$PROJECT_LICENSE_TEXT
Ver el archivo [LICENSE](LICENSE) para más detalles.
## 👥 Autores
- **$(git config user.name)** - Desarrollador Principal - [$(git config user.email)](mailto:$(git config user.email))
---
Generado con MRDevs Tools © $(date +%Y)
EOF
# Crear estructura específica según el tipo de proyecto
case "$PROJECT_TYPE" in
"ansible")
mkdir -p "$PROJECT_PATH/inventories"
mkdir -p "$PROJECT_PATH/roles"
mkdir -p "$PROJECT_PATH/playbooks"
touch "$PROJECT_PATH/ansible.cfg"
;;
"odoo")
mkdir -p "$PROJECT_PATH/addons"
mkdir -p "$PROJECT_PATH/data"
mkdir -p "$PROJECT_PATH/scripts"
mkdir -p "$PROJECT_PATH/build"
touch "$PROJECT_PATH/.typset"
;;
"sp32home")
mkdir -p "$PROJECT_PATH/hardware"
mkdir -p "$PROJECT_PATH/firmware"
mkdir -p "$PROJECT_PATH/libraries"
mkdir -p "$PROJECT_PATH/build"
;;
"nodejs")
mkdir -p "$PROJECT_PATH/src/controllers"
mkdir -p "$PROJECT_PATH/src/models"
mkdir -p "$PROJECT_PATH/src/routes"
mkdir -p "$PROJECT_PATH/public"
mkdir -p "$PROJECT_PATH/tests"
touch "$PROJECT_PATH/package.json"
;;
"python")
mkdir -p "$PROJECT_PATH/src/$PROJECT_NAME"
mkdir -p "$PROJECT_PATH/tests"
touch "$PROJECT_PATH/setup.py"
touch "$PROJECT_PATH/requirements.txt"
# Crear un __init__.py básico
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")
mkdir -p "$PROJECT_PATH/src/main"
mkdir -p "$PROJECT_PATH/src/copy"
mkdir -p "$PROJECT_PATH/build"
;;
"otros")
# Estructura mínima, ya creada anteriormente
;;
esac
# Crear archivo de configuración para indicar el tipo de proyecto
echo "$PROJECT_TYPE" > "$PROJECT_PATH/.protype"
# Guardar información de la licencia en un archivo
echo "$PROJECT_LICENSE" > "$PROJECT_PATH/.license"
# Hacer commit inicial del proyecto
cd "$PROJECT_PATH"
git add .
git commit -m "[INIT] Proyecto $PROJECT_NAME"
# Mostrar mensaje de éxito
dialog_error_box "$head_info" "${proj_011}\n$PROJECT_PATH"
}
# Función principal
function main() {
clear
# Obtener la carpeta de proyectos
get_projects_folder
# Solicitar nombre del proyecto
request_project_name
# Solicitar tipo de proyecto
request_project_type
# Solicitar licencia del proyecto
request_project_license
# Solicitar descripción del proyecto
request_project_description
# Crear estructura del proyecto
create_project_structure
}
# Ejecutar función principal
main

View file

@ -335,6 +335,11 @@ function create_project_structure() {
cd "$PROJECT_PATH"
git init
# Copiar archivo .gitignore específico para el tipo de proyecto
if [ -f "$CONFIG_DIR/${PROJECT_TYPE}.gitignore" ]; then
cp "$CONFIG_DIR/${PROJECT_TYPE}.gitignore" "$PROJECT_PATH/.gitignore"
fi
# Crear archivo setup.md básico
cat > "$PROJECT_PATH/docs/setup.md" << EOF
# Configuración del Entorno de Desarrollo