; VMM Installer script by Martin Apel
; Installation script for VMM 3.3

(set @app-name "VMM")

(welcome "        Välkommen till VMM-installeraren\n\n"
         "       Virtuellt minne för Amigor med MMU\n\n"
         "        Upphovsrätt 1993-95 av Martin Apel\n\n"
         "Nybörjare  installerar allt utom utvecklarfilerna.\n"
         "Avancerad  installerar allt utan konfirmering.\n"
         "Expert     installerar allt med konfirmering av allt.\n")

(if (= 0 @user-level) ; then
    (set install_level %000111)
;else
    (set install_level (askoptions (prompt "Vad vill du installera?")
                                   (help   @askoptions-help)
                                   (choices "VMM" "Symboler" "Dokument" "Utvecklarfiler" "Verktyg" "Rexx-program")))
)

(set def_help "\n\nOm du behöver mer hjälp, var god se \"VMM.guide\"\n\n")

(set my_level @user-level)
(user 2)
(set vmmdest
    ;get destination directory for "VMM"
     (askdir (prompt "Välj den låda där du vill placera VMM-programmet (och verktygen).")
             (help   "Det här bör vara en låda där du lätt kan komma åt VMM "
                     "via Workbench eller ett skal." def_help
                     @askdir-help)
             (default @default-dest)
             (disk)
     )
)
(user my_level)

(set copy_vmm   (BITAND %000001 install_level))
(set copy_icons (BITAND %000010 install_level))
(set copy_docs  (BITAND %000100 install_level))
(set copy_dev   (BITAND %001000 install_level))
(set copy_tools (BITAND %010000 install_level))
(set copy_rexx  (BITAND %100000 install_level))

; Copy VMM files

