Skip to content

Commit 4524bcf

Browse files
committed
fix: terraform templatefile syntax issues and validation
1 parent b6e0c89 commit 4524bcf

File tree

2 files changed

+58
-45
lines changed

2 files changed

+58
-45
lines changed

registry/toti85/modules/auto-dev-server/main.tf

Lines changed: 51 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ variable "enabled_frameworks" {
2424
description = "List of frameworks to detect and auto-start. Available: nodejs, rails, django, flask, fastapi, spring, go, rust, php"
2525
type = list(string)
2626
default = ["nodejs", "rails", "django", "flask", "fastapi", "spring", "go", "rust", "php"]
27-
27+
2828
validation {
2929
condition = alltrue([
30-
for framework in var.enabled_frameworks :
30+
for framework in var.enabled_frameworks :
3131
contains(["nodejs", "rails", "django", "flask", "fastapi", "spring", "go", "rust", "php"], framework)
3232
])
3333
error_message = "Invalid framework. Allowed values: nodejs, rails, django, flask, fastapi, spring, go, rust, php"
@@ -44,7 +44,7 @@ variable "log_level" {
4444
description = "Log level for auto-dev-server. Options: DEBUG, INFO, WARN, ERROR"
4545
type = string
4646
default = "INFO"
47-
47+
4848
validation {
4949
condition = contains(["DEBUG", "INFO", "WARN", "ERROR"], var.log_level)
5050
error_message = "Log level must be one of: DEBUG, INFO, WARN, ERROR"
@@ -66,50 +66,63 @@ variable "custom_commands" {
6666
locals {
6767
# Default commands for each framework
6868
default_commands = {
69-
nodejs = "npm start"
70-
rails = "rails server"
71-
django = "python manage.py runserver 0.0.0.0:8000"
72-
flask = "flask run --host=0.0.0.0"
73-
fastapi = "uvicorn main:app --host 0.0.0.0 --port 8000"
74-
spring = "./mvnw spring-boot:run"
75-
go = "go run ."
76-
rust = "cargo run"
77-
php = "php -S 0.0.0.0:8000"
69+
nodejs = "npm start"
70+
rails = "rails server"
71+
django = "python manage.py runserver 0.0.0.0:8000"
72+
flask = "flask run --host=0.0.0.0"
73+
fastapi = "uvicorn main:app --host 0.0.0.0 --port 8000"
74+
spring = "./mvnw spring-boot:run"
75+
go = "go run ."
76+
rust = "cargo run"
77+
php = "php -S 0.0.0.0:8000"
7878
}
79-
79+
8080
# Merge custom commands with defaults
8181
framework_commands = merge(local.default_commands, var.custom_commands)
82-
82+
8383
# Detection patterns for each framework
8484
detection_patterns = {
85-
nodejs = "package.json"
86-
rails = "Gemfile|config.ru|app/controllers"
87-
django = "manage.py|settings.py"
88-
flask = "app.py|application.py|wsgi.py"
89-
fastapi = "main.py|app.py"
90-
spring = "pom.xml|build.gradle|src/main/java"
91-
go = "go.mod|main.go"
92-
rust = "Cargo.toml|src/main.rs"
93-
php = "index.php|composer.json"
85+
nodejs = "package.json"
86+
rails = "Gemfile|config.ru|app/controllers"
87+
django = "manage.py|settings.py"
88+
flask = "app.py|application.py|wsgi.py"
89+
fastapi = "main.py|app.py"
90+
spring = "pom.xml|build.gradle|src/main/java"
91+
go = "go.mod|main.go"
92+
rust = "Cargo.toml|src/main.rs"
93+
php = "index.php|composer.json"
9494
}
9595
}
9696

9797
resource "coder_script" "auto_dev_server" {
98-
agent_id = var.agent_id
99-
display_name = "Auto Development Server"
100-
icon = "/icon/play.svg"
101-
script = templatefile("${path.module}/scripts/auto-dev-server.sh", {
102-
project_dir = var.project_dir
103-
enabled_frameworks = jsonencode(var.enabled_frameworks)
104-
framework_commands = jsonencode(local.framework_commands)
105-
detection_patterns = jsonencode(local.detection_patterns)
106-
start_delay = var.start_delay
107-
log_level = var.log_level
108-
use_devcontainer = var.use_devcontainer
109-
})
110-
run_on_start = true
111-
run_on_stop = false
112-
timeout = 300
98+
agent_id = var.agent_id
99+
display_name = "Auto Development Server"
100+
icon = "/icon/play.svg"
101+
script = replace(
102+
replace(
103+
replace(
104+
replace(
105+
replace(
106+
replace(
107+
replace(
108+
file("${path.module}/scripts/auto-dev-server.sh"),
109+
"PROJECT_DIR_PLACEHOLDER", var.project_dir
110+
),
111+
"ENABLED_FRAMEWORKS_PLACEHOLDER", jsonencode(var.enabled_frameworks)
112+
),
113+
"FRAMEWORK_COMMANDS_PLACEHOLDER", jsonencode(local.framework_commands)
114+
),
115+
"DETECTION_PATTERNS_PLACEHOLDER", jsonencode(local.detection_patterns)
116+
),
117+
"START_DELAY_PLACEHOLDER", tostring(var.start_delay)
118+
),
119+
"LOG_LEVEL_PLACEHOLDER", var.log_level
120+
),
121+
"USE_DEVCONTAINER_PLACEHOLDER", tostring(var.use_devcontainer)
122+
)
123+
run_on_start = true
124+
run_on_stop = false
125+
timeout = 300
113126
}
114127

115128
# Output useful information

registry/toti85/modules/auto-dev-server/scripts/auto-dev-server.sh

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
set -euo pipefail
77

88
# Configuration from Terraform variables
9-
PROJECT_DIR="${project_dir}"
10-
ENABLED_FRAMEWORKS='${enabled_frameworks}'
11-
FRAMEWORK_COMMANDS='${framework_commands}'
12-
DETECTION_PATTERNS='${detection_patterns}'
13-
START_DELAY=${start_delay}
14-
LOG_LEVEL="${log_level}"
15-
USE_DEVCONTAINER=${use_devcontainer}
9+
PROJECT_DIR="PROJECT_DIR_PLACEHOLDER"
10+
ENABLED_FRAMEWORKS='ENABLED_FRAMEWORKS_PLACEHOLDER'
11+
FRAMEWORK_COMMANDS='FRAMEWORK_COMMANDS_PLACEHOLDER'
12+
DETECTION_PATTERNS='DETECTION_PATTERNS_PLACEHOLDER'
13+
START_DELAY=START_DELAY_PLACEHOLDER
14+
LOG_LEVEL="LOG_LEVEL_PLACEHOLDER"
15+
USE_DEVCONTAINER=USE_DEVCONTAINER_PLACEHOLDER
1616

1717
# Expand variables like $HOME
1818
PROJECT_DIR=$(eval echo "$PROJECT_DIR")

0 commit comments

Comments
 (0)