;
; $VER: Install_Fortune 1.2 (10.10.98) Copyright © Jon Close 1997-98
;

(set #msg-shareware-version "\n\nFortune %s\n\nCopyright © Jon Close 1997-98\n\nFortune is SHAREWARE.\n\nPlease register this program if you use it regularly\n\nSee documentation for details.")

(set #msg-registered-version "\n\nFortune %s\n\nCopyright © Jon Close 1997-98\n\nRegistered Version.\n\nThanks for your support.")

(set #msg-get-install-dir "Select destination directory...\n(A new drawer named \"Fortune\" will be created)")

(set #msg-install-main "Select which parts of this archive you would like to install...")

(set #msg-install-main-help (cat "Select which parts of this archive you would like to install...\n\n"
                                 "Fortune: Main program.\n"
                                 "Fortune Guide: Fortune amigaguide document.\n"
                                 "Fortune Methods: The methods are required for generating any predictions.\n"
                                 "Lottery Data Files: At present there is only one data file for the UK National Lottery.\n"
                                 "Example Functons: Some example functions to start you off.\n"
                                 "Fortune Icons: Miscellaneous program icons.\n"
                                 "Directory Opus 5 Filetype: A 'Fortune Data' filetype for the excellent Directory Opus 5."))

(set #msg-install-methods "Select the methods you would like to install...")

(set #msg-get-cpu "Select which version of Fortune you would like to install...")

(set #msg-get-cpu-help (cat "Select which version of Fortune you would like installed. If you're not sure which one you should choose, either leave the default setting or just select 68000.\n\n"))

(set #msg-install-data "Select the data files you would like to install...")

(set #msg-ask-overwrite-functions "\n\"ENVARC:Fortune/Fortune.functions\" already exists.\n\nDo you want to overwrite existing file?")

(set #msg-install-filetype "Installing Directory Opus 5 Filetype...")

(set #msg-ask-assign "\nThe following command should be added to your user-startup.\n\nAssign Fortune: \"%s\"")

(set #msg-assign "Assign Fortune: \"%s\"")

(set #src-dir "")

;========================================================
; Get cpu 

(set cpu (database "cpu"))

(if (AND (<> cpu "68000") (<> cpu "68010")) (set cpu-version 1) (set cpu-version 0))

;========================================================
; Get version

(if (set vernum (getversion "Fortune"))
    (
        (set ver (/ vernum 65536))
        (set rev (- vernum (* ver 65536)))

        (set version ("v%ld.%ld" ver rev))
    )
)

;========================================================
; Get destination directory

(if (exists "Fortune:" (noreq)) (set @default-dest (expandpath "Fortune:/")) (set @default-dest "Work:"))

(set @default-dest                
    (askdir
        (prompt #msg-get-install-dir)
        (help @askdir-help)
        (default @default-dest)
    )
)

(set #dest-dir (tackon @default-dest "Fortune"))

;========================================================
; Show welcome message

(if (OR (exists (tackon #src-dir "Fortune.key") (noreq)) (exists (tackon #dest-dir "Fortune.key") (noreq)))
    (message (#msg-registered-version version) (all))
    (message (#msg-shareware-version version) (all))
)

(welcome)

;========================================================
; Set default installation options

(set #def-main-options 7)

(if (NOT (exists #dest-dir (noreq))) (set #def-main-options (+ #def-main-options 40)))

(if (NOT (exists "ENVARC:Fortune/Fortune.functions" (noreq))) (set #def-main-options (+ #def-main-options 16)))

(if (AND (exists "DOpus5:" (noreq)) (NOT (exists "Dopus5:Filetypes/Database, Fortune" (noreq)))) (set #def-main-options (+ #def-main-options 64)))

;========================================================
; Get installation options

(set #main-options
    (askoptions
        (prompt #msg-install-main)
        (choices "Fortune" "Fortune Guide" "Fortune Methods" "Lottery Data Files" "Example Functions" "Fortune Icons" "Directory Opus5 Filetype")
        (help #msg-install-main-help)
        (default #def-main-options)
    )
)

(if (OR (IN #main-options 0) (IN #main-options 2))
    (set cpu-version
        (askchoice
            (choices "68000" "68020+")
            (prompt #msg-get-cpu)
            (help (cat #msg-get-cpu-help @askchoice-help))
            (default cpu-version)
        )
    )
)

;========================================================
; Create Fortune directory

(if (AND (NOT (exists (tackon @default-dest "Fortune"))) (BITAND #main-options 47))
    (
        (makedir (tackon @default-dest "Fortune"))
        (copyfiles
            (source (tackon #src-dir "/Fortune.info"))
            (dest   @default-dest)
            (nogauge)
        )
    )
)

;========================================================
; Install Main Program

(if (IN #main-options 0)
    (
        (if (= cpu-version 0)
            (copyfiles
                (source (tackon #src-dir "Fortune"))
                (dest #dest-dir)
            )
            (copyfiles
                (source (tackon #src-dir "Fortune.020"))
                (dest #dest-dir)
                (newname "Fortune")
            )
        )

        (if (NOT (exists (tackon #dest-dir "Fortune.info")))
            (copyfiles
                (source (tackon #src-dir "Fortune.info"))
                (dest #dest-dir)
            )
        )

        (if (exists (tackon #src-dir "Fortune.key")) 
            (copyfiles
                (source (tackon #src-dir "Fortune.key"))
                (dest #dest-dir)
                (nogauge)
            )
        ) 
    )
)

;========================================================
; Install Amigaguide

(if (IN #main-options 1)
    (
        (copyfiles
            (source (tackon #src-dir "Fortune.guide"))
            (dest #dest-dir)
        )
        (if (NOT (exists (tackon #dest-dir "Fortune.guide.info")))
            (copyfiles
                (source (tackon #src-dir "Fortune.guide.info"))
                (dest #dest-dir)
            )
        )
    )
)

;========================================================
; Install Methods

(if (IN #main-options 2)
    (
        (if (NOT (exists (tackon #dest-dir "Methods")))
            (
                (makedir (tackon #dest-dir "Methods"))
                (copyfiles
                    (source (tackon #src-dir "Methods.info"))
                    (dest   #dest-dir)
                    (nogauge)
                )
            )
        )

        (if (= cpu-version 0)
            (set #method-src-dir (tackon #src-dir "Methods"))
            (set #method-src-dir (tackon #src-dir "Methods/020"))
        )

        (copyfiles
            (prompt #msg-install-methods)
            (help @copyfiles-help)
            (source #method-src-dir)
            (dest (tackon #dest-dir "Methods"))
            (pattern "#?.method")
            (confirm)
        )
    )
)

;========================================================
; Install Data Files

(if (IN #main-options 3)
    (
        (if (NOT (exists (tackon #dest-dir "Data")))
            (
                (makedir (tackon #dest-dir "Data"))
                (copyfiles
                    (source (tackon #src-dir "Data.info"))
                    (dest   #dest-dir)
                    (nogauge)
                )
            )
        )

        (copyfiles
            (prompt #msg-install-data)
            (help @copyfiles-help)
            (source (tackon #src-dir "Data"))
            (dest (tackon #dest-dir "Data"))
            (confirm)
            (all)
            (infos)
        )

        (foreach (tackon #dest-dir "Data") "#?"
            (tooltype
                (help @tooltype-help)
                (dest (tackon (tackon #dest-dir "Data") @each-name))
                (setdefaulttool (tackon #dest-dir "Fortune"))
            )
        )
    )
)

;========================================================
; Install Example Functions

(set #install-functions 1)

(if (IN #main-options 4)
    (
        (if (exists "ENVARC:Fortune/Fortune.functions" (noreq))
            (set #install-functions
                (askbool
                    (prompt #msg-ask-overwrite-functions)
                    (help @askbool-help)
                    (default 0)
                )
            )
        )

        (if (<> #install-functions 0)
            (
                (makedir "ENVARC:Fortune")

                (copyfiles
                    (source (tackon #src-dir "Prefs/Env-Archive/Fortune/Fortune.functions"))
                    (dest "ENVARC:Fortune")
                )
            )
        )
    )
)

;========================================================
; Install Icons

(if (IN #main-options 5)
    (
        (if (NOT (exists (tackon #dest-dir "Icons")))
            (
                (makedir (tackon #dest-dir "Icons"))
                (copyfiles
                    (source (tackon #src-dir "Icons.info"))
                    (dest   #dest-dir)
                    (nogauge)
                )
            )
        )

        (copyfiles
            (source (tackon #src-dir "Icons"))
            (dest (tackon #dest-dir "Icons"))
            (pattern "#?")
            (nogauge)
        )
    )
)

;========================================================
; Install DOpus5 Filetype

(if (IN #main-options 6)
    (if (exists "DOpus5:" (noreq))
        (copyfiles
            (source (tackon #src-dir "DOpus5/Filetypes"))
            (dest "DOpus5:Filetypes")
            (prompt #msg-install-filetype)
            (help @copyfiles-help)
            (all)
            (confirm)
            (infos)
        )
    )
)

;========================================================
; Set "Fortune:" assign in user-startup

(if (exists (tackon @default-dest "Fortune"))
    (
        (startup "Fortune"
            (prompt (#msg-ask-assign #dest-dir))
            (command (#msg-assign #dest-dir))
            (help @startup-help)
            (confirm)
        )

        (makeassign "Fortune" #dest-dir)
    )
)

(exit)
