-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakeRun.sh
More file actions
executable file
·94 lines (75 loc) · 2.89 KB
/
MakeRun.sh
File metadata and controls
executable file
·94 lines (75 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/bin/bash
# MakeRun.sh - Script para crear un paquete autoextraíble .run
# --- Configuración ---
SOURCE_DIR="you2pub_files"
SETUP_SCRIPT="setup_you2pub.sh"
OUTPUT_DIR="You2Pub_Releases"
BASE_NAME="You2Pub"
INSTALLER_TEMPLATE="installer_template.sh"
ARCHIVE_NAME="you2pub_payload.tar.gz"
# --- 1. Verificación de archivos necesarios ---
if [ ! -d "$SOURCE_DIR" ] || [ ! -f "$SETUP_SCRIPT" ]; then
echo "❌ Error: Asegúrate de que los archivos/directorios existen:"
echo " - Directorio de archivos: $SOURCE_DIR"
echo " - Script de instalación: $SETUP_SCRIPT"
exit 1
fi
# --- 2. Preparar el directorio de salida ---
mkdir -p "$OUTPUT_DIR"
# --- 3. Crear el Tarball con los archivos ---
echo "📦 Creando el tarball: $ARCHIVE_NAME..."
# Empaquetar la carpeta de archivos y el script de instalación
tar -czf "$ARCHIVE_NAME" "$SOURCE_DIR" "$SETUP_SCRIPT"
if [ $? -ne 0 ]; then
echo "❌ Error al crear el tarball."
exit 1
fi
# --- 4. Generar el nombre de archivo con timestamp ---
TIMESTAMP=$(date +%Y%m%d_%H%M)
FINAL_RUN_FILE="$OUTPUT_DIR/${BASE_NAME}_${TIMESTAMP}.run"
echo "🕒 Nombre del paquete final: $FINAL_RUN_FILE"
# --- 5. Crear el script de cabecera (installer.sh) ---
echo "📝 Creando el script de cabecera ($INSTALLER_TEMPLATE)..."
cat > "$INSTALLER_TEMPLATE" << 'EOF'
#!/bin/bash
# Script Autoextraíble para You2Pub
# Directorio temporal para la extracción. Usamos $TMPDIR si está disponible.
TEMP_BASE="${TMPDIR:-/tmp}"
TEMP_DIR=$(mktemp -d "$TEMP_BASE/you2pub_install_XXXXXX")
ARCHIVE_FILE="you2pub_payload.tar.gz"
# Función para limpiar y salir
cleanup() {
[ -d "$TEMP_DIR" ] && rm -rf "$TEMP_DIR"
exit $1
}
# La marca que indica dónde comienza el tarball
# Usamos 'NR' para obtener el número de línea
SKIP=$(awk '/^__PAYLOAD_BELOW__/ {print NR + 1; exit 0; }' "$0")
# Extraer el tarball
echo "⏳ Extrayendo archivos a: $TEMP_DIR"
# Usamos tail -n +$SKIP para saltar las primeras $SKIP líneas (el propio script)
tail -n +$SKIP "$0" > "$TEMP_DIR/$ARCHIVE_FILE"
tar -xzf "$TEMP_DIR/$ARCHIVE_FILE" -C "$TEMP_DIR"
# Entrar al directorio temporal para lanzar el instalador
pushd "$TEMP_DIR" > /dev/null
# Lanzar el script de instalación principal
echo "🚀 Ejecutando script de instalación: setup_you2pub.sh"
chmod +x setup_you2pub.sh
./setup_you2pub.sh
EXIT_STATUS=$?
# Volver al directorio anterior
popd > /dev/null
# Limpiar y terminar
cleanup $EXIT_STATUS
# Marca para el tarball: ¡NO BORRAR NI MODIFICAR ESTA LÍNEA!
__PAYLOAD_BELOW__
EOF
# --- 6. Concatenar y dar permisos ---
echo "🔗 Concatenando el script y el tarball para crear $FINAL_RUN_FILE..."
cat "$INSTALLER_TEMPLATE" "$ARCHIVE_NAME" > "$FINAL_RUN_FILE"
chmod +x "$FINAL_RUN_FILE"
# --- 7. Limpieza de archivos intermedios ---
echo "🧹 Limpiando archivos intermedios..."
rm "$ARCHIVE_NAME" "$INSTALLER_TEMPLATE"
echo "✨ ¡Paquete autoextraíble creado con éxito!"
echo "Ubicación: $FINAL_RUN_FILE"