(if copy_vmm
  (
    (set @default-dest vmmdest)
    (set vmmtacked (tackon vmmdest "VMM"))

    ; ask, if we want to overwrite the old VMM if it exists
    (set overwrite 1)
    (if (exists "L:VMM-Handler")
      (
        (set old_version (getversion "l:VMM-Handler"))
        (set old_ver (/ old_version 65536))
        (set old_rev (- old_version (* old_ver 65536)))

        (set new_version (getversion "/l/VMM-Handler_4K"))
        (set new_ver (/ new_version 65536))
        (set new_rev (- new_version (* new_ver 65536)))

        (set overwrite (askbool (prompt "\nDu har redan VMM "
                                         old_ver "." old_rev " installerad"
                                        ".\nVill du skriva över den med VMM "
                                         new_ver "." new_rev " ?\n")
                                (help def_help @askbool-help)
                                (default 1)
                                (choices "Ja" "Nej"))

        )
      )
    )

    (if overwrite
        (
           ; detect the pagesize (4K or 8K)
           (set pagesize (run "/tools/ShowPageSize"))

           (select pagesize
             (abort "Internt fel i installerar-programmet")
             ((set info_string "En sidstorlek på 4K går att använda på ditt system")
              (set default_choice 0))
             ((set info_string "En sidstorlek på 4K går att använda på ditt system")
              (set default_choice 1))
             ((set info_string "Du kan ha antingen 4K eller 8K som sidstorlek på ditt system")
              (set default_choice 0))
           )

           (set my_choice (askchoice (prompt "\nVar god välj sidstorlek:\n\n"
                                           info_string ".\n")
                                   (help   def_help @askchoice-help)
                                   (choices "4K" "8K")
                                   (default default_choice))
           )

           (select my_choice
            (set sizestr "4K")
            (set sizestr "8K")
           )

           ; copy the new VMM file to the destination directory
           (if copy_icons
              ; then
                (copyfiles (prompt ("\nKopierar VMM till %s." vmmdest))
                           (help   def_help @copyfiles-help)
                           (optional "oknodelete")
                           (optional "askuser")
                           (source "/")
                           (choices  "VMM")
                           (dest     vmmdest)
                           (infos)
                           (confirm)
                )
              ; else
                (copyfiles (prompt ("\nKopierar VMM till %s." vmmdest))
                           (help   def_help @copyfiles-help)
                           (optional "oknodelete")
                           (optional "askuser")
                           (source "/")
                           (choices  "VMM")
                           (dest     vmmdest)
                           (confirm)
                )
           )

           ; copy the catalog for VMM
           (copyfiles (prompt "\nKopierar VMM.catalog till Locale:catalogs/svenska.")
                      (help   def_help @copyfiles-help)
                      (optional "oknodelete")
                      (optional "askuser")
                      (source  "/catalogs/svenska/VMM.catalog")
                      (dest    "LOCALE:catalogs/svenska")
                      (confirm)
           )



           ; copy the new VMM-Handler file to l: and rename it as "VMM-Handler"
           (set handler_name (cat "/l/VMM-Handler_" sizestr))
           (copyfiles (prompt "\nKopierar VMM-Handler till L:.")
                      (help   def_help @copyfiles-help)
                      (optional "oknodelete")
                      (optional "askuser")
                      (source  handler_name)
                      (dest    "l:")
                      (newname "VMM-Handler")
                      (confirm)
           )

           ; copy the catalog for the VMM-handler
           (copyfiles (prompt "\nKopierar VMM-Handler.catalog till Locale:catalogs/svenska.")
                      (help   def_help @copyfiles-help)
                      (optional "oknodelete")
                      (optional "askuser")
                      (source  "/catalogs/svenska/VMM-Handler.catalog")
                      (dest    "LOCALE:catalogs/svenska")
                      (confirm)
           )
        )
     )



    ; ask, if we want to overwrite the old preferences file
    ; default: do overwrite preferences file
    (set overwrite 1)
    (if (exists "envarc:VMM.prefs")
        (if (= 0 (askbool (prompt "\nDu har redan en inställningsfil installerad.\nVill du skriva över den?\n\n")
                     (help "Om du inte skriver över inställningsfilen så kommer den att konverteras i nästa steg" @askbool-help)
                     (default 0)
                     (choices "Ja" "Nej")))
              (set overwrite 0)
        )
    )

    (if overwrite
      (
        ; copy the new preferences file to env: and envarc:
        (copyfiles (prompt ("\nKopierar VMM.prefs till Env:\n"))
                   (help   def_help @copyfiles-help)
                   (optional "oknodelete")
                   (optional "askuser")
                   (source  "/env/VMM.prefs")
                   (dest    "env:")
                   (confirm)
        )
        (copyfiles (prompt ("\nKopierar VMM.prefs till EnvArc:\n"))
                   (help   def_help @copyfiles-help)
                   (optional "oknodelete")
                   (optional "askuser")
                   (source  "/env/VMM.prefs")
                   (dest    "envarc:")
                   (confirm)
        )
      )
    ; else
      (if (= 1 (askbool (prompt "Formatet på inställningsfilen har ändrats sedan V2.1\nVill du konvertera den?"
                     (help def_help @askbool-help)
                     (default 1)
                     (choices "Ja" "Nej"))))
        (run "/tools/ConvVMMCfg")
      )
    )
  )
)

; Copy docs

(if copy_docs
    (
      ;get destination directory for "VMM.guide"
      (set doc_dir (tackon vmmdest "doc"))

      (if (AND (= 0 @user-level) (NOT (exists doc_dir)))
          ; then
          (makedir doc_dir (infos))
      )

      (set vmmdocs
           (askdir (prompt "Välj den låda där du vill placera dokumenten och AmigaGuide-filerna.")
                   (help   "Det här bör vara den låda där du normalt sett placerar dina AmigaGuide-filer.\n\n"
                           def_help @askdir-help)
                   (default doc_dir)
                   (newpath)
                   (disk)
           )
      )

      (if copy_dev
        (if copy_icons
           ; then
           (copyfiles (prompt ("\nKopierar dokumentationen..."))
                      (help   def_help @copyfiles-help)
                      (optional "oknodelete")
                      (optional "askuser")
                      (source  "/doc")
                      (choices "VMM.guide" "VMM_Rexx.guide" "VMMTools.guide" "VMM_lib.doc")
                      (dest    vmmdocs)
                      (infos)
                      (confirm)
           )
           ; else
           (copyfiles (prompt ("\nKopierar dokumentationen..."))
                      (help   def_help @copyfiles-help)
                      (optional "oknodelete")
                      (optional "askuser")
                      (source  "/doc")
                      (choices "VMM.guide" "VMM_Rexx.guide" "VMMTools.guide" "VMM_lib.doc")
                      (dest    vmmdocs)
                      (confirm)
           )
        )
      ; else
        (if copy_icons
            ; then
              (copyfiles (prompt ("\nKopierar VMM.guide till " vmmdocs "."))
                         (help   def_help @copyfiles-help)
                         (optional "oknodelete")
                         (optional "askuser")
                         (source  "/doc")
                         (choices "VMM.guide" "VMM_Rexx.guide" "VMMTools.guide")
                         (dest    vmmdocs)
                         (infos)
                         (confirm)
              )
            ; else
              (copyfiles (prompt ("\nKopierar VMM.guide till " vmmdocs "."))
                         (help   def_help @copyfiles-help)
                         (optional "oknodelete")
                         (optional "askuser")
                         (source  "/doc")
                         (choices "VMM.guide" "VMM_Rexx.guide" "VMMTools.guide")
                         (dest    vmmdocs)
                         (confirm)
              )
        )
      )
    )
)

