* development: (21 commits) ... chore: Add FsListArg struct and update imports refactor: Rename module and import path refactor: Use snake_case for object names and constants fix: fix conflicts refactor: Improve struct decoding and skip logic .. ... ... ... ... feat: Enhance params parsing and encoding ... test: Add tests for struct encoding and decoding feat: improve build and serialization logic refactor: Improve code structure and logging feat: Improve herolib installation logic in CI refactor: Improve herolib installation script fix: Rename freeflowuniverse to incubaid added fedora for the package install during hero execution ... # Conflicts: # install_herolib.vsh
99 lines
2.7 KiB
GLSL
Executable File
99 lines
2.7 KiB
GLSL
Executable File
#!/usr/bin/env -S v -n -w -gc none -cc tcc -d use_openssl -enable-globals run
|
|
|
|
import os
|
|
|
|
fn addtoscript(tofind string, toadd string) ! {
|
|
home_dir := os.home_dir()
|
|
mut rc_file := '${home_dir}/.zprofile'
|
|
if !os.exists(rc_file) {
|
|
rc_file = '${home_dir}/.bashrc'
|
|
if !os.exists(rc_file) {
|
|
return error('No .zprofile or .bashrc found in home directory')
|
|
}
|
|
}
|
|
|
|
// Read current content
|
|
mut content := os.read_file(rc_file)!
|
|
|
|
// Remove existing alias if present
|
|
lines := content.split('\n')
|
|
mut new_lines := []string{}
|
|
mut prev_is_emtpy := false
|
|
for line in lines {
|
|
if prev_is_emtpy {
|
|
if line.trim_space() == '' {
|
|
continue
|
|
} else {
|
|
prev_is_emtpy = false
|
|
}
|
|
}
|
|
if line.trim_space() == '' {
|
|
prev_is_emtpy = true
|
|
}
|
|
|
|
if !line.contains(tofind) {
|
|
new_lines << line
|
|
}
|
|
}
|
|
new_lines << toadd
|
|
new_lines << ''
|
|
// Write back to file
|
|
new_content := new_lines.join('\n')
|
|
os.write_file(rc_file, new_content)!
|
|
}
|
|
|
|
// Reset symlinks (cleanup)
|
|
println('Resetting all symlinks...')
|
|
os.rm('${os.home_dir()}/.vmodules/incubaid/herolib') or {}
|
|
os.rm('${os.home_dir()}/.vmodules/freeflowuniverse/herolib') or {}
|
|
|
|
// Create necessary directories
|
|
os.mkdir_all('${os.home_dir()}/.vmodules/incubaid') or {
|
|
panic('Failed to create directory ~/.vmodules/incubaid: ${err}')
|
|
}
|
|
|
|
// Create new symlinks
|
|
abs_dir_of_script := os.dir(@FILE)
|
|
symlink_target := '${abs_dir_of_script}/lib'
|
|
symlink_path := '${os.home_dir()}/.vmodules/incubaid/herolib'
|
|
|
|
os.symlink(symlink_target, symlink_path) or { panic('Failed to create herolib symlink: ${err}') }
|
|
|
|
// Verify the symlink was created
|
|
// Note: os.exists() may return false for broken symlinks, so we check if it's a link first
|
|
if os.is_link(symlink_path) {
|
|
println('✓ Symlink created successfully: ${symlink_path}')
|
|
println('✓ Points to: ${symlink_target}')
|
|
// Verify the target exists
|
|
if os.exists(symlink_target) {
|
|
println('✓ Target directory exists and is accessible')
|
|
} else {
|
|
eprintln('⚠ Warning: Symlink target does not exist: ${symlink_target}')
|
|
}
|
|
} else {
|
|
panic('Failed to create herolib symlink at ${symlink_path}')
|
|
}
|
|
|
|
println('Herolib installation completed successfully!')
|
|
|
|
// Add vtest alias
|
|
addtoscript('alias vtest=', "alias vtest='v -stats -enable-globals -show-c-output -n -w -cg -gc none -cc tcc test' ") or {
|
|
eprintln('Failed to add vtest alias: ${err}')
|
|
exit(1)
|
|
}
|
|
|
|
// Add vrun alias
|
|
addtoscript('alias vrun=', "alias vrun='v -stats -enable-globals -show-c-output -n -w -cg -gc none -cc tcc run' ") or {
|
|
eprintln('Failed to add vrun alias: ${err}')
|
|
exit(1)
|
|
}
|
|
|
|
addtoscript('HOME/hero/bin', 'export PATH="\$PATH:\$HOME/hero/bin"') or {
|
|
eprintln('Failed to add path to hero, ${err}')
|
|
exit(1)
|
|
}
|
|
|
|
// ulimit -n 32000
|
|
|
|
println('Added vtest alias to shell configuration')
|