[IMPROVED] Añadir selección de licencia al crear nuevos proyectos
This commit is contained in:
parent
a2e1ce6681
commit
c16eec5ca5
2 changed files with 83 additions and 2 deletions
|
@ -57,6 +57,8 @@ proj_010="El tipo de proyecto seleccionado no es válido"
|
|||
proj_011="Proyecto creado exitosamente en:"
|
||||
proj_012="Ingrese una descripción del proyecto"
|
||||
proj_013="Breve descripción del propósito y alcance del proyecto (máximo 3 líneas)"
|
||||
proj_014="Seleccione la licencia del proyecto"
|
||||
proj_015="Esta licencia determinará los términos de uso y distribución del software"
|
||||
|
||||
vldt_001="no puede estar en blanco..."
|
||||
vldt_002="Contraseña incorrecta! Intente nuevamente."
|
||||
|
|
|
@ -34,10 +34,45 @@ source "$MSG_DIR/head.es"
|
|||
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" "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"
|
||||
|
||||
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."
|
||||
|
||||
# Verifica que dialog esté instalado
|
||||
if ! command -v dialog &> /dev/null; then
|
||||
echo "${head_001}"
|
||||
|
@ -153,6 +188,44 @@ function request_project_description() {
|
|||
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
|
||||
|
||||
# Establecemos AGPL-3.0 como seleccionada por defecto (es la licencia predeterminada del proyecto)
|
||||
for license in "${sorted_keys[@]}"; do
|
||||
if [ "$license" == "AGPL-3.0" ]; then
|
||||
OPTIONS="$OPTIONS $license \"$license\" on"
|
||||
else
|
||||
OPTIONS="$OPTIONS $license \"$license\" off"
|
||||
fi
|
||||
done
|
||||
|
||||
dialog_input_radio "${proj_014}" "${proj_015}" "$OPTIONS"
|
||||
|
||||
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 AGPL-3.0 por defecto
|
||||
if [ -z "$PROJECT_LICENSE_TEXT" ]; then
|
||||
PROJECT_LICENSE="AGPL-3.0"
|
||||
PROJECT_LICENSE_TEXT="${LICENSE_TEXTS[$PROJECT_LICENSE]}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para crear la estructura del proyecto
|
||||
function create_project_structure() {
|
||||
# Crear la carpeta del proyecto
|
||||
|
@ -210,7 +283,7 @@ EOF
|
|||
cat > "$PROJECT_PATH/README.md" << EOF
|
||||
# $PROJECT_NAME
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## 📋 Descripción
|
||||
|
@ -349,7 +422,7 @@ Para configurar el entorno de desarrollo, siga las instrucciones en [docs/setup.
|
|||
|
||||
## 📄 Licencia
|
||||
|
||||
Este proyecto está licenciado bajo la Licencia Pública General Affero de GNU (AGPL-3.0).
|
||||
$PROJECT_LICENSE_TEXT
|
||||
Ver el archivo [LICENSE](LICENSE) para más detalles.
|
||||
|
||||
## 👥 Autores
|
||||
|
@ -411,6 +484,9 @@ EOF
|
|||
# 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"
|
||||
|
||||
# Mostrar mensaje de éxito
|
||||
dialog_error_box "$head_info" "${proj_011}\n$PROJECT_PATH"
|
||||
}
|
||||
|
@ -428,6 +504,9 @@ function main() {
|
|||
# Solicitar tipo de proyecto
|
||||
request_project_type
|
||||
|
||||
# Solicitar licencia del proyecto
|
||||
request_project_license
|
||||
|
||||
# Solicitar descripción del proyecto
|
||||
request_project_description
|
||||
|
||||
|
|
Loading…
Reference in a new issue