mirror of
https://github.com/Ascyii/scripts.git
synced 2026-01-01 04:44:24 -05:00
Init
This commit is contained in:
49
shell/cabalmod.sh
Executable file
49
shell/cabalmod.sh
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Check if filename argument is provided
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: $0 <filename>"
|
||||
exit 1
|
||||
fi
|
||||
# Get the current directory
|
||||
current_dir=$(pwd)
|
||||
# Find the nearest Cabal file
|
||||
cabal_file=$(find . -maxdepth 1 -type f -name "*.cabal" | head -n 1)
|
||||
if [ -z "$cabal_file" ]; then
|
||||
echo "Error: No Cabal file found in the current directory."
|
||||
exit 1
|
||||
fi
|
||||
# Extract module name from the provided filename
|
||||
module_name=$(basename "$1" .hs)
|
||||
|
||||
# Check if required variables are set
|
||||
if [ -z "$cabal_file" ] || [ -z "$module_name" ]; then
|
||||
echo "Error: cabal_file and module_name variables are not set."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Find the line with "other-modules:"
|
||||
other_modules_line=$(rg -e 'other-modules:' "$cabal_file")
|
||||
line_number=$(rg -n -e 'other-modules:' "$cabal_file" | cut -d: -f1)
|
||||
|
||||
if [[ -z "$other_modules_line" ]]; then
|
||||
echo "other-modules: not found in $cabal_file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if the line is commented
|
||||
if [[ $other_modules_line == " -- "* ]]; then
|
||||
# Remove the comment "-- "
|
||||
sed -i "${line_number}s/ -- other-modules:/ other-modules:/" "$cabal_file"
|
||||
fi
|
||||
|
||||
# Append module_name with comma
|
||||
sed -i "s/ other-modules:/ other-modules: $module_name,/" "$cabal_file"
|
||||
# Create the .hs file in the app directory
|
||||
hs_file="./app/$1.hs"
|
||||
touch "$hs_file"
|
||||
# Add boilerplate code to the .hs file
|
||||
echo "module $module_name where" >"$hs_file"
|
||||
echo "" >>"$hs_file"
|
||||
# Open the file with neovim
|
||||
nvim "$hs_file"
|
||||
Reference in New Issue
Block a user