; $VER: BAH Installer 3.0 (07.07.98)
; BAH - by M&F (Mauro Fontana)
; Installer script by Marco Negri & M&F
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(set sourcedir "")

(set dirname      "bah")
(set execname     "BAH")
(set oldexecname  "BAH!")
(set configdir    "config")
(set rexxdirsrc   "rexx")
(set extradirsrc  "support/insert")

(set destdir      "BED:")
(set rexxdirdest  (cat target rexxdirsrc))
(set extradirdest (cat target extradirsrc))


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(if (= @language "english")
  (
    (set old_os_exit "BAH required minimum OS version: 37\nYour current version: %ld.%ld\n\nBAH cannot be installed")
    (set target_prompt "Select location to put BAH %ld.%ld:\nA directory named %s will be created")
    (set exist_dir_prompt "The directory selected is\n%s\nDo you wish to install BAH there ?")
    (set same_version_prompt "The same version of BAH is present\nVersion: %ld.%ld\nDo you want to re-install it ?")
    (set same_version_exit "Same version already present !")
    (set new_version_prompt "A newer version of BAH is present\nOld version: %ld.%ld\nNew Version: %ld.%ld\nInstallation aborted !")
    (set new_version_exit "Newer version already present !")
    (set old_version_prompt "An older version of BAH is present\nOld version: %ld.%ld\nNew Version: %ld.%ld\nDo you want to replace it ?")
    (set old_version_exit "Older version not replaced !")
    (set config_prompt "Select the config files to install:\n")

    (set replace_button "Replace")
    (set abort_button "Abort")
    (set install_there_button "Install BAH there")
    (set new_dir_button "Create a directory named %s")
    
    (set copyconfig-help "These file are quite complete examples that can be further modified by the user or used as a base point for creating much more complex ones.\n")
    (set copyrexx-help "These files are used by some configurations. If you don't install them some button actions may not be performed. \n")
  
    (set #yes "Yes")
    (set #no  "No")
    (set #rexx_prompt "Do you want to install the Arexx scripts?")
    (set rexx_prompt  "Select the Arexx scripts to install")
    (set #extra_prompt "Do you want to intall the extra files?")
    (set extra_prompt "Select the exyta file to install:\n")
  )
)

(if (= @language "italiano")
  (
    (set old_os_exit "BAH richiede minimo OS versione: 37\nLa versione corrente: %ld.%ld\n\nBAH non puo` essere installato")
    (set target_prompt "Seleziona dove mettere BAH %ld.%ld:\nUna directory col nome %s sara` creata")
    (set exist_dir_prompt "The directory selected is\n%s\nDo you wish to install BAH there ?")
    (set same_version_prompt "E` gia` presente la stessa versione di BAH\nVersione: %ld.%ld\nVuoi reinstallare?")
    (set same_version_exit "E' gia` presente la stessa versione!")
    (set new_version_prompt "E` presente una version piu` recente\nBVecchia versione: %ld.%ld\nNuova Versione: %ld.%ld\nInstallazione terminata!")
    (set new_version_exit "E` presente una versione piu` recente!")
    (set old_version_prompt "E` presente una vecchia versione di BAH\nVecchia versione: %ld.%ld\nNuova Versione: %ld.%ld\nVuoi riscriverla ?")
    (set old_version_exit "La vecchia version non e` stata riscritta!")
    (set config_prompt "Scegli i file di configurazione da installare:\n")

    (set replace_button "Riscrivi")
    (set abort_button "Interrompi")
    (set install_there_button "Installa BAH")
    (set new_dir_button "Crea una directory %s")
    
    (set copyconfig-help "Questi file sono degli esempi abbastanza completi che possono essere modificati ulteriormente dall'utente o usati come base per crearne di piu` complessi.\n")
    (set copyrexx-help "Questi files sono usati da qualche configuratione. Se non vengono installati probabilmente qualche bottone non funzionera`. \n")
  
    (set #yes "Si")
    (set #no  "No")
    (set #rexx_prompt "Vuoi installare gli script Arexx?")
    (set rexx_prompt  "Scegli gli script Arexx da installare")
    (set #extra_prompt "Vuoi installare i file extra?")
    (set extra_prompt "Scegli i file extra da installare:\n")
  )
)


; - - - - Check BAH version and revision - - - -

(complete 0)

(set new_vernum (getversion (tackon sourcedir "BAH")))
(set new_ver (shiftright new_vernum 16))
(set new_rev (BITAND new_vernum 65535))

(set sys_vernum (getversion))
(set sys_ver (shiftright sys_vernum 16))
(set sys_rev (BITAND sys_vernum 65535))

; - - - - Check system version and revision - - - -


(set @default-dest destdir)

(if (< sys_ver 37)
  (exit (old_os_exit sys_ver sys_rev))
)

; - - - - Ask for the target directory  - - - -

(set target
  (askdir
    (prompt (target_prompt new_ver new_rev dirname))
    (default @default-dest)
    (disk)
    (help @askdir-help)
  )
)


; - - - - Check if the directory is already called BAH - - - -


(if (= dirname (fileonly target))
  (if (= 1  (askchoice
          (prompt (exist_dir_prompt target))
          (choices install_there_button (new_dir_button dirname))
          (default 0)
          (help @askchoice-help)
          )
      )

      (set target (tackon target dirname))
  )

  (set target (tackon target dirname))
)

(set @default-dest target)


; - - - - Check if there is another version present - - - -


(set exec (tackon target execname))

(if (exists exec)
  (
    (set old_vernum (getversion exec))
    (set old_ver (/ old_vernum 65536))
    (set old_rev (- old_vernum (* old_ver 65536)))

    (if (= old_vernum new_vernum)
      (
        (if (= 0 (askbool
                  (prompt (same_version_prompt old_ver old_rev))
                  (choices replace_button abort_button)
                  (default 0)
                  (help @askbool-help)
                  )
                )
            (exit same_version_exit)
        )
      )
      (if (< old_vernum new_vernum)
        (if (= 0 (askbool
                  (prompt (old_version_prompt old_ver old_rev new_ver new_rev))
                  (choices replace_button abort_button)
                  (default 1)
                  (help @askbool-help)
              )
          )
          (exit old_version_exit)
        )
        (
          (message (new_version_prompt old_ver old_rev new_ver new_rev))
          (exit new_version_exit)
        )
      )
    )
  )

)
(set exec (tackon target oldexecname))

(if (exists exec)
  (
    (set old_vernum (getversion exec))
    (set old_ver (/ old_vernum 65536))
    (set old_rev (- old_vernum (* old_ver 65536)))

      (if (< old_vernum new_vernum)
        (if (= 0 (askbool
                (prompt (old_version_prompt old_ver old_rev new_ver new_rev))
                (choices replace_button abort_button)
                (default 1)
                (help @askbool-help)
            )
        )
        (exit old_version_exit)
      )
      (
        (message (new_version_prompt old_ver old_rev new_ver new_rev))
        (exit new_version_exit)
      )
    )
    
    ; This deletes the old BAH! executable and its icon
    (if (exists exec)
      (delete exec)
    )

    (set exec (tackon target ("%s.info" oldexecname)))
    (if (exists exec)
      (delete exec)
    )
  )
)


; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; *** BAH and BAH.guide ***
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(copyfiles
  (prompt "")
  (source sourcedir)
  (choices execname ("%s.guide" execname))
  (dest target)
  (infos)
  (help @copyfiles-help)
)

(complete 40)

; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; *** Config ***
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


(copyfiles
  (prompt config_prompt)
  (source (tackon sourcedir configdir))
  (pattern "#?.cfg")
  (dest (tackon target configdir))
  (infos)
  (confirm)
  (help copyconfig-help)
)

(complete 60)

; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; *** Arexx files ***
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(if 
  (askbool
    (prompt #rexx_prompt)
    (choices #yes #no)
    (default 1)
    (help copyrexx-help)
  )
  
  (
    (copyfiles
      (prompt rexx_prompt)
      (source (tackon sourcedir rexxdirsrc))
      (pattern "#?")
      (dest (tackon target rexxdirdest))
      (infos)
      (confirm)
      (help copyrexx-help)
    )
    
    (complete 80)

	  (if
	  	(askbool
	  		(prompt #extra_prompt)
	    	(choices #yes #no)
	    	(default 1)
	    	(help copyextra-help)
	    )
	    
	    (
	    	(if (= (exists extradirdest) 0)
		    	(makedir extradirdest (help @makedir-help))
		    )
		    
		    (copyfiles
		      (prompt extra_prompt)
		      (source (tackon sourcedir extradirsrc))
		      (pattern "#?.ins")
		      (dest (tackon target extradirdest))
		      (infos)
		      (confirm)
		      (help copyrexx-help)
		    )
		  )
    )
  )
)

(complete 100)
