diff options
Diffstat (limited to 'src/git-lfs')
-rw-r--r-- | src/git-lfs/devcontainer-feature.json | 8 | ||||
-rwxr-xr-x | src/git-lfs/install.sh | 32 |
2 files changed, 39 insertions, 1 deletions
diff --git a/src/git-lfs/devcontainer-feature.json b/src/git-lfs/devcontainer-feature.json index 0217469..dc61dea 100644 --- a/src/git-lfs/devcontainer-feature.json +++ b/src/git-lfs/devcontainer-feature.json @@ -1,6 +1,6 @@ { "id": "git-lfs", - "version": "1.0.7", + "version": "1.1.0", "name": "Git Large File Support (LFS)", "documentationURL": "https://github.com/devcontainers/features/tree/main/src/git-lfs", "description": "Installs Git Large File Support (Git LFS) along with needed dependencies. Useful for base Dockerfiles that often are missing required install dependencies like git and curl.", @@ -13,8 +13,14 @@ ], "default": "latest", "description": "Select version of Git LFS to install" + }, + "autoPull": { + "type": "boolean", + "default": true, + "description": "Automatically pull LFS files when creating the container. When false, running 'git lfs pull' in the container will have the same effect." } }, + "postCreateCommand": "/usr/local/share/pull-git-lfs-artifacts.sh", "installsAfter": [ "ghcr.io/devcontainers/features/common-utils" ] diff --git a/src/git-lfs/install.sh b/src/git-lfs/install.sh index d6f914f..3931099 100755 --- a/src/git-lfs/install.sh +++ b/src/git-lfs/install.sh @@ -8,6 +8,7 @@ # Maintainer: The VS Code and Codespaces Teams GIT_LFS_VERSION=${VERSION:-"latest"} +AUTO_PULL=${AUTOPULL:="true"} GIT_LFS_ARCHIVE_GPG_KEY_URI="https://packagecloud.io/github/git-lfs/gpgkey" GIT_LFS_ARCHIVE_ARCHITECTURES="amd64 arm64" @@ -185,6 +186,37 @@ if [ "${use_github}" = "true" ]; then install_using_github fi +# --- Generate a 'pull-git-lfs-artifacts.sh' script to be executed by the 'postCreateCommand' lifecycle hook +PULL_GIT_LFS_SCRIPT_PATH="/usr/local/share/pull-git-lfs-artifacts.sh" + +tee "$PULL_GIT_LFS_SCRIPT_PATH" > /dev/null \ +<< EOF +#!/bin/sh +set -e +AUTO_PULL=${AUTO_PULL} +EOF + +tee -a "$PULL_GIT_LFS_SCRIPT_PATH" > /dev/null \ +<< 'EOF' + +echo "Fetching git lfs artifacts..." + +if [ "${AUTO_PULL}" != "true" ]; then + echo "(!) Skipping 'git lfs pull' because 'autoPull' is not set to 'true'" + exit 0 +fi + +# Check if repo is a git lfs repo. +if ! git lfs ls-files > /dev/null 2>&1; then + echo "(!) Skipping automatic 'git lfs pull' because no git lfs files were detected" + exit 0 +fi + +git lfs pull +EOF + +chmod 755 "$PULL_GIT_LFS_SCRIPT_PATH" + # Clean up rm -rf /var/lib/apt/lists/* |