;
;$VER: AmigaLink Install v2.0 (15.10.95)
;
; Installation script for AmigaLink and its file system.
;
; Modified by AmiTrix Development
; Modifications Copyright 1995
;


(transcript "Installing AmigaLink v2.0...")

(complete 0)

(set @default-dest "SYS:")

(working "Making the directories for installation in"
         "\"ENV:\" and \"DEVS:\"."
)

(if (NOT (exists "ENV:Networks"))
    (makedir "ENV:Networks")
)

(if (NOT (exists "DEVS:Networks"))
    (makedir "DEVS:Networks")
)

(complete 5)

(if (NOT (exists "ENVARC:" (noreq)))
    (
      (message "The directory \"ENVARC:\" does not exist,"
               "it is now being created.")

      (makedir "SYS:Env-Archive"
             (prompt "Making the directory \"SYS:Env-Archive\"")
             (help @makedir-help)
             (infos)
             (confirm)
      )

      (complete 6)

      (makeassign "ENVARC" "SYS:Env-Archive")

      (complete 7)

      (startup "Envarc setup"
              (prompt "Add the command for ENVARC: directory to \"S:user-startup\".")
              (help "No help available.  Please refer to manual or readme file.")
              (command "Assign ENVARC: SYS:Env-Archive\nCopy ENVARC: ENV: all quiet\n")
      )
    )
)

(complete 8)

(if (NOT (exists "ENVARC:Networks"))
    (makedir "ENVARC:Networks")
)

(complete 9)

(makedir ("RAM:AmigaLink")
         (safe)
)

(complete 10)

(copyfiles
  (help @copyfiles-help)
  (prompt "Reading \"spidernet.device\".")
  (source "bin/spidernet.device")
  (dest "RAM:AmigaLink/")
  (safe)
)

(complete 15)

(copyfiles
  (help @copyfiles-help)
  (prompt "Installing spidernet.device")
  (source "RAM:AmigaLink/spidernet.device")
  (dest "DEVS:Networks/")
  (confirm)
)
(delete "RAM:AmigaLink/spidernet.device")


(complete 20)

(copyfiles
  (help @copyfiles-help)
  (prompt "Reading FileSystem Driver and Commands")
  (source "bin/")
  (dest "RAM:AmigaLink/")
  (pattern "~(#?.device)")
  (safe)
)

(complete 25)

(copyfiles
  (help @copyfiles-help)
  (prompt "Installing AmigaLink-FileHandler")
  (source "RAM:AmigaLink/AmigaLink-FileHandler")
  (dest "l:")
  (confirm)
)

(complete 30)

(copyfiles
  (help @copyfiles-help)
  (prompt "Installing NetMount")
  (source "RAM:AmigaLink/NetMount")
  (dest "c:")
  (confirm)
)

(complete 35)

(copyfiles
  (help @copyfiles-help)
  (prompt "Installing NetUnmount")
  (source "RAM:AmigaLink/NetUnmount")
  (dest "c:")
  (confirm)
)

(complete 40)

(set export
  (askbool
    (prompt "Will this station export devices?")
    (help @askbool-help)
    (default 0)
  )
)

(if export
  (
    (copyfiles
      (help @copyfiles-help)
      (prompt "Installing AmigaLink-FileServer")
      (source "RAM:AmigaLink/AmigaLink-FileServer")
      (dest "l:")
      (confirm)
    )

    (complete 45)

    (copyfiles
      (help @copyfiles-help)
      (prompt "Installing StartServer")
      (source "RAM:AmigaLink/StartServer")
      (dest "c:")
      (confirm)
    )

    (complete 50)

    (copyfiles
      (help @copyfiles-help)
      (prompt "Installing ShutdownServer")
      (source "RAM:AmigaLink/ShutdownServer")
      (dest "c:")
      (confirm)
    )
  )
)

(complete 55)

(working "Cleaning up RAM-Disk.")

(foreach "RAM:AmigaLink" "#?"
        (delete (cat "RAM:AmigaLink/" @each-name)
                (optional force)
                (safe)
        )
)

; Determine if the user is installing to a hard drive with enough space
; for the network tools and diagnostics

(set installtools
   (askbool
      (prompt "Do you wish to install the network tools and diagnostics?\n"
              "This requires that your computer have a hard disk.")
      (help "The network tools and diagnostics take up over 200K of "
            "disk space.  They will not fit onto a Workbench disk.  "
            "If you do not install them, they may still be used "
            "directly from a copy of the Installation Disk."
      )
      (default 0)
    )
)

