Skip to content

Instantly share code, notes, and snippets.

@micuit-cuit
Created January 19, 2024 08:46
Show Gist options
  • Save micuit-cuit/1bf0dfa93b751950645baedbbe6fbc8f to your computer and use it in GitHub Desktop.
Save micuit-cuit/1bf0dfa93b751950645baedbbe6fbc8f to your computer and use it in GitHub Desktop.
GestionnaireSuppressionApplicationsADB
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