Shell Linux - alfredocentinaro.it https://www.alfredocentinaro.it/category/lezioni/shell-linux/ Sito personale di Alfredo Centinaro, ingegnere informatico, insegnante, musicista. Programmazione, appunti, esercizi, sistemi e reti, tpsit, esami di stato, arduino Tue, 15 Apr 2025 06:57:37 +0000 it-IT hourly 1 https://wordpress.org/?v=6.9.4 https://www.alfredocentinaro.it/wp-content/uploads/2022/01/logo_alfredocentinaro-150x150.png Shell Linux - alfredocentinaro.it https://www.alfredocentinaro.it/category/lezioni/shell-linux/ 32 32 Creare automaticamente strutture per progetti HTML e PHP con script Bash, Batch e Python (Tkinter) https://www.alfredocentinaro.it/lezioni/informatica/creare-strutture-per-progetti-html-php-con-bash-batch-e-python/ Sat, 29 Mar 2025 11:18:45 +0000 https://www.alfredocentinaro.it/?p=8371 Realizzare progetti web in HTML o PHP scolastici può risultare relativamente semplice semplice, ma ripetere la creazione manuale della struttura di file e cartelle può essere tedioso. Progetti più articolati con Laravel ad eempio prevedono gia uno script automatico per la creazione del necessario. In questo articolo vediamo come automatizzare il processo utilizzando semplici script ... Leggi tutto

L'articolo Creare automaticamente strutture per progetti HTML e PHP con script Bash, Batch e Python (Tkinter) proviene da alfredocentinaro.it.

]]>
Realizzare progetti web in HTML o PHP scolastici può risultare relativamente semplice semplice, ma ripetere la creazione manuale della struttura di file e cartelle può essere tedioso. Progetti più articolati con Laravel ad eempio prevedono gia uno script automatico per la creazione del necessario. In questo articolo vediamo come automatizzare il processo utilizzando semplici script in Bash (Linux), Batch DOS (Windows) e Python con interfaccia grafica (Tkinter). Esistono valice alternative come plugin di Visual Stuio Code e simili IDE di sviluppo ma possono risultare indigeste da configurare e non facilmenti trasportabili tra pc differenti casa/scuola.

1. Script Bash (Linux)

Crea un file template-html.sh con il seguente contenuto:

#!/bin/bash

echo -n "Inserisci il nome del progetto: "
read PROJECT_NAME

if [ -z "$PROJECT_NAME" ]; then
  echo "Errore: il nome del progetto non può essere vuoto."
  exit 1
fi

echo -n "Inserisci il percorso della destinazione: "
read DESTINATION

if [ ! -d "$DESTINATION" ]; then
  echo "Errore: la destinazione indicata non esiste."
  exit 1
fi

FULL_PATH="$DESTINATION/$PROJECT_NAME"

mkdir -p "$FULL_PATH/css" "$FULL_PATH/js" "$FULL_PATH/img"
touch "$FULL_PATH/css/style.css" "$FULL_PATH/js/script.js"

cat <<EOL > "$FULL_PATH/index.html"
<!DOCTYPE html>
<html lang="it">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="css/style.css" rel="stylesheet">
  <title>Document</title>
</head>
<body>
  <script src="js/script.js"></script>
</body>
</html>
EOL

echo "Struttura creata in $FULL_PATH"

Rendi eseguibile lo script o con interfaccia grafica col tasto destro sul file o da console con:

chmod +x setup_progetto.sh
./template-html.sh

oppure

sh template-html.sh

2. Script Batch DOS (Windows)

Crea un file template-html.bat partendo da un file di testo/blocco note modificando l’estensione da .txt a .bat.

@echo off
set /p PROJECT_NAME=Inserisci il nome del progetto:
if "%PROJECT_NAME%"=="" (
  echo Errore: il nome del progetto non puo' essere vuoto.
  goto end
)

set /p DESTINATION=Inserisci il percorso della destinazione:
if not exist "%DESTINATION%" (
  echo Errore: destinazione non trovata.
  goto end
)

set FULL_PATH=%DESTINATION%\%PROJECT_NAME%
mkdir "%FULL_PATH%\css" "%FULL_PATH%\js" "%FULL_PATH%\img"
type nul > "%FULL_PATH%\css\style.css"
type nul > "%FULL_PATH%\js\script.js"

