page.tsx 1.46 KB
Newer Older
1
2
import Downloader from './downloader'
import Signup from './signup'
Jeffrey Morgan's avatar
Jeffrey Morgan committed
3
4

export default async function Download() {
5
6
7
8
  const res = await fetch('https://api.github.com/repos/jmorganca/ollama/releases', { next: { revalidate: 60 } })
  const data = await res.json()

  if (data.length === 0) {
9
    return null
10
11
12
13
14
15
  }

  const latest = data[0]
  const assets = latest.assets || []

  if (assets.length === 0) {
16
    return null
17
  }
Jeffrey Morgan's avatar
Jeffrey Morgan committed
18
19

  // todo: get the correct asset for the current arch/os
20
21
22
23
24
  const asset = assets.find(
    (a: any) => a.name.toLowerCase().includes('darwin') && a.name.toLowerCase().includes('.zip')
  )

  if (!asset) {
25
    return null
26
  }
Jeffrey Morgan's avatar
Jeffrey Morgan committed
27

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  return (
    <main className='flex min-h-screen max-w-2xl flex-col p-4 lg:p-24 items-center mx-auto'>
      <img src='/ollama.png' className='w-16 h-auto' />
      <section className='my-12 text-center'>
        <h2 className='my-2 max-w-md text-3xl tracking-tight'>Downloading Ollama</h2>
        <h3 className='text-sm text-neutral-500'>
          Problems downloading?{' '}
          <a href={asset.browser_download_url} className='underline'>
            Try again
          </a>
        </h3>
        <Downloader url={asset.browser_download_url} />
      </section>
      <section className='max-w-sm flex flex-col w-full items-center border border-neutral-200 rounded-xl px-8 pt-8 pb-2'>
        <p className='text-lg leading-tight text-center mb-6 max-w-[260px]'>Sign up for updates</p>
        <Signup />
      </section>
    </main>
  )
Jeffrey Morgan's avatar
Jeffrey Morgan committed
47
}