build.sh 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/usr/bin/env bash
  2. set -ex
  3. CALLER_DIR=$( pwd )
  4. cd "$( dirname "${BASH_SOURCE[0]}" )"
  5. # Include utilities
  6. . ../../utils.sh
  7. SNAP_VERSION=$( echo "${RELEASE_VERSION}" | sed 's|\-insider||' )
  8. ICON_NAME="$( echo "${APP_NAME}" | awk '{print tolower($0)}' )"
  9. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  10. ICON_NAME="${ICON_NAME}-insiders"
  11. fi
  12. rm -rf build
  13. mkdir -p build/snap/gui
  14. if [[ "${CI_BUILD}" == "no" ]]; then
  15. DEB_ARCHIVE=$( ls ../../vscode/.build/linux/deb/amd64/deb/*.deb )
  16. else
  17. # Get GitHub releases
  18. wget --quiet "https://api.github.com/repos/${ASSETS_REPOSITORY}/releases" -O gh_latest.json
  19. DEB_URL=$( jq -r 'map(select(.tag_name == "'"${RELEASE_VERSION}"'"))|first.assets[].browser_download_url|select(endswith("'"_${ARCHITECTURE}.deb"'"))' gh_latest.json )
  20. DEB_ARCHIVE=$( basename "${DEB_URL}" )
  21. # Downloading .deb
  22. wget "${DEB_URL}" -O "${DEB_ARCHIVE}"
  23. rm gh_latest.json
  24. fi
  25. # Unpacking .deb
  26. dpkg -x "${DEB_ARCHIVE}" build/deb
  27. mkdir -p build/snap/local/usr/share
  28. mv "build/deb/usr/share/${BINARY_NAME}" "build/snap/local/usr/share/${BINARY_NAME}"
  29. # Prepare snapcraft.yaml
  30. cp ${VSCODE_QUALITY}/snapcraft.yaml build/snap/snapcraft.yaml
  31. replace "s|@@SNAP_NAME@@|${BINARY_NAME}|g" build/snap/snapcraft.yaml
  32. replace "s|@@SNAP_VERSION@@|${SNAP_VERSION}|g" build/snap/snapcraft.yaml
  33. # Prepare electron-launch
  34. cp ${VSCODE_QUALITY}/electron-launch build/electron-launch
  35. # Prepare GUI
  36. cp "../../src/${VSCODE_QUALITY}/resources/linux/code.png" "build/snap/gui/${BINARY_NAME}.png"
  37. cp build/deb/usr/share/applications/*.desktop build/snap/gui
  38. sed -i "s|Exec=/usr/share/${BINARY_NAME}/${BINARY_NAME}|Exec=${BINARY_NAME} --force-user-env|g" "build/snap/gui/${BINARY_NAME}.desktop"
  39. sed -i "s|Exec=/usr/share/${BINARY_NAME}/${BINARY_NAME}|Exec=${BINARY_NAME} --force-user-env|g" "build/snap/gui/${BINARY_NAME}-url-handler.desktop"
  40. sed -i "s|Icon=${ICON_NAME}|Icon=\${SNAP}/meta/gui/${BINARY_NAME}.png|g" "build/snap/gui/${BINARY_NAME}.desktop"
  41. sed -i "s|Icon=${ICON_NAME}|Icon=\${SNAP}/meta/gui/${BINARY_NAME}.png|g" "build/snap/gui/${BINARY_NAME}-url-handler.desktop"
  42. # Clean up
  43. rm -rf build/deb
  44. cd build
  45. if [[ "${CI_BUILD}" == "no" ]]; then
  46. snapcraft --use-lxd --debug
  47. # else
  48. # snapcraft
  49. # SNAP_ARCHIVE=$( ls *.snap )
  50. # echo "snap=$( pwd )/${SNAP_ARCHIVE}" >> "$GITHUB_OUTPUT"
  51. fi
  52. cd "${CALLER_DIR}"