1+ #! /usr/bin/env bash
2+
3+ # This scripts creates a new sample moduledir with required files
4+ # Run it like : ./scripts/new_module.sh my-namespace/my-module
5+
6+ MODULE_ARG=$1
7+
8+ # Check if they are in the root directory
9+ if [ ! -d " registry" ]; then
10+ echo " Please run this script from the root directory of the repository"
11+ echo " Usage: ./scripts/new_module.sh <namespace>/<module_name>"
12+ exit 1
13+ fi
14+
15+ # check if module name is in the format <namespace>/<module_name>
16+ if ! [[ " $MODULE_ARG " =~ ^[a-z0-9_-]+/[a-z0-9_-]+$ ]]; then
17+ echo " Module name must be in the format <namespace>/<module_name>"
18+ echo " Usage: ./scripts/new_module.sh <namespace>/<module_name>"
19+ exit 1
20+ fi
21+
22+ # Extract the namespace and module name
23+ NAMESPACE=$( echo " $MODULE_ARG " | cut -d' /' -f1)
24+ MODULE_NAME=$( echo " $MODULE_ARG " | cut -d' /' -f2)
25+
26+ # Check if the module already exists
27+ if [ -d " registry/$NAMESPACE /modules/$MODULE_NAME " ]; then
28+ echo " Module at registry/$NAMESPACE /modules/$MODULE_NAME already exists"
29+ echo " Please choose a different name"
30+ exit 1
31+ fi
32+ mkdir -p " registry/${NAMESPACE} /modules/${MODULE_NAME} "
33+
34+ # Copy required files from the example module
35+ cp -r examples/modules/* " registry/${NAMESPACE} /modules/${MODULE_NAME} /"
36+
37+ # Change to module directory
38+ cd " registry/${NAMESPACE} /${MODULE_NAME} "
39+
40+ # Detect OS
41+ if [[ " $OSTYPE " == " darwin" * ]]; then
42+ # macOS
43+ sed -i ' ' " s/MODULE_NAME/${MODULE_NAME} /g" main.tf
44+ sed -i ' ' " s/MODULE_NAME/${MODULE_NAME} /g" README.md
45+ else
46+ # Linux
47+ sed -i " s/MODULE_NAME/${MODULE_NAME} /g" main.tf
48+ sed -i " s/MODULE_NAME/${MODULE_NAME} /g" README.md
49+ fi
50+
51+ # Make run.sh executable
52+ chmod +x run.sh
0 commit comments