; Copy developer files

(if copy_dev
    (
      (copylib (prompt ("\nKopierar VMM.library till Libs:."))
               (help   def_help @copyfiles-help)
               (optional "oknodelete")
               (optional "askuser")
               (source  "/Developer/libs/VMM.library")
               (dest    "libs:")
               (confirm)
      )

      (if (exists ("fd:") (noreq))
          ; then
            (set fd_dir "fd:")
          ; else
            (set fd_dir
                 (askdir (prompt "Välj den låda där du vill placera fd-filen.")
                         (help   def_help  @askdir-help)
                         (default "SYS:")
                         (disk)
                 )
            )
      )

      (if (exists ("include:") (noreq))
          ; then
            (set inc_dir "include:")
          ; else
            (set inc_dir
                 (askdir (prompt "Välj den låda där du vill placera inkluderingsfilen.")
                         (help   def_help  @askdir-help)
                         (default "SYS:")
                         (disk)
                 )
            )
      )

      (if (exists ("lib:") (noreq))
          ; then
            (set lib_dir "lib:")
          ; else
            (set lib_dir
                 (askdir (prompt "Välj den låda där du vill placera lib-filen.")
                         (help   def_help  @askdir-help)
                         (default "SYS:")
                         (disk)
                 )
            )
      )


      (copyfiles (prompt ("\nKopierar VMM_lib.fd till " fd_dir "."))
                 (help   def_help @copyfiles-help)
                 (optional "oknodelete")
                 (optional "askuser")
                 (source  "/Developer/fd")
                 (choices "VMM_lib.fd")
                 (dest    fd_dir)
                 (confirm)
      )

      (copyfiles (prompt ("\nKopierar VMM_stat.h till " inc_dir "."))
                 (help   def_help @copyfiles-help)
                 (optional "oknodelete")
                 (optional "askuser")
                 (source  "/Developer/include")
                 (choices "VMM_Stat.h")
                 (dest    inc_dir)
                 (confirm)
      )

      (copyfiles (prompt ("\nKopierar VMM_lib.lib till " lib_dir "."))
                 (help   def_help @copyfiles-help)
                 (optional "oknodelete")
                 (optional "askuser")
                 (source  "/Developer/lib")
                 (choices "VMM_lib.lib")
                 (dest    lib_dir)
                 (confirm)
      )
    )
)

; Copy tools

(if copy_tools
  (
  if copy_icons
    ; then
      (copyfiles (prompt ("\nKopierar verktygen till " vmmdest "."))
                 (help   def_help @copyfiles-help)
                 (optional "oknodelete")
                 (optional "askuser")
                 (source  "/tools")
                 (choices "VMMStat" "VMMUsage" "VMMUsageCLI")
                 (dest    vmmdest)
                 (infos)
                 (confirm)
      )
    ; else
      (copyfiles (prompt ("\nKopierar verktygen till " vmmdest "."))
                 (help   def_help @copyfiles-help)
                 (optional "oknodelete")
                 (optional "askuser")
                 (source  "/tools")
                 (choices "VMMStat" "VMMUsage" "VMMUsageCLI")
                 (dest    vmmdest)
                 (confirm)
      )
  )
)

;

; Copy ARexx scripts

(if copy_rexx
  (copyfiles (prompt ("\nKopierar ARexx-programmen till Rexx:"))
             (help   def_help @copyfiles-help)
             (optional "oknodelete")
             (optional "askuser")
             (source  "/rexx")
             (choices "stat_on.vmm" "stat_off.vmm" "show.vmm" "hide.vmm")
             (dest    "REXX:")
             (confirm)
  )
)
