Created
January 19, 2024 08:46
-
-
Save micuit-cuit/1bf0dfa93b751950645baedbbe6fbc8f to your computer and use it in GitHub Desktop.
GestionnaireSuppressionApplicationsADB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const { execSync } = require('child_process'); | |
const readlineSync = require('readline-sync'); | |
// Fonction pour lister les applications | |
function listerApplications() { | |
const output = execSync('adb shell pm list packages').toString(); | |
return output.split('\n').filter(Boolean).map(line => line.replace('package:', '')); | |
} | |
// Fonction pour effectuer une recherche dans la liste des applications | |
function rechercherApplications(applications, recherche) { | |
return applications.filter(app => app.includes(recherche)); | |
} | |
// Fonction pour afficher le menu de sélection paginé | |
function afficherMenu(applications, startIndex) { | |
//calcule la taille de la page en fonction de la taille de la console | |
const pageSize = process.stdout.rows - 4; | |
const endIndex = startIndex + pageSize; | |
const paginatedApps = applications.slice(startIndex, endIndex); | |
console.log('\nSélectionnez une application à supprimer (Tapez "exit" pour quitter):'); | |
paginatedApps.forEach((app, index) => { | |
console.log(`${startIndex + index + 1}. ${app}`); | |
}); | |
const input = readlineSync.question(`Tapez le numéro de l'application, tapez "n" pour la page suivante, ou tapez pour rechercher: `); | |
if (input.toLowerCase() === 'exit') { | |
return -1; // Quitter la boucle si l'utilisateur tape "exit" | |
} else if (input.toLowerCase() === 'n') { | |
return startIndex + pageSize; // Passer à la page suivante | |
} else if (input != Number(input)) { | |
const rechercheResultats = rechercherApplications(applicationsALL, input); | |
if (rechercheResultats.length > 0) { | |
console.log('\nRésultats de la recherche:'); | |
rechercheResultats.forEach((app, index) => { | |
return afficherMenu(rechercheResultats, 0); | |
}); | |
} else { | |
console.log('Aucun résultat trouvé pour la recherche.'); | |
return afficherMenu(applications, startIndex); | |
} | |
} else { | |
confirmDelApp(applications[input - 1]); | |
} | |
} | |
// Fonction pour supprimer une application | |
function supprimerApplication(packageName) { | |
console.log(`Suppression de l'application ${packageName}...`); | |
execSync(`adb shell am force-stop --user 0 ${packageName}`); | |
console.log(`L'application ${packageName} a été arrêtée avec succès.`); | |
let output = execSync(`adb uninstall --user 0 ${packageName}`).toString(); | |
if (output.includes('Failure')) { | |
console.log(`Impossible de supprimer l'application ${packageName}.`); | |
} | |
console.log(`L'application ${packageName} a été supprimée avec succès.`); | |
} | |
function confirmDelApp(packageName) { | |
// Si l'utilisateur a sélectionné un package dans le menu | |
const selectedPackage = packageName; | |
const confirmation = readlineSync.keyInYNStrict(`Voulez-vous vraiment supprimer l'application ${selectedPackage}?`); | |
if (confirmation) { | |
supprimerApplication(selectedPackage); | |
// Mettre à jour la liste des applications après la suppression | |
applications = listerApplications(); | |
} | |
} | |
// Liste des applications au démarrage | |
const applicationsALL = listerApplications(); | |
let startIndex = 0; | |
// Boucle principale | |
while (true) { | |
const index = afficherMenu(applicationsALL, startIndex); | |
if (index === -1) { | |
break; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment