File size: 4,596 Bytes
56d1009
25d4c5c
56d1009
 
 
 
 
25d4c5c
 
56d1009
 
25d4c5c
 
 
 
56d1009
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ace640b
56d1009
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# Script de déploiement automatisé pour Hugging Face Spaces (PowerShell)
# Usage: .\deploy.ps1 <votre-username> [audio-sentiment]

param(
    [Parameter(Mandatory=$true)]
    [string]$Username,
    
    [Parameter(Mandatory=$false)]
    [string]$SpaceName = "audio-sentiment"
)

if ($SpaceName -ne "audio-sentiment") {
    Write-Host "[WARNING] Le nom du Space recommandé est 'audio-sentiment' (actuel: $SpaceName)" -ForegroundColor Yellow
}

# Couleurs pour l'affichage
$Red = "Red"
$Green = "Green"
$Yellow = "Yellow"
$Blue = "Blue"
$White = "White"

# Fonction pour afficher les messages
function Write-Status {
    param([string]$Message, [string]$Color = $White)
    Write-Host "[INFO] $Message" -ForegroundColor $Color
}

function Write-Success {
    param([string]$Message)
    Write-Host "[SUCCESS] $Message" -ForegroundColor $Green
}

function Write-Warning {
    param([string]$Message)
    Write-Host "[WARNING] $Message" -ForegroundColor $Yellow
}

function Write-Error {
    param([string]$Message)
    Write-Host "[ERROR] $Message" -ForegroundColor $Red
}

$SpaceUrl = "https://huggingface.co/spaces/$Username/$SpaceName"

Write-Status "Démarrage du déploiement pour $SpaceUrl" $Blue

# 1. Vérification de la structure du projet
Write-Status "Vérification de la structure du projet..." $Blue

$requiredFiles = @(
    "app_with_api.py",
    "requirements_hf.txt", 
    "README.md",
    ".gitattributes",
    "src\__init__.py",
    "src\transcription.py",
    "src\sentiment.py",
    "src\multimodal.py",
    "src\inference.py"
)

$missingFiles = @()
foreach ($file in $requiredFiles) {
    if (Test-Path $file) {
        Write-Host "✅ $file" -ForegroundColor $Green
    } else {
        Write-Host "❌ $file" -ForegroundColor $Red
        $missingFiles += $file
    }
}

if ($missingFiles.Count -gt 0) {
    Write-Error "Fichiers manquants: $($missingFiles -join ', ')"
    exit 1
}

Write-Success "Structure du projet validée"

# 2. Test du projet
Write-Status "Exécution des tests..." $Blue

if (Test-Path "test_deployment.py") {
    try {
        python test_deployment.py
        if ($LASTEXITCODE -ne 0) {
            Write-Error "Les tests ont échoué. Corrigez les problèmes avant de continuer."
            exit 1
        }
        Write-Success "Tests passés avec succès"
    } catch {
        Write-Error "Erreur lors de l'exécution des tests: $_"
        exit 1
    }
} else {
    Write-Warning "Script de test non trouvé, passage des tests..."
}

# 3. Vérification de Git
Write-Status "Vérification de Git..." $Blue

try {
    git --version | Out-Null
    Write-Success "Git détecté"
} catch {
    Write-Error "Git n'est pas installé ou n'est pas dans le PATH"
    exit 1
}

# 4. Initialisation Git si nécessaire
if (-not (Test-Path ".git")) {
    Write-Status "Initialisation du repository Git..." $Blue
    git init
    git add .
    git commit -m "Initial commit"
    Write-Success "Repository Git initialisé"
}

# 5. Ajout du remote Hugging Face
Write-Status "Configuration du remote Hugging Face..." $Blue

git remote remove hf 2>$null

git remote add hf $SpaceUrl

Write-Success "Remote configuré: $SpaceUrl"

# 6. Préparation du commit
Write-Status "Préparation du commit..." $Blue

git add .

try {
    git commit -m "Deploy: Analyse de sentiment audio v1.0"
    Write-Success "Commit créé"
} catch {
    Write-Warning "Aucun changement détecté, commit ignoré"
}

# 7. Déploiement
Write-Status "Déploiement sur Hugging Face Spaces..." $Blue

$confirm = Read-Host "Voulez-vous déployer maintenant ? (y/N)"
if ($confirm -ne "y" -and $confirm -ne "Y") {
    Write-Warning "Déploiement annulé"
    exit 0
}

Write-Status "Poussage du code..." $Blue
try {
    git push hf main
    Write-Success "Code poussé avec succès"
} catch {
    Write-Error "Erreur lors du push vers Hugging Face: $_"
    exit 1
}

Write-Success "Déploiement terminé avec succès !"
Write-Success "Votre Space est accessible à: $SpaceUrl"

Write-Host ""
Write-Status "Instructions post-déploiement:" $Blue
Write-Host "1. Allez sur $SpaceUrl" -ForegroundColor $White
Write-Host "2. Attendez que le build se termine (peut prendre 5-10 minutes)" -ForegroundColor $White
Write-Host "3. Testez votre application" -ForegroundColor $White
Write-Host "4. Consultez les logs en cas de problème" -ForegroundColor $White

Write-Status "Vérification du statut du Space..." $Blue
Write-Host "Vous pouvez vérifier le statut à: $SpaceUrl" -ForegroundColor $White

Write-Success "Script de déploiement terminé !"

Read-Host "Appuyez sur Entrée pour continuer"