-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreate.sh
64 lines (52 loc) · 1.64 KB
/
create.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/bash
# Define project structure
PROJECT_DIR="./"
MODULES_DIR="$PROJECT_DIR/modules"
mkdir -p "$MODULES_DIR"
# Function to create a Lua module
create_module() {
local module_name=$1
local routes=$2
cat <<EOL > "$MODULES_DIR/$module_name.lua"
-- TurboLua module: $module_name
-- Generated API handlers for $module_name
local turbo = require("turbo")
local $module_name = class("$module_name", turbo.web.Application)
-- API route handlers
$routes
return $module_name
EOL
}
# Parse spec.txt to generate modules
parse_spec() {
local spec_file="spec.txt"
local current_module=""
local routes=""
while IFS= read -r line; do
# Detect section headers (modules)
if [[ $line =~ ^// ]]; then
if [[ -n $current_module ]]; then
create_module "$current_module" "$routes"
fi
current_module=$(echo "$line" | sed 's|// ||g' | tr ' ' '_')
routes=""
elif [[ $line =~ ^(GET|POST|PUT|DELETE) ]]; then
# Parse routes
local method=$(echo "$line" | cut -d'/' -f1 | tr -d ' ')
local route=$(echo "$line" | cut -d'/' -f2- | tr -d ' ')
local handler_name=$(echo "$route" | tr '/{}?' '_' | sed 's|_\{2,\}|_|g' | sed 's|_$||')
routes+="-- $method /$route
function $handler_name(self)
self:write({ message = \"Handler for $method /$route\" })
end
"
fi
done < "$spec_file"
# Final module creation
if [[ -n $current_module ]]; then
create_module "$current_module" "$routes"
fi
}
# Main execution
parse_spec
echo "TurboLua project setup complete. Modules are located in $MODULES_DIR."