Skip to content

Commit

Permalink
apt-get packages feature
Browse files Browse the repository at this point in the history
  • Loading branch information
danielbraun89 committed Dec 17, 2022
1 parent 95970c6 commit ccd4c1f
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/apt-get-packages/devcontainer-feature.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "apt-get packages",
"id": "apt-get-packages",
"version": "1.0.0",
"description": "Installs an apt-get packages (debian).",
"documentationURL": "http://github.com/devcontainers-contrib/features/tree/main/src/apt-get-package",
"installAfter": [],
"options": {
"packages": {
"type": "string",
"proposals": [
"gcc",
"curl"
],
"default": "",
"description": "Space delimitered apt-get packages to install."
}
}
}
33 changes: 33 additions & 0 deletions src/apt-get-packages/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/usr/bin/env bash
set -ex

PACKAGES="${PACKAGES:-""}"

# Clean up
rm -rf /var/lib/apt/lists/*

if [ -z "$PACKAGES" ]; then
echo -e "'packages' variable is empty, skipping"
exit 0
fi

if [ "$(id -u)" -ne 0 ]; then
echo -e 'Script must be run as
root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
exit 1
fi

check_packages() {
# This is part of devcontainers-contrib script library
# source: https://github.com/devcontainers-contrib/features/tree/v1.1.8/script-library
if ! dpkg -s "$@" >/dev/null 2>&1; then
if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then
echo "Running apt-get update..."
apt-get update -y
fi
apt-get -y install --no-install-recommends "$@"
fi
}

packages_array=("$PACKAGES")
check_packages ${packages_array[@]}
11 changes: 11 additions & 0 deletions test/apt-get-packages/install_cowsay_build_essential.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash

set -e

source dev-container-features-test-lib

check 'dpkg -l | grep "ii cowsay"' dpkg -l | grep "ii cowsay"
check 'dpkg -l | grep "ii build-essential"' dpkg -l | grep "ii build-essential"


reportResults
11 changes: 11 additions & 0 deletions test/apt-get-packages/scenarios.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"install_cowsay_build_essential": {
"image": "debian:bullseye",
"features": {
"apt-get-packages": {
"version": "latest",
"packages": "cowsay build-essential"
}
}
}
}
9 changes: 9 additions & 0 deletions test/apt-get-packages/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash

set -e

source dev-container-features-test-lib

check "nothing is installted when package is empty" exit 0

reportResults

0 comments on commit ccd4c1f

Please sign in to comment.