(* Varmuuskopiot 1.0
   Skripti tekee kaksi varmuuskopiota sen kuvakkeelle pudotetuista tiedostoista tai kansioista.
   Varmuuskopioidessa saman nimiset vanhemmat kohteet korvataan uudemmilla versioilla.
   Ensimmäisellä kerralla ajettaessa skripti pyytää valitsemaan kaksi kansiota varmuuskopioita varten.
   Kannattaa valita eri levyillä sijaitsevat kansiot. Levyn puuttuessa (esim. vaihtolevy ei
   ole asemassaan) skripti kysyy sitä.

   2000 Tuomas Rosberg <vanhentunut>
   Lähdekoodi on ilmaista ja tarkoitettu yleiseen käyttöön (public domain).
   Sitä lainattessa kirjoittajan nimi on mainittava.
   Koodilla ei ole mitään takuuta, ja sen sisältävää ohjelmaa käyttävät
   toimivat omalla vastuullaan.
   *)

property usedBefore : false
property folder1 : {}
property folder2 : {}

on run -- Käynnistys kaksoisosoittamalla tai Omenavalikosta.
   if usedBefore is true then
      display dialog "Vedä ja pudota tiedostoja tämän ohjelman kuvakkeelle." & return & return & ¬
         "Niistä tehdään varmuuskopiot valittuihin kansioihin." buttons "OK" default button 1 with icon note
   else -- Varmuuskopioille ei ole valittu kansioita.
      my kysyTiedot()
      set f1 to folder1 as text
      set f2 to folder2 as text
      if f1 is not "" then
         if f2 is not "" then
            display dialog ¬
               "Kansiot varmuuskopioille ovat ”" & f1 & "” ja ”" & f2 & "" & return & ¬
               "Vedä ja pudota tiedostoja ohjelman kuvakkeelle, ja se tekee varmuuskopiot." & return ¬
               buttons "Lopeta" default button 1
         end if
      end if
   end if
end run

on open (lista) -- Käynnistys pudottamalla tiedostoja kuvakkeelle.
   if usedBefore is false then -- Varmuuskopioille ei ole valittu kansioita.
      my kysyTiedot()
   end if
   if usedBefore is true then
      set delims to AppleScript's text item delimiters
      set AppleScript's text item delimiters to ":"
      display dialog "Varmuuskopiokansioissa mahdollisesti" & return & ¬
         "olevat saman nimiset tiedostot" & return & ¬
         "korvataan uusilla versioilla." buttons {"Peruuta", "OK"} default button "OK" with icon caution
      if button returned of result is "OK" then
         tell application "Finder"
            if disk of folder1 exists then
               try
                  duplicate lista to folder1 with replacing
               on error errr
                  display dialog ¬
                     "Kopiointiyritys keskeytyy. Tulos: " & return & errr buttons "Lopeta" default button 1
               end try
            else
               display dialog ¬
                  "En löydä levyä ”" & first text item of (folder1 as text) & "”." buttons "Ohita" default button 1
            end if
            if disk of folder2 exists then
               try
                  duplicate lista to folder2 with replacing
               on error errr
                  display dialog ¬
                     "Kopiointiyritys keskeytyy. Tulos: " & return & errr buttons "Lopeta" default button 1
               end try
            else
               display dialog ¬
                  "En löydä levyä ”" & first text item of (folder2 as text) & "”." buttons "Ohita" default button 1
            end if
         end tell
      end if
      set AppleScript's text item delimiters to delims
   end if
end open

on kysyTiedot()
   display dialog "Ohjelma tekee kaksi varmuuskopiota" & return & ¬
      "halutuista tiedostoista. Valitse kansio," & return & ¬
      "jonne varmuuskopiot sijoitetaan." buttons {"Peruuta", "OK"} default button "OK"
   if button returned of result is "OK" then
      set folder1 to (choose folder with prompt "Valitse kansio varmuuskopiolle:")
      set f1 to folder1 as text
      set folder2 to (choose folder with prompt "Valitse kansio toiselle varmuuskopiolle:")
      repeat until folder2 is not folder1
         display dialog ¬
            "Valitse kaksi eri kansiota. " & return & ¬
            "Ensimmäinen kansio on ”" & f1 & "" buttons "Kiitos" default button 1
         set folder02 to (choose folder with prompt "Valitse kansio toiselle varmuuskopiolle.")
      end repeat
      set usedBefore to true -- Kansiot valittu.
   end if
end kysyTiedot