Bouton Extract pour Directory Opus et FileMaster

La plupart des utilisateurs de Directory Opus empilent maladroitement les boutons pour extraire chaque archive : un pour le zip, un pour le lha, un pour le lzx, un pour l'adf, etc.

Mais pourquoi ne pas créer un unique bouton "Extraire" comme sur les OS modernes ? Quand on extrait une archive, on a pas besoin de préciser son format : on extrait simplement tous les fichiers. Étant donné que les gestionnaires de fichiers permettent de lancer des scripts AmigaDOS ou Arexx, alors pourquoi ne pas l’implémenter ?

Je propose l'élégance et la simplicité d'un seul bouton Extract comme ci-dessous :

N'est-ce pas déjà prévu par défaut ?

Dans la configuration de base de Directory Opus 4, il existe un bouton Arc Ext. Ce bouton est relié à un obscur script USER1 qui extrait uniquement les archives lha, et ce script n'est pas facilement modifiable. Suite à un double-clic sur une archive, DOpus reconnait également quelques types de fichiers comme le lha et d’autres formats, bien obsolètes, comme le zoo, et les "Arc archives". Si je parvenais à ajouter la reconnaissance des zip et lzx, cela fonctionnerait au double-clic sur l'archive.
Mais je tiens à l'ergonomie de mon unique bouton Extract. De plus, je souhaite que mon script fonctionne avec d'autres gestionnaires de fichiers comme l'excellent FileMaster.

Recherche de minimalisme et d'ergonomie dans Directory Opus

Affichant une haute résolution non entrelacée, précisément 724 x 270 pixels avec l'overscan, j'ai décidé de réduire la zone des boutons de Directory Opus à deux rangées afin de garder le maximum de place pour l'affichage des fichiers. Beaucoup de boutons sont accessoires ou peuvent, par exemple, être remplacés par un simple bouton Multiview. C'est dans ce contexte minimaliste que m'est venue l'idée du bouton Extract.

La recherche du script parfait

Après avoir écumé des scripts trop complexes s'appuyant sur des fonctionnalités tierces sur Aminet, j'ai décidé de le coder moi-même, avec les commandes de base de l'AmigaDOS, de la façon la plus minimaliste possible, à l'aide de mon manuel DOS et de ChatGPT qui s'est révélé... assez approximatif concernant l'AmigaDOS. En effet, l'IA propose parfois des commandes qui n'existent pas, provenant de MS-DOS, ou en cas d'échec, m'oriente systématiquement vers Arexx. Mais Arexx est à utiliser quand AmigaDOS se révèle insuffisant, et je suis certain qu'AmigaDOS peut le faire. L'IA est pointue sur les langages utilisés par le plus grand nombre et beaucoup moins sur les langages "de niche". ChatGPT a néanmoins été un bon assistant et m'a suggéré quelques bonnes idées.

Les extracteurs utilisés

Pour que le script fonctionne, il faudra bien évidemment télécharger et installer dans le dossier C les extracteurs suivants :

Remarque : Sous AmigaOS 3.2, la commande DAControl peut monter un volume ADF dans le Workbench. Cependant, elle ne permet pas d'en extraire le contenu dans la destination indiquée par DOpus ou FileMaster. C'est la raison pour laquelle je préfère utiliser la commande UnADF. Notez également qu’il est impossible d’extraire les ADF non DOS.

Le script AmigaDOS

Stratégie N° 1 : lire le type de fichier dans l'entête

La difficulté avec AmigaDOS, c'est d'arriver à déterminer le type d'archive. J'ai d'abord essayé de lire les entêtes avec la commande SEARCH en recherchant, par exemple, l'expression "-lh" pour les lha. Cela fonctionnait, mais c'était très lent pour les archives volumineuses et je voulais que mon script tourne sur les petites config. J'ai ensuite essayé de copier les premiers octets de l'archive dans un fichier temporaire de la RAM pour y faire une recherche. Mais la commande TYPE copie la totalité du fichier, il est impossible d'en extraire un bout. Je n’ai donc pas réussi à extraire l’entête des fichiers avec toutes les commandes AmigaDOS. J'ai vu qu'il existait une commande Head dans Aminet qui permet d'extraire l'entête d'un fichier, mais je tiens à le faire avec les commandes de base d'AmigaDOS.

Stratégie N° 2 : lire l'extension de l'archive

Changement de stratégie : j'opte pour la lecture de l'extension de l'archive. Et pour extraire une extension, c'est plutôt Arexx qui sait faire avec la commande Parse. Au bout de quelques heures de tâtonnements, j'ai finalement trouvé une façon rapide de le faire en AmigaDOS :

  1. Je copie le nom de l'archive dans un fichier texte temporaire avec la commande ECHO.
  2. J'y recherche l'extension lha, zip ou lzx avec la commande SEARCH (insensible à la casse) qui laisse un 0 dans l'indicateur de condition si l'extension n'est pas trouvée, et un 5 (WARN) dans le cas contraire.
  3. Je lance la commande d'extraction appropriée grâce à l'instruction conditionnelle IF NOT WARN.

Même si le script est basique, je me suis bien trituré les méninges pour arriver à cette simplicité :

.key file/A

ECHO <file> >T:file_tmp

SEARCH T:file_tmp "lha" QUIET
IF NOT WARN
	Lha x "<file>"
ENDIF

SEARCH T:file_tmp "zip" QUIET
IF NOT WARN
	Unzip "<file>"
ENDIF

SEARCH T:file_tmp "lzx" QUIET
IF NOT WARN
	Lzx x "<file>"
ENDIF

SEARCH T:file_tmp "adf" QUIET
IF NOT WARN
	unadf "<file>" DEST=""
ENDIF

DELETE T:file_tmp QUIET

Le .key file/a est relié à la variable {f} dans Directory Opus et FileMaster. Il désigne le fichier à extraire, c'est à dire celui sur lequel l'utilisateur aura cliqué, et se manipule dans le script avec la balise <file>. L'expression NOT WARN ne fonctionne qu'avec le Workbench 2.0, c'est donc la version minimum requise par ce script.

Ajout du bouton Extract dans DirectoryOpus ou FileMaster

Après avoir enregistré le script sous le nom Extract dans le dossier S du Workbench, il faut ajouter un bouton Extract dans Directory Opus :

Il faudra cocher la fonction CD destination et je conseille vivement l'option Fenêtre de sortie pour contempler le déroulé de l'extraction.

Parce qu'il n'y a pas que Directory Opus dans la vie et qu'il y'a aussi FileMaster :

Dans FileMaster, le Pattern permet de réagir à un simple double-clic sur l'archive
Je sélectionne une archive, puis j'appuie sur le bouton Extract. C'est magique !
Même succès sous FileMaster

Conclusion

Je suis heureux d'avoir pris le temps de faire ce petit script et qui aurait dû être implémenté par défaut dans tous les gestionnaires de fichiers. J'espère qu'il sera utile à d'autres, et comme il est simple et compréhensible, chacun pourra y ajouter d'autres formats d'archives.

  • Le script Extract est téléchargeable ici : Extract
  • Ma config minimaliste pour Directory Opus 4 sous Workbench en haute résolution non entrelacée : DirectoryOpus.CFG

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

Logo lesdocs
Résumé de la politique de confidentialité

Ce site collecte des données statistiques via Google Analytics et les commentaires éventuels déposés dans les articles. Plus d'informations sur notre page Politique de confidentialité.