(echo ^<!DOCTYPE html^>
echo ^<html lang="it"^>
echo ^<head^>
echo ^<meta charset="UTF-8"^>
echo ^<meta name="viewport" content="width=device-width, initial-scale=1.0"^>
echo ^<link href="css/style.css" rel="stylesheet"^>
echo ^<title^>Document^</title^>
echo ^</head^>
echo ^<body^>
echo ^<script src="js/script.js"^>^</script^>
echo ^</body^>
echo ^</html^>) > "%FULL_PATH%\index.html"

echo Struttura creata in %FULL_PATH%.
:end
pause

Eseguilo facendo doppio click. In alcune versioni di Windows o antivirus potrebbe segnala la possibilità che sia un virus.

3. Versione Python con GUI (Tkinter)

Installa il pacchetto Tkinter e le sue dipendenze se già non lo hai fatto(Ubuntu/Debian) :

sudo apt install python3-tk

Crea un file template-html.py con un editor di testo o IDE a piacere come Visual Studio Code:

import os
import tkinter as tk
from tkinter import filedialog, messagebox

class ProjectCreatorApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Creazione progetto web")
        self.root.geometry("450x200")

        tk.Label(root, text="Nome progetto:").pack(pady=(15, 5))
        self.project_name_entry = tk.Entry(root, width=50)
        self.project_name_entry.pack()

        tk.Label(root, text="Destinazione:").pack(pady=(10, 5))
        frame = tk.Frame(root)
        frame.pack()

        self.destination_entry = tk.Entry(frame, width=40)
        self.destination_entry.pack(side=tk.LEFT, padx=(0,5))

        browse_button = tk.Button(frame, text="Sfoglia", command=self.browse_destination)
        browse_button.pack(side=tk.LEFT)

        create_button = tk.Button(root, text="Crea Struttura", command=self.create_structure)
        create_button.pack(pady=15)

    def browse_destination(self):
        folder_selected = filedialog.askdirectory(initialdir=os.getcwd())
        if folder_selected:
            self.destination_entry.delete(0, tk.END)
            self.destination_entry.insert(0, folder_selected)

    def create_structure(self):
        name = self.project_name_entry.get().strip()
        dest = self.destination_entry.get().strip()

        if not name or not dest or not os.path.isdir(dest):
            messagebox.showerror("Errore", "Nome o destinazione non validi.")
            return

        path = os.path.join(dest, name)
        os.makedirs(os.path.join(path, "css"), exist_ok=True)
        os.makedirs(os.path.join(path, "js"), exist_ok=True)
        os.makedirs(os.path.join(path, "img"), exist_ok=True)

        open(os.path.join(path, "css/style.css"), "a").close()
        open(os.path.join(path, "js/script.js"), "a").close()

        with open(os.path.join(path, "index.html"), "w") as f:
            f.write("""<!DOCTYPE html><html lang=\"it\"><head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width\">
<link href=\"css/style.css\" rel=\"stylesheet\">
<title>Document</title></head><body>
<script src=\"js/script.js\"></script></body></html>""")

        messagebox.showinfo("Successo", f"Struttura creata in:\n{path}")

root = tk.Tk()
app = ProjectCreatorApp(root)
root.mainloop()

Per seguirlo in una shell digita:

python template-html.py

Potrebbe essere più produttivo creare un eseguibile cliccabile sia Windows/Linux con la libreria PyInstaller. Per brevità non inseriamo qui la guida completa come procedere ma il imitiamo a segnalare il comando utile. Va controllato a dovere che il setup del vostro pc o ambiente di sviluppo abbia tutte le librerie necessarie tkinter e python per creare le librerie condivise .so necessarie. Alternativa potrebbe essere non inserireil parametro –onefile ed ottenere comunque una cartella di lavoro con tutto il necessario all’esecuzione, solo un po’ più scomodo.

 pyinstaller --onefile --windowed --icon=icona.ico html.py

Conclusioni

Grazie a questi script puoi velocizzare il tuo flusso di lavoro creando rapidamente strutture per nuovi progetti web. Personalizzali in base alle tue esigenze, file o cartelle e buona programmazione! Ti consiglio di inserirteli in una cartella sia sul pc dove lavori abitualmente, sia in un Drive/Cloud online per averli sempre a portata di mano.

(Articolo realizzato con l’ausilio di IA e supervisione umana)

L'articolo Creare automaticamente strutture per progetti HTML e PHP con script Bash, Batch e Python (Tkinter) proviene da alfredocentinaro.it.

]]>