aboutsummarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 1f65ec4793b2c242046c9b67652a04178e569aeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# Contributor: james@stampatron.com

pkgname=daggerfall-unity-aur-bin
pkgver=1.0.0
pkgrel=2
pkgdesc="The Elder Scrolls: Daggerfall rebuilt using the unity engine"
arch=('x86_64')
url=https://www.dfworkshop.net/
license=('GPL3')
depends=('wget' 'unzip')
source=(daggerfall-unity
  daggerfall.desktop
  settings-template.ini
  data-files.txt
  https://github.com/Interkarma/daggerfall-unity/releases/download/v${pkgver}/dfu_linux_64bit-v${pkgver}.zip)
sha256sums=('0b312ea87a391da827da5296a59f6c19412a408d497ce06bbe68b45be98c3bcb'
            '1015b75af1876313bf8727cc57dc3c033e82b0904ee623a6944c333d6e4de1ae'
            'f8c7e4de325a5a25add4b2404cfdaa59f490a7cc43c89f4b72ed12db66e52ff5'
            'a6a45d321dda7b98484dbe38099d8f697c3d25e570a7bfbcdd975c206cadef2f'
            'ffba580fcf5e15edc97826ee3679048d098f016c79e057b9273876ce089e4761')

###Package Variables###

#Flag for if game data files are from google or local pc
REMOTE_DATA_FILES=FALSE

#Engine zip file name
ENGINE_NAME=dfu_linux_64bit-v$pkgver.zip

#Directory Names
DEST_DIR="opt/daggerfall-unity"
ENGINE_DIR="engine"
DATA_DIR="data"

#Daggerfall Data Variables
REMOTE_DATA_ID="0B0i8ZocaUWLGWHc1WlF3dHNUNTQ"
REMOTE_DATA="https://drive.usercontent.google.com/download?id=${REMOTE_DATA_ID}&export=download&confirm=t&uuid=5151e262-ed9f-44c8-8ebe-eab55f22c78e"

#SHA256 Hashes
DATA_HASH="8be67a4ebb76ed684968f49d29cbbe57b0c10dc4554d111d64356a2355be5083"

build() {
  #Download game data if not already downloaded
  if [ ! -d "/$DEST_DIR/$DATA_DIR" ]; then
    echo "Data files not found at /$DEST_DIR/$DATA_DIR/. Flagging for Download."
    REMOTE_DATA_FILES="TRUE"
  else
    echo "Data files found at /$DEST_DIR/$DATA_DIR/. Skipping download."
    REMOTE_DATA_FILES="FALSE"
  fi

  if [ $REMOTE_DATA_FILES == "TRUE" ]; then
    echo "Downloading game data..."
    wget -O data.zip $REMOTE_DATA$REMOTE_DATA_ID
    echo "Done."
  fi
}

check() {
  #Check if data files need checking
  if [ ! -d "/$DEST_DIR/$DATA_DIR" ]; then
    REMOTE_DATA_FILES="TRUE"
  else
    REMOTE_DATA_FILES="FALSE"
  fi

  if [ $REMOTE_DATA_FILES == "TRUE" ]; then
    echo "Checking downloaded data files integrity"
    DATA_VALID=$(sha256sum ${srcdir}/data.zip | grep -o $DATA_HASH)
    if [ $DATA_VALID == "$DATA_HASH" ]; then
      echo "Data file confirmed to be valid"
    fi
  else
    echo "Data files already exist. Skipping data integrity check."
  fi
}

package() {
  #Check if data files need packaging
  if [ ! -d "/$DEST_DIR/$DATA_DIR" ]; then
    REMOTE_DATA_FILES="TRUE"
  else
    REMOTE_DATA_FILES="FALSE"
  fi

  echo "Making the required package directories..."
  #Make required package directories
  if [ $REMOTE_DATA_FILES == "TRUE" ]; then
    mkdir -p "${pkgdir}/${DEST_DIR}/${DATA_DIR}"
  else
    echo "Download data flag not set. Skipping data folder creation."
  fi
  mkdir -p "${pkgdir}/${DEST_DIR}/${ENGINE_DIR}"
  mkdir -p "${pkgdir}/usr/share/applications"
  mkdir -p "${pkgdir}/usr/bin"
  mkdir -p "${pkgdir}/usr/share/daggerfall-unity"
  echo "Done"

  echo "Unpacking the downloaded archives..."
  #Unpack archives
  if [ $REMOTE_DATA_FILES == "TRUE" ]; then
    echo "Download data flag set. Extracting downloaded data to package."
    unzip -q "${srcdir}/data.zip" -d "${pkgdir}/${DEST_DIR}/${DATA_DIR}"
  else
    echo "Download data flag not set. Copying pre-existing data to package."
    #First make the package directories
    mkdir -p ${pkgdir}/opt/daggerfall-unity/data/SAVE2
    mkdir -p ${pkgdir}/opt/daggerfall-unity/data/SAVE0
    mkdir -p ${pkgdir}/opt/daggerfall-unity/data/SAVE4
    mkdir -p ${pkgdir}/opt/daggerfall-unity/data/SAVE3
    mkdir -p ${pkgdir}/opt/daggerfall-unity/data/arena2/books
    mkdir -p ${pkgdir}/opt/daggerfall-unity/data/SAVE1
    mkdir -p ${pkgdir}/opt/daggerfall-unity/data/SAVE5
    
    #Then loop through package file listing and copy files into the package directory
    for SRC_FILE in `cat ${srcdir}/data-files.txt`
    do
        DST_FILE=${pkgdir}/$(echo $SRC_FILE)
        if [ -f $SRC_FILE ]; then
            cp $SRC_FILE $DST_FILE
        else
            echo "$SRC_FILE not found. Skipping inclusion in package."
        fi
    done
  fi
  unzip -q "${srcdir}/$ENGINE_NAME" -d "${pkgdir}/${DEST_DIR}/${ENGINE_DIR}"
  echo "Done."

  echo "Copying the additonal files to the package..."
  #Add script for running program and make executable
  cp ${srcdir}/daggerfall-unity ${pkgdir}/usr/bin/daggerfall-unity

  #Add desktop shortcut
  cp ${srcdir}/daggerfall.desktop ${pkgdir}/usr/share/applications/daggerfall.desktop

  #Add template configuration
  cp ${srcdir}/settings-template.ini ${pkgdir}/usr/share/daggerfall-unity/settings-template.ini
  echo "Done."
	
  echo "Setting file and folder permissions..."
  #Set permissions
  find ${pkgdir}/* -type d -exec chmod 755 {} \;
  find ${pkgdir}/* -type f -exec chmod 644 {} \;
  chmod +x ${pkgdir}/${DEST_DIR}/${ENGINE_DIR}/DaggerfallUnity.x86_64
  chmod +x ${pkgdir}/usr/bin/daggerfall-unity 
  echo "Done."
}