[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_011="Proyecto creado exitosamente en:"
|
||||||
proj_012="Ingrese una descripción del proyecto"
|
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_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_001="no puede estar en blanco..."
|
||||||
vldt_002="Contraseña incorrecta! Intente nuevamente."
|
vldt_002="Contraseña incorrecta! Intente nuevamente."
|
||||||
|
|
|
@ -34,10 +34,45 @@ source "$MSG_DIR/head.es"
|
||||||
title="${head_000} ${head_002}"
|
title="${head_000} ${head_002}"
|
||||||
apps_title="${proj_001}"
|
apps_title="${proj_001}"
|
||||||
PROJECT_FOLDER=""
|
PROJECT_FOLDER=""
|
||||||
|
PROJECT_NAME=""
|
||||||
|
PROJECT_PATH=""
|
||||||
PROJECT_TYPE=""
|
PROJECT_TYPE=""
|
||||||
PROJECT_DESCRIPTION=""
|
PROJECT_DESCRIPTION=""
|
||||||
|
PROJECT_LICENSE=""
|
||||||
|
PROJECT_LICENSE_TEXT=""
|
||||||
VALID_TYPES=("ansible" "odoo" "sp32home" "nodejs" "python" "cobol" "otros")
|
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
|
# Verifica que dialog esté instalado
|
||||||
if ! command -v dialog &> /dev/null; then
|
if ! command -v dialog &> /dev/null; then
|
||||||
echo "${head_001}"
|
echo "${head_001}"
|
||||||
|
@ -153,6 +188,44 @@ function request_project_description() {
|
||||||
fi
|
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
|
# Función para crear la estructura del proyecto
|
||||||
function create_project_structure() {
|
function create_project_structure() {
|
||||||
# Crear la carpeta del proyecto
|
# Crear la carpeta del proyecto
|
||||||
|
@ -210,7 +283,7 @@ EOF
|
||||||
cat > "$PROJECT_PATH/README.md" << EOF
|
cat > "$PROJECT_PATH/README.md" << EOF
|
||||||
# $PROJECT_NAME
|
# $PROJECT_NAME
|
||||||
|
|
||||||

|

|
||||||

|

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