Skip to content

Commit ab1b484

Browse files
committed
Restructure
1 parent fff74de commit ab1b484

22 files changed

Lines changed: 240 additions & 316 deletions

File tree

bin/dot

Lines changed: 138 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -88,47 +88,36 @@ get_system_dir() {
8888
echo "$DOT_HOME/$installed_system"
8989
}
9090

91-
# Resolve module name (handles numeric prefixes like 00-, 01-)
92-
resolve_module_path() {
91+
# Resolve script name (handles numeric prefixes like 01-50-mise)
92+
resolve_script_name() {
9393
local module="$1"
94+
local command="$2"
9495
local system_dir="$(get_system_dir)"
95-
96-
# First, try the module as-is
97-
if [[ -d "$system_dir/$module" ]]; then
96+
local command_dir="$system_dir/$command"
97+
98+
# First, try the module name as-is
99+
if [[ -f "$command_dir/$module" && -x "$command_dir/$module" ]]; then
98100
echo "$module"
99101
return 0
100102
fi
101-
102-
# If module contains /, handle each part
103-
if [[ "$module" == */* ]]; then
104-
local parent="${module%/*}"
105-
local child="${module##*/}"
106-
107-
# Try with numeric prefix on child
108-
for prefix in {00..99}; do
109-
if [[ -d "$system_dir/$parent/${prefix}-${child}" ]]; then
110-
echo "$parent/${prefix}-${child}"
111-
return 0
112-
fi
113-
done
114-
115-
# Try with numeric prefix on parent
116-
for prefix in {00..99}; do
117-
if [[ -d "$system_dir/${prefix}-${parent}/$child" ]]; then
118-
echo "${prefix}-${parent}/$child"
119-
return 0
120-
fi
121-
done
122-
else
123-
# Try with numeric prefixes for top-level modules
124-
for prefix in {00..99}; do
125-
if [[ -d "$system_dir/${prefix}-${module}" ]]; then
126-
echo "${prefix}-${module}"
127-
return 0
128-
fi
129-
done
103+
104+
# Try to find a script that ends with the module name (e.g., "mise" -> "01-50-mise")
105+
local found_script=""
106+
for script in "$command_dir"/*; do
107+
[[ ! -f "$script" || ! -x "$script" ]] && continue
108+
local script_name=$(basename "$script")
109+
# Check if script ends with -$module
110+
if [[ "$script_name" == *-"$module" ]]; then
111+
found_script="$script_name"
112+
break
113+
fi
114+
done
115+
116+
if [[ -n "$found_script" ]]; then
117+
echo "$found_script"
118+
return 0
130119
fi
131-
120+
132121
# Return original if no match found
133122
echo "$module"
134123
return 1
@@ -151,7 +140,7 @@ check_system_for_list() {
151140
get_available_modules() {
152141
local command="$1"
153142
local modules=()
154-
143+
155144
# Get the installed system type
156145
local installed_system
157146
if [[ -n "${INSTALLATION:-}" ]]; then
@@ -160,21 +149,19 @@ get_available_modules() {
160149
installed_system=$(head -n1 "$INSTALLATION_MARKER")
161150
fi
162151
local system_dir="$DOT_HOME/$installed_system"
163-
164-
# Check if system directory exists
165-
if [[ ! -d "$system_dir" ]]; then
152+
local command_dir="$system_dir/$command"
153+
154+
# Check if command directory exists
155+
if [[ ! -d "$command_dir" ]]; then
166156
return
167157
fi
168-
169-
# Find all modules with the given command script
158+
159+
# Find all executable files in the command directory
170160
# Use -perm for BSD find compatibility (macOS)
171161
while IFS= read -r -d '' script; do
172-
local module_path=$(dirname "$script")
173-
# Get the full relative path from system_dir
174-
local module_name="${module_path#$system_dir/}"
175-
176-
modules+=("$module_name")
177-
done < <(find "$system_dir" -name "$command" -type f -perm +111 -print0 2>/dev/null)
162+
local script_name=$(basename "$script")
163+
modules+=("$script_name")
164+
done < <(find "$command_dir" -maxdepth 1 -type f -perm +111 -print0 2>/dev/null)
178165

179166
# Handle empty array to avoid unbound variable error
180167
if [[ ${#modules[@]} -gt 0 ]]; then
@@ -185,138 +172,204 @@ get_available_modules() {
185172
# Run install command
186173
cmd_install() {
187174
local module="${1:-all}"
188-
175+
189176
# Handle --list option
190177
if [[ "$module" == "--list" ]]; then
191178
check_system_for_list
192179
echo "Available modules for install:"
193180
get_available_modules "install"
194181
return 0
195182
fi
196-
183+
197184
check_system_setup
198185
init_logging "install"
199-
186+
200187
log_header "Installing: $module"
201-
188+
189+
# Export common variables for scripts
190+
export DOT_HOME="$DOT_HOME"
191+
export SYSTEM_DIR="$(get_system_dir)"
192+
export SHARED_DIR="$DOT_HOME/shared"
193+
202194
if [[ "$module" == "all" ]]; then
203195
log_info "Installing all modules"
204-
196+
205197
# Get all available install scripts
206198
local available_modules=()
207199
while IFS= read -r line; do
208200
[[ -n "$line" ]] && available_modules+=("$line")
209201
done < <(get_available_modules "install")
210202

211-
for mod in "${available_modules[@]}"; do
212-
log_step "Running install for module: $mod"
213-
"$(get_system_dir)/$mod/install"
203+
for script_name in "${available_modules[@]}"; do
204+
# Extract module name from script filename (e.g., "01-50-mise" -> "mise")
205+
export MODULE_NAME="$(basename "$script_name" | sed 's/^[0-9]*-[0-9]*-//')"
206+
207+
init_module_logging "$MODULE_NAME"
208+
if "$SYSTEM_DIR/install/$script_name"; then
209+
finalize_module_logging "success"
210+
else
211+
finalize_module_logging "failed"
212+
exit 1
213+
fi
214214
done
215215
else
216216
# Install specific module
217-
local resolved_module=$(resolve_module_path "$module")
218-
if [[ -x "$(get_system_dir)/$resolved_module/install" ]]; then
219-
"$(get_system_dir)/$resolved_module/install"
217+
local script_name=$(resolve_script_name "$module" "install")
218+
if [[ -x "$SYSTEM_DIR/install/$script_name" ]]; then
219+
# Extract module name from script filename
220+
export MODULE_NAME="$(basename "$script_name" | sed 's/^[0-9]*-[0-9]*-//')"
221+
222+
init_module_logging "$MODULE_NAME"
223+
if "$SYSTEM_DIR/install/$script_name"; then
224+
finalize_module_logging "success"
225+
else
226+
finalize_module_logging "failed"
227+
exit 1
228+
fi
220229
else
221230
log_error "Module $module does not have an install script"
222231
exit 1
223232
fi
224233
fi
225-
234+
226235
finalize_logging "success"
227236
}
228237

229238
# Run build command
230239
cmd_build() {
231240
local module="${1:-all}"
232-
241+
233242
# Handle --list option
234243
if [[ "$module" == "--list" ]]; then
235244
check_system_for_list
236245
echo "Available modules for build:"
237246
get_available_modules "build"
238247
return 0
239248
fi
240-
249+
241250
check_system_setup
242251
init_logging "build"
243-
252+
244253
log_header "Building: $module"
245-
254+
255+
# Export common variables for scripts
256+
export DOT_HOME="$DOT_HOME"
257+
export SYSTEM_DIR="$(get_system_dir)"
258+
export SHARED_DIR="$DOT_HOME/shared"
259+
246260
if [[ "$module" == "all" ]]; then
247261
log_info "Building all modules"
248-
262+
249263
# Get all available build scripts
250264
local available_modules=()
251265
while IFS= read -r line; do
252266
[[ -n "$line" ]] && available_modules+=("$line")
253267
done < <(get_available_modules "build")
254268

255-
for mod in "${available_modules[@]}"; do
256-
log_step "Running build for module: $mod"
257-
"$(get_system_dir)/$mod/build"
269+
for script_name in "${available_modules[@]}"; do
270+
# Extract module name from script filename (e.g., "03-00-git" -> "git")
271+
export MODULE_NAME="$(basename "$script_name" | sed 's/^[0-9]*-[0-9]*-//')"
272+
273+
init_module_logging "$MODULE_NAME"
274+
if "$SYSTEM_DIR/build/$script_name"; then
275+
finalize_module_logging "success"
276+
else
277+
finalize_module_logging "failed"
278+
exit 1
279+
fi
258280
done
259281
else
260282
# Build specific module
261-
local resolved_module=$(resolve_module_path "$module")
262-
if [[ -x "$(get_system_dir)/$resolved_module/build" ]]; then
263-
"$(get_system_dir)/$resolved_module/build"
283+
local script_name=$(resolve_script_name "$module" "build")
284+
if [[ -x "$SYSTEM_DIR/build/$script_name" ]]; then
285+
# Extract module name from script filename
286+
export MODULE_NAME="$(basename "$script_name" | sed 's/^[0-9]*-[0-9]*-//')"
287+
288+
init_module_logging "$MODULE_NAME"
289+
if "$SYSTEM_DIR/build/$script_name"; then
290+
finalize_module_logging "success"
291+
else
292+
finalize_module_logging "failed"
293+
exit 1
294+
fi
264295
else
265296
log_error "Module $module does not have a build script"
266297
exit 1
267298
fi
268299
fi
269-
300+
270301
finalize_logging "success"
271302
}
272303

273304
# Run upgrade command
274305
cmd_upgrade() {
275306
local module="${1:-all}"
276-
307+
277308
# Handle --list option
278309
if [[ "$module" == "--list" ]]; then
279310
check_system_for_list
280311
echo "Available modules for upgrade:"
281312
get_available_modules "upgrade"
282313
return 0
283314
fi
284-
315+
285316
check_system_setup
286317
init_logging "upgrade"
287-
318+
288319
log_header "Upgrading: $module"
289-
320+
321+
# Export common variables for scripts
322+
export DOT_HOME="$DOT_HOME"
323+
export SYSTEM_DIR="$(get_system_dir)"
324+
export SHARED_DIR="$DOT_HOME/shared"
325+
290326
if [[ "$module" == "all" ]]; then
291327
log_info "Upgrading all modules"
292-
328+
293329
# Get all available upgrade scripts
294330
local available_modules=()
295331
while IFS= read -r line; do
296332
[[ -n "$line" ]] && available_modules+=("$line")
297333
done < <(get_available_modules "upgrade")
298-
334+
299335
if [[ ${#available_modules[@]} -eq 0 ]]; then
300336
log_info "No modules have upgrade scripts"
301337
finalize_logging "success"
302338
return
303339
fi
304-
305-
for mod in "${available_modules[@]}"; do
306-
log_step "Running upgrade for module: $mod"
307-
"$(get_system_dir)/$mod/upgrade"
340+
341+
for script_name in "${available_modules[@]}"; do
342+
# Extract module name from script filename
343+
export MODULE_NAME="$(basename "$script_name" | sed 's/^[0-9]*-[0-9]*-//')"
344+
345+
init_module_logging "$MODULE_NAME"
346+
if "$SYSTEM_DIR/upgrade/$script_name"; then
347+
finalize_module_logging "success"
348+
else
349+
finalize_module_logging "failed"
350+
exit 1
351+
fi
308352
done
309353
else
310354
# Upgrade specific module
311-
local resolved_module=$(resolve_module_path "$module")
312-
if [[ -x "$(get_system_dir)/$resolved_module/upgrade" ]]; then
313-
"$(get_system_dir)/$resolved_module/upgrade"
355+
local script_name=$(resolve_script_name "$module" "upgrade")
356+
if [[ -x "$SYSTEM_DIR/upgrade/$script_name" ]]; then
357+
# Extract module name from script filename
358+
export MODULE_NAME="$(basename "$script_name" | sed 's/^[0-9]*-[0-9]*-//')"
359+
360+
init_module_logging "$MODULE_NAME"
361+
if "$SYSTEM_DIR/upgrade/$script_name"; then
362+
finalize_module_logging "success"
363+
else
364+
finalize_module_logging "failed"
365+
exit 1
366+
fi
314367
else
315368
log_error "Module $module does not have an upgrade script"
316369
exit 1
317370
fi
318371
fi
319-
372+
320373
finalize_logging "success"
321374
}
322375

macos/00-mise/deps/ruby/install

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)