TINAPAMA / 2025-08-14 20:09:50

1

Have you ever found yourselves installing the same program over and over again, on your different Amigas? You can now automate this process, even at distance, with TINAPAMA! 

 

Buy me a coffee if you like TINAPAMA! ☕🍻🍕📖

 

In a Nutshell

TINAPAMA (TINAPAMA is Not A PAckage MAnager) brings automated program installation on Classic Amigas. It supercedes AmiAutoUpdate, which had a different philosophy and was never completed . It's also different from AmiUpdate on AmigaOS 4 and EasyInstall on MorphOS by providing a simple command line and decentralised program descriptions. TINAPAMA allows updating programs individually or in groups, physically or remotely .

A typical use of TINAPAMA would be to execute the following command to update AmiModRadio to compare the local version of AmiModRadio with the one in Aminet and update it to the latest (if necessary).

Usage in a Nutshell
1.C:> TINAPAMA Utilitaires:Musique/Divers/AmiModRadio/AmiModRadio.tinapama
If local version is older than Aminet If local version is up-to-date
TINAPAMA v0.8 (Aug 14 2025) © 2025-2026 Tygre

Using AmiModRadio.tinapama

Setting up logging:                   Ok
Setting up description file:          Ok
Setting up data file:                 Ok
Setting up local drawer:              Ok
Getting destination drawer:           Ok
Parsing version file address:         Ok
Parsing remote file address:          Ok
Getting remote file content type:     Ok
Getting remote file content drawer:   Ok
Getting remote version file:          Ok
Saving remote version file:           Ok
Getting files list:                   Ok
Getting remote version file type:     Ok
Getting archived version file:        Ok
Getting remote version file analysis: Ok
Parsing remote version file:          Ok
Getting local version:                Ok
Is local version up-to-date?          No
Getting remote file:                  Ok
Saving remote file:                   Ok
Getting files list:                   Ok
Copying remote files to local drawer: Ok
Running after-update script (if any): Ok
Updating local data to new version:   Ok

Updated Utilitaires:Musique/Divers/AmiModRadio/
with package mus/play/AmiModRadio.lha

Deleting (some) temporary files:      Ok
Good bye!
TINAPAMA v0.9 (Aug 14 2025) © 2025-2026 Tygre

Using AmiModRadio.tinapama

Setting up logging:                   Ok
Setting up description file:          Ok
Setting up data file:                 Ok
Setting up local drawer:              Ok
Getting destination drawer:           Ok
Parsing version file address:         Ok
Parsing remote file address:          Ok
Getting remote file content type:     Ok
Getting remote file content drawer:   Ok
Getting remote version file:          Ok
Saving remote version file:           Ok
Getting files list:                   Ok
Getting remote version file type:     Ok
Getting archived version file:        Ok
Getting remote version file analysis: Ok
Parsing remote version file:          Ok
Getting local version:                Ok
Is local version up-to-date?          Yes
Good bye!

TINAPAMA works, of course , with Aminet packages: with or without the Version: field in their readmes, with or without top drawers in their archives. It also works with packages in GitHub  and should work all the same with packages in BitBucket, CodeBerg, or SourceForge!

 

Requirements

TINAPAMA has been tested on real Amigas and in WinUAE, with Kickstart v3.0, Kickstart v3.1, Workbench v3.1. It should work with Kickstart/Workbench 2.x and above.

You will also need a working TCP/IP stack, like Miami or Roadshow, AmiSSL library to access secured Web sites, and the XAD system to extract the files from the downloaded archives. Nothing else, as TINAPAMA is a Shell command.

Note: the XAD system and LHA v2.15 archives do not go well together, as noted elsewhere, spaces will be changed into underscore upon unarchiving! This change may or may not cause problem... Unfortunately, TINAPAMA cannot do anything about that! 

 

Availability

TINAPAMA is free and open source software. You can dowload below its latest version, which you can also find in Aminet (soon!). Its source code is available in the Europe-based CodeBerg .

 

Usages