(if installtools
   (
      ; Ask the user where to install the Import, Export, Spooler
      ; and Statistics programs.

      (set AmigaLinkLocation
        (askdir
          (prompt "Where would you like the AmigaLink drawer to be created.")
          (help @askdir-help)
          (default @default-dest)
        )
      )

      (set AmigaLinkDirectory (tackon AmigaLinkLocation "AmigaLink"))
      (set @default-dest AmigaLinkDirectory)

      (makedir AmigaLinkDirectory (infos))

      (copyfiles
         (help @copyfiles-help)
         (prompt "Reading network tools.")
         (source "/")
         (choices "Export" "Import" "Spooler" "Statistics")
         (infos)
         (dest "RAM:AmigaLink/")
         (safe)
      )

      (copyfiles
         (help @copyfiles-help)
         (prompt "Installing network tools.")
         (source "RAM:AmigaLink/")
         (choices "Export" "Import" "Spooler" "Statistics")
         (infos)
         (dest AmigaLinkDirectory)
      )

      (working "Cleaning up RAM-Disk.")

      (foreach "RAM:AmigaLink" "#?"
        (delete (cat "RAM:AmigaLink/" @each-name)
                (optional force)
                (safe)
        )
      )

      (copyfiles
         (help @copyfiles-help)
         (prompt "Reading diagnostic programs.")
         (source "/")
         (choices "diagnostics")
         (infos)
         (dest "RAM:AmigaLink/")
         (safe)
      )

      (copyfiles
         (help @copyfiles-help)
         (prompt "Installing diagnostic programs.")
         (source "RAM:AmigaLink/")
         (choices "diagnostics")
         (infos)
         (dest AmigaLinkDirectory)
      )

      (working "Cleaning up RAM-Disk.")

      ; Delete the diagnostic programs
      (foreach "RAM:AmigaLink/diagnostics/c" "#?"
        (delete (cat "RAM:AmigaLink/diagnostics/c/" @each-name)
                (optional force)
                (safe)
        )
      )
      ; Delete the diagnostic devices
      (foreach "RAM:AmigaLink/diagnostics/devs/networks" "#?"
        (delete (cat "RAM:AmigaLink/diagnostics/devs/networks/" @each-name)
                (optional force)
                (safe)
        )
      )
      ; Delete the diagnostic devs/network subdirectory
      (foreach "RAM:AmigaLink/diagnostics/devs" "#?"
        (delete (cat "RAM:AmigaLink/diagnostics/devs/" @each-name)
                (optional force)
                (safe)
        )
      )
      ; Delete the diagnostic's temporary subdirectories
      (foreach "RAM:AmigaLink/diagnostics" "#?"
        (delete (cat "RAM:AmigaLink/diagnostics/" @each-name)
                (optional force)
                (safe)
        )
      )
      ; Delete the diagnostic's temporary directory
      (foreach "RAM:AmigaLink" "#?"
        (delete (cat "RAM:AmigaLink/" @each-name)
                (optional force)
                (safe)
        )
      )
   )
)

(delete ("RAM:AmigaLink")
        (safe)
)

(complete 70)

(set hostname
  (askstring
    (prompt "Please enter a name for this station.\n"
            "WARNING! This has to be a unique name!")
    (help @askstring-help)
    (default "mysystem")
  )
)

(complete 70)

(set device "networks/amoksana.device")
(if (= @user-level 2)
  (
    (set device
      (askstring
        (prompt "Please enter a SANA-II device driver name")
        (help @askstring-help)
        (default device)
      )
    )
  )
)

(complete 73)

(set unit 0)
(if (= @user-level 2)
  (
    (set unit
      (asknumber
        (prompt "Which unit number?")
        (help @asknumber-help)
        (default unit)
      )
    )
  )
)

(complete 76)

(set spitype 44290)
(if (= @user-level 2)
  (
    (set spitype
      (asknumber
        (prompt "Please enter the packet type for data transfer:")
        (help @asknumber-help)
        (default spitype)
      )
    )
  )
)

(complete 78)

(set nsetype 44291)
(if (= @user-level 2)
  (
    (set nsetype
      (asknumber
        (prompt "Please enter the packet type for name resolutions:")
        (help @asknumber-help)
        (default nsetype)
      )
    )
  )
)

(complete 80)

(set timeout 5000)
(if (= @user-level 2)
  (
    (set timeout
      (asknumber
        (prompt "Please enter the timeout value in milliseconds:")
        (help @asknumber-help)
        (default timeout)
      )
    )
  )
)

(complete 83)

(set repeat 700)
(if (= @user-level 2)
  (
    (set repeat
      (asknumber
        (prompt "Please enter the repeat interval in milliseconds:")
        (help @asknumber-help)
        (default repeat)
      )
    )
  )
)

(complete 86)

(set nameserver 1)
(if (= @user-level 2)
  (
    (set nameserver
      (askbool
        (prompt "Is this computer a name server?")
        (help @askbool-help)
        (default nameserver)
      )
    )
  )
)

(complete 90)

(working "Creating configuration file for network protocol.")

(textfile
  (dest "ENV:NetWorks/SpiderNet.prefs")
  (append "%% SpiderNet.prefs\n"
          "%% configuration file for spidernet.device\n"
          "%% network service protocol interface\n"
          "\n"
          "%% valid keywords are:\n"
          "%%\n"
          "%% DEVICE=<SanaDeviceName>      must always be specified\n"
          "%% HOSTNAME=<HostName>          must always be specified\n"
          "%% UNIT=<SanaDeviceUnitNumber>  default is unit 0\n"
          "%% SPITYPE=<PacketTypeNumber>   default is 0AD02h\n"
          "%% NSETYPE=<PacketTypeNumber>   default is 0AD03h\n"
          "%% TIMEOUT=<MilliSec>           default is 5 seconds\n"
          "%% REPEAT=<MilliSec>            default is 0.7 seconds\n"
          "%% NAMESERVER=<Yes|No>          default is Yes if AvailMem > 500k\n"
          "\n")

  (append "BEGIN AmokNet\n")
  (append (cat "  DEVICE     = \"" device   "\"\n"))
  (append (cat "  HOSTNAME   = \"" hostname "\"\n"))
  (append (cat "  UNIT       = "   unit       "\n"))
  (append (cat "  SPITYPE    = "   spitype    "\n"))
  (append (cat "  NSETYPE    = "   nsetype    "\n"))
  (append (cat "  TIMEOUT    = "   timeout    "\n"))
  (append (cat "  REPEAT     = "   repeat     "\n"))
  (if nameserver
    (
      (append "  NAMESERVER = Yes\n")
    )
    (
      (append "  NAMESERVER = No\n")
    )
  )
  (append "END\n")
)

(complete 95)

(copyfiles
  (source "ENV:Networks/SpiderNet.prefs")
  (dest "ENVARC:Networks/")
)

(complete 100)

(exit)
