missing-feature-install-script

disallow a Feature directory without the required install.sh install script

Category
correctness
Applies to
feature
Platforms
all

Why

A Feature is distributed as its metadata file plus the “install.sh” the tooling runs inside the container, which is where the Feature does all of its work. A directory without one publishes a Feature that installs nothing, and the omission only surfaces when someone builds a container with it.

Bad

{
  "id": "node",
  "version": "1.0.0",
  "name": "Node.js"
}

Good

devcontainer-feature.json

{
  "id": "node",
  "version": "1.0.0",
  "name": "Node.js"
}

install.sh (mode 0755)

#!/usr/bin/env bash
set -e
apt-get update && apt-get install -y nodejs

The name is fixed: the tooling runs install.sh and nothing else, so an install script under any other name is never executed.

References