TINAPAMA is a command line that uses a description file to locate the remote version of a program and compare its version with the version in the local drawer. You can use ready-made descriptions files or create your own. The drawer being updated is the drawer in which the description file, typically ending with .tinapama (e.g., AmiModRadio.tinapama), is located. In addition to any file updated by TINAPAMA, a new file TINAPAMA.data will be created to contain local version information.

 

Description File Format

The table below describe the domain-specific language used to describe updates. All options and values are case insensitive, except for URLs: http://aminet.net/package/mus/play/AmiModRadio exists, http://aminet.net/package/mus/play/aMiMoDrAdIo doesn't!

Description File Format
Options Examples Values Comments
remote_version_file_address http://aminet.net/mus/play/AmiModRadio.readme A URL with FTP, HTTP, or HTTPS scheme Always mandatory, usually should point to a README file but can also point to an archive or executable 
remote_version_file_type FILE FILE (default) or ARCHIVE Always mandatory, tells if the version file should be unarchived
remote_version_file_archived_version_file YACDP 1.2/YACDP A path to a file within the archive Mandatory with remove_version_file_type=ARCHIVE, tells which file, inside the archive, from which to get version information
remote_version_file_analysis AMINETREADMEVERSION AMINETREADMEVERSION (default), AMINETPACKAGEDATE, or AMIGADOSVERSION Optional, tells how to get version information from the file/archive
 
remote_main_file_address ftp://ftp.aminet.net/mus/play/AmiModRadio.lha A URL with FTP, HTTP, or HTTPs scheme Always mandatory, usually should point to an archive containing the files from which to update
ARCHIVE ARCHIVE ARCHIVE (default) or FILE Always mandatory, tells if the remote file should be unarchived
remote_main_file_archived_content INDRAWER INDRAWER (default) or NODRAWER Always mandatory, tells if the files from which to update are at the top-level of the archive or in some drawer(s)
remote_main_file_archived_content_drawer YACDP 1.2/ A path to a drawer within the archive Mandatory with remote_main_file_archived_content=INDRAWER, tells in which drawer of the archive to find the files/drawers with which to update
 
local_drawer_icon OVERWRITE KEEP (default) or OVERWRITE Optional, tells if the icon of the drawer being updated should be kept "as is" (maybe a nice MagicWB icon? ) or overwritten (by some B&W v1.3 drawer icon? )
local_drawer_window UPDATE KEEP (default) or UPDATE Optional, tells if the icon of the drawer being updated should have its properties updated: position, size, view mode... Useful with local_drawer_icon=KEEP to keep your nice icons by see the content of the drawer as intended
local_drawer_subdrawer Prefs/ A path to a subdrawer of the local drawer in which to update the files Optional, useful if multiple packages must be installed in the same drawer but would overwrite each other's files, like ABackup and Prefs/ABackup
local_drawer_script Assign ReOrg: "" | Execute patch.exec A set of AmigaDOS commands separated by | Optional, useful if some post-processing is necessary after updating the files, like patching some files, extracting some archive within the archive, etc. 
(local_drawer_content) OVERWRITE OVERWRITE (default) or PURGE Optional, not yet implemented 
(local_drawer_protected_files) file1,file2,... Some paths to local files Optional, not yet implemented
(local_drawer_protected_dirs) drawer1,drawer2,... Some paths to local drawers Optional, not yet implemented

 

Ready-made Description Files

From Aminet:

  1. mus/play/AmiModRadio
  2. d
  3. d
  4. d
  5. d
  6. d
  7. d
  8. d
  9. d
  10. d

 

From GitHub:

  1. obarthel/amiga-smbfs

 

Timeline

 

Roadmap

Some options are yet to be implemented:

  • Purge of the destination drawer before copying new files
  • Protection of some local files from behind overwritten.

 

Details

TINAPAMA is written in C with Cubic IDE and vbcc for the coding,  GadToolsBox for the GUI design, and SimpleCat for the internationalisation.

1 Icon from Flaticon in Home Screen Apps pack, free for personal and commercial purpose with attribution.