Skip to content

Commit

Permalink
[Bug]: Codespaces creation fails when pre-commit feature is enabled (#…
Browse files Browse the repository at this point in the history
…515)

* [Bug]: Codespaces creation fails when pre-commit feature is enabled

* fix: shell lint

* ci: disable missing shebang
  • Loading branch information
danielbraun89 authored Sep 3, 2023
1 parent 7862f79 commit 756258d
Show file tree
Hide file tree
Showing 175 changed files with 1,335 additions and 1,799 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ jobs:
for i in ${comma_separated_features//,/ }
do
shellcheck --severity=error src/"$i"/*.sh
shellcheck --severity=error -e SC2148 src/"$i"/*.sh
done
test-global:
Expand Down
2 changes: 1 addition & 1 deletion src/ansible/devcontainer-feature.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "ansible",
"version": "2.0.16",
"version": "2.0.17",
"name": "Ansible (via pipx)",
"documentationURL": "http://github.com/devcontainers-contrib/features/tree/main/src/ansible",
"description": "Ansible is a suite of software tools that enables infrastructure as code.",
Expand Down
7 changes: 3 additions & 4 deletions src/ansible/install.sh
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
#!/bin/bash -i

set -e

source ./library_scripts.sh
. ./library_scripts.sh

# nanolayer is a cli utility which keeps container layers as small as possible
# source code: https://github.com/devcontainers-contrib/nanolayer
# `ensure_nanolayer` is a bash function that will find any existing nanolayer installations,
# and if missing - will download a temporary copy that automatically get deleted at the end
# of the script
ensure_nanolayer nanolayer_location "v0.4.45"
ensure_nanolayer nanolayer_location "v0.5.0"


$nanolayer_location \
install \
devcontainer-feature \
"ghcr.io/devcontainers-contrib/features/pipx-package:1.1.6" \
"ghcr.io/devcontainers-contrib/features/pipx-package:1.1.7" \
--option package='ansible-core' --option injections='ansible' --option version="$VERSION"


Expand Down
45 changes: 19 additions & 26 deletions src/ansible/library_scripts.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#!/bin/bash -i


clean_download() {
Expand All @@ -10,13 +9,13 @@ clean_download() {
# The above steps will minimize the leftovers being created while installing the downloader
# Supported distros:
# debian/ubuntu/alpine

url=$1
output_location=$2
tempdir=$(mktemp -d)
downloader_installed=""

function _apt_get_install() {
_apt_get_install() {
tempdir=$1

# copy current state of apt list - in order to revert back later (minimize contianer layer size)
Expand All @@ -25,7 +24,7 @@ clean_download() {
apt-get -y install --no-install-recommends wget ca-certificates
}

function _apt_get_cleanup() {
_apt_get_cleanup() {
tempdir=$1

echo "removing wget"
Expand All @@ -36,15 +35,15 @@ clean_download() {
rm -r /var/lib/apt/lists && mv $tempdir/lists /var/lib/apt/lists
}

function _apk_install() {
_apk_install() {
tempdir=$1
# copy current state of apk cache - in order to revert back later (minimize contianer layer size)
cp -p -R /var/cache/apk $tempdir

apk add --no-cache wget
}

function _apk_cleanup() {
_apk_cleanup() {
tempdir=$1

echo "removing wget"
Expand Down Expand Up @@ -100,45 +99,39 @@ ensure_nanolayer() {
local variable_name=$1

local required_version=$2
# normalize version
if ! [[ $required_version == v* ]]; then
required_version=v$required_version
fi

local nanolayer_location=""
local __nanolayer_location=""

# If possible - try to use an already installed nanolayer
if [[ -z "${NANOLAYER_FORCE_CLI_INSTALLATION}" ]]; then
if [[ -z "${NANOLAYER_CLI_LOCATION}" ]]; then
if [ -z "${NANOLAYER_FORCE_CLI_INSTALLATION}" ]; then
if [ -z "${NANOLAYER_CLI_LOCATION}" ]; then
if type nanolayer >/dev/null 2>&1; then
echo "Found a pre-existing nanolayer in PATH"
nanolayer_location=nanolayer
__nanolayer_location=nanolayer
fi
elif [ -f "${NANOLAYER_CLI_LOCATION}" ] && [ -x "${NANOLAYER_CLI_LOCATION}" ] ; then
nanolayer_location=${NANOLAYER_CLI_LOCATION}
echo "Found a pre-existing nanolayer which were given in env variable: $nanolayer_location"
__nanolayer_location=${NANOLAYER_CLI_LOCATION}
echo "Found a pre-existing nanolayer which were given in env variable: $__nanolayer_location"
fi

# make sure its of the required version
if ! [[ -z "${nanolayer_location}" ]]; then
if ! [ -z "${__nanolayer_location}" ]; then
local current_version
current_version=$($nanolayer_location --version)
if ! [[ $current_version == v* ]]; then
current_version=v$current_version
fi
current_version=$($__nanolayer_location --version)


if ! [ $current_version == $required_version ]; then
echo "skipping usage of pre-existing nanolayer. (required version $required_version does not match existing version $current_version)"
nanolayer_location=""
__nanolayer_location=""
fi
fi

fi

# If not previuse installation found, download it temporarly and delete at the end of the script
if [[ -z "${nanolayer_location}" ]]; then
if [ -z "${__nanolayer_location}" ]; then

if [ "$(uname -sm)" == "Linux x86_64" ] || [ "$(uname -sm)" == "Linux aarch64" ]; then
if [ "$(uname -sm)" = 'Linux x86_64' ] || [ "$(uname -sm)" = "Linux aarch64" ]; then
tmp_dir=$(mktemp -d -t nanolayer-XXXXXXXXXX)

clean_up () {
Expand All @@ -162,7 +155,7 @@ ensure_nanolayer() {

tar xfzv $tmp_dir/$tar_filename -C "$tmp_dir"
chmod a+x $tmp_dir/nanolayer
nanolayer_location=$tmp_dir/nanolayer
__nanolayer_location=$tmp_dir/nanolayer


else
Expand All @@ -172,7 +165,7 @@ ensure_nanolayer() {
fi

# Expose outside the resolved location
declare -g ${variable_name}=$nanolayer_location
export ${variable_name}=$__nanolayer_location

}

Expand Down
2 changes: 1 addition & 1 deletion src/aws-eb-cli/devcontainer-feature.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "aws-eb-cli",
"version": "1.0.15",
"version": "1.0.16",
"name": "aws-eb-cli (via pipx)",
"documentationURL": "http://github.com/devcontainers-contrib/features/tree/main/src/aws-eb-cli",
"description": "AWS Elastic Beanstalk CLI.",
Expand Down
7 changes: 3 additions & 4 deletions src/aws-eb-cli/install.sh
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
#!/bin/bash -i

set -e

source ./library_scripts.sh
. ./library_scripts.sh

# nanolayer is a cli utility which keeps container layers as small as possible
# source code: https://github.com/devcontainers-contrib/nanolayer
# `ensure_nanolayer` is a bash function that will find any existing nanolayer installations,
# and if missing - will download a temporary copy that automatically get deleted at the end
# of the script
ensure_nanolayer nanolayer_location "v0.4.45"
ensure_nanolayer nanolayer_location "v0.5.0"


$nanolayer_location \
install \
devcontainer-feature \
"ghcr.io/devcontainers-contrib/features/pipx-package:1.1.6" \
"ghcr.io/devcontainers-contrib/features/pipx-package:1.1.7" \
--option package='awsebcli' --option version="$VERSION"


Expand Down
45 changes: 19 additions & 26 deletions src/aws-eb-cli/library_scripts.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#!/bin/bash -i


clean_download() {
Expand All @@ -10,13 +9,13 @@ clean_download() {
# The above steps will minimize the leftovers being created while installing the downloader
# Supported distros:
# debian/ubuntu/alpine

url=$1
output_location=$2
tempdir=$(mktemp -d)
downloader_installed=""

function _apt_get_install() {
_apt_get_install() {
tempdir=$1

# copy current state of apt list - in order to revert back later (minimize contianer layer size)
Expand All @@ -25,7 +24,7 @@ clean_download() {
apt-get -y install --no-install-recommends wget ca-certificates
}

function _apt_get_cleanup() {
_apt_get_cleanup() {
tempdir=$1

echo "removing wget"
Expand All @@ -36,15 +35,15 @@ clean_download() {
rm -r /var/lib/apt/lists && mv $tempdir/lists /var/lib/apt/lists
}

function _apk_install() {
_apk_install() {
tempdir=$1
# copy current state of apk cache - in order to revert back later (minimize contianer layer size)
cp -p -R /var/cache/apk $tempdir

apk add --no-cache wget
}

function _apk_cleanup() {
_apk_cleanup() {
tempdir=$1

echo "removing wget"
Expand Down Expand Up @@ -100,45 +99,39 @@ ensure_nanolayer() {
local variable_name=$1

local required_version=$2
# normalize version
if ! [[ $required_version == v* ]]; then
required_version=v$required_version
fi

local nanolayer_location=""
local __nanolayer_location=""

# If possible - try to use an already installed nanolayer
if [[ -z "${NANOLAYER_FORCE_CLI_INSTALLATION}" ]]; then
if [[ -z "${NANOLAYER_CLI_LOCATION}" ]]; then
if [ -z "${NANOLAYER_FORCE_CLI_INSTALLATION}" ]; then
if [ -z "${NANOLAYER_CLI_LOCATION}" ]; then
if type nanolayer >/dev/null 2>&1; then
echo "Found a pre-existing nanolayer in PATH"
nanolayer_location=nanolayer
__nanolayer_location=nanolayer
fi
elif [ -f "${NANOLAYER_CLI_LOCATION}" ] && [ -x "${NANOLAYER_CLI_LOCATION}" ] ; then
nanolayer_location=${NANOLAYER_CLI_LOCATION}
echo "Found a pre-existing nanolayer which were given in env variable: $nanolayer_location"
__nanolayer_location=${NANOLAYER_CLI_LOCATION}
echo "Found a pre-existing nanolayer which were given in env variable: $__nanolayer_location"
fi

# make sure its of the required version
if ! [[ -z "${nanolayer_location}" ]]; then
if ! [ -z "${__nanolayer_location}" ]; then
local current_version
current_version=$($nanolayer_location --version)
if ! [[ $current_version == v* ]]; then
current_version=v$current_version
fi
current_version=$($__nanolayer_location --version)


if ! [ $current_version == $required_version ]; then
echo "skipping usage of pre-existing nanolayer. (required version $required_version does not match existing version $current_version)"
nanolayer_location=""
__nanolayer_location=""
fi
fi

fi

# If not previuse installation found, download it temporarly and delete at the end of the script
if [[ -z "${nanolayer_location}" ]]; then
if [ -z "${__nanolayer_location}" ]; then

if [ "$(uname -sm)" == "Linux x86_64" ] || [ "$(uname -sm)" == "Linux aarch64" ]; then
if [ "$(uname -sm)" = 'Linux x86_64' ] || [ "$(uname -sm)" = "Linux aarch64" ]; then
tmp_dir=$(mktemp -d -t nanolayer-XXXXXXXXXX)

clean_up () {
Expand All @@ -162,7 +155,7 @@ ensure_nanolayer() {

tar xfzv $tmp_dir/$tar_filename -C "$tmp_dir"
chmod a+x $tmp_dir/nanolayer
nanolayer_location=$tmp_dir/nanolayer
__nanolayer_location=$tmp_dir/nanolayer


else
Expand All @@ -172,7 +165,7 @@ ensure_nanolayer() {
fi

# Expose outside the resolved location
declare -g ${variable_name}=$nanolayer_location
export ${variable_name}=$__nanolayer_location

}

Expand Down
2 changes: 1 addition & 1 deletion src/bandit/devcontainer-feature.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "bandit",
"version": "2.0.16",
"version": "2.0.17",
"name": "Bandit (via pipx)",
"documentationURL": "http://github.com/devcontainers-contrib/features/tree/main/src/bandit",
"description": "Bandit is a tool designed to find common security issues in Python code.",
Expand Down
7 changes: 3 additions & 4 deletions src/bandit/install.sh
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
#!/bin/bash -i

set -e

source ./library_scripts.sh
. ./library_scripts.sh

# nanolayer is a cli utility which keeps container layers as small as possible
# source code: https://github.com/devcontainers-contrib/nanolayer
# `ensure_nanolayer` is a bash function that will find any existing nanolayer installations,
# and if missing - will download a temporary copy that automatically get deleted at the end
# of the script
ensure_nanolayer nanolayer_location "v0.4.45"
ensure_nanolayer nanolayer_location "v0.5.0"


$nanolayer_location \
install \
devcontainer-feature \
"ghcr.io/devcontainers-contrib/features/pipx-package:1.1.6" \
"ghcr.io/devcontainers-contrib/features/pipx-package:1.1.7" \
--option package='bandit' --option version="$VERSION"


Expand Down
Loading

0 comments on commit 756258d

Please sign in to comment.