From 2ff9744f17540a3be99da4427684b5dfdda25bb5 Mon Sep 17 00:00:00 2001 From: Taylor Bockman Date: Thu, 23 Mar 2023 22:42:18 -0700 Subject: [PATCH] Update ocaml --- dotfiles/zsh/scripts/cgen.sh | 109 +++++++++++++++++++++ .../zsh/scripts/cgen_etc/clang_format_template | 16 +++ dotfiles/zsh/scripts/cgen_etc/gitignore_template | 97 ++++++++++++++++++ dotfiles/zsh/zshrc | 26 +++-- 4 files changed, 238 insertions(+), 10 deletions(-) create mode 100755 dotfiles/zsh/scripts/cgen.sh create mode 100644 dotfiles/zsh/scripts/cgen_etc/clang_format_template create mode 100644 dotfiles/zsh/scripts/cgen_etc/gitignore_template diff --git a/dotfiles/zsh/scripts/cgen.sh b/dotfiles/zsh/scripts/cgen.sh new file mode 100755 index 0000000..a10f999 --- /dev/null +++ b/dotfiles/zsh/scripts/cgen.sh @@ -0,0 +1,109 @@ +#! /usr/bin/env bash + +name=$1 +cmake_version=$2 +c_standard=$3 + +# Finds the directory of this script +if [[ "$OS_TYPE" == "linux-gnu" ]]; then + script_dir=$(cd "$( dirname "`readlink -f ${BASH_SOURCE[0]}`")" && pwd) +else + script_dir=$(cd "$( dirname "`greadlink -f ${BASH_SOURCE[0]}`")" && pwd) +fi + +if [ -z $name ] +then + echo "Name must be specified" + echo "" + echo "./cgen.sh [cmake version] [C Standard]" + exit -1 +fi + +if [ -z $cmake_version ] +then + echo "No CMake version supplied...defaulting to 3.15" + cmake_version="3.15" +fi + +if [ -z $c_standard ] +then + echo "No C Standard supplied...defaulting to 11" + c_standard="11" +fi + +mkdir $name +mkdir $name/src +mkdir $name/include + +cmake_config=$name/CMakeLists.txt + +touch $cmake_config + +echo "cmake_minimum_required(VERSION $cmake_version)" >> $cmake_config +echo "project($name)" >> $cmake_config +echo "" >> $cmake_config +echo "set (CMAKE_C_STANDARD $c_standard)" >> $cmake_config +echo "" >> $cmake_config +echo "# Output to bin and lib" >> $cmake_config +echo "set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY \${CMAKE_BINARY_DIR}/lib)" >> $cmake_config +echo "set(CMAKE_LIBRARY_OUTPUT_DIRECTORY \${CMAKE_BINARY_DIR}/lib)" >> $cmake_config +echo "set(CMAKE_RUNTIME_OUTPUT_DIRECTORY \${CMAKE_BINARY_DIR}/bin)" >> $cmake_config +echo "" >> $cmake_config +echo "" >> $cmake_config +echo "# The following lines enable compile_commands.json and dump it in the root of the project" >> $cmake_config +echo "# This is needed for clangd and lsp to work" >> $cmake_config +echo "" >> $cmake_config +echo "set(CMAKE_EXPORT_COMPILE_COMMANDS ON)" >> $cmake_config +echo "" >> $cmake_config +echo "if(EXISTS \"\${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json\")" >> $cmake_config +echo " execute_process(COMMAND \${CMAKE_COMMAND} -E copy_if_different" >> $cmake_config +echo " \${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json" >> $cmake_config +echo " \${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json" >> $cmake_config +echo " )" >> $cmake_config +echo "endif()" >> $cmake_config +echo "#-------- END COMPILE_COMMANDS.JSON SECTION --------#" >> $cmake_config +echo "" >> $cmake_config +echo "" >> $cmake_config +echo "file(GLOB SOURCE \${PROJECT_SOURCE_DIR}/src/*.c)" >> $cmake_config +echo "file(GLOB INCLUDE \${PROJECT_SOURCE_DIR}/include/*.h)" >> $cmake_config +echo "" >> $cmake_config +echo "" >> $cmake_config +echo "include_directories(\${PROJECT_SOURCE_DIR}/include)" >> $cmake_config +echo "" >> $cmake_config +echo "" >> $cmake_config +echo "# Controls debug printing based on the compiled binary mode - check with #ifdef DEBUG_BUILD" >> $cmake_config +echo "IF(CMAKE_BUILD_TYPE MATCHES DEBUG)" >> $cmake_config +echo "message(\"-- Configuring debug build...\")" >> $cmake_config +echo "add_compile_definitions(DEBUG_BUILD)" >> $cmake_config +echo "ENDIF(CMAKE_BUILD_TYPE MATCHES DEBUG)" >> $cmake_config +echo "" >> $cmake_config +echo "add_executable(\${PROJECT_NAME} \${SOURCE} \${INCLUDE})" >> $cmake_config + + +echo "Copying .clang-format..." +cp $script_dir/cgen_etc/clang_format_template $name/.clang-format + +echo "Copying .gitignore..." +cp $script_dir/cgen_etc/gitignore_template $name/.gitignore + +sample_file=$name/src/main.c + +echo "#include " >> $sample_file +echo "" >> $sample_file +echo "" >> $sample_file +echo "int main(int argc, char **argv)" >> $sample_file +echo "{" >> $sample_file +echo " printf(\"Hello, world!\\n\");" >> $sample_file +echo " return 0;" >> $sample_file +echo "}" >> $sample_file +echo "" >> $sample_file + +git --version 2>&1 >/dev/null +GIT_IS_AVAILABLE=$? + +if [ $GIT_IS_AVAILABLE -eq 0 ] +then + git init $name +fi + +echo "Created project $name." diff --git a/dotfiles/zsh/scripts/cgen_etc/clang_format_template b/dotfiles/zsh/scripts/cgen_etc/clang_format_template new file mode 100644 index 0000000..db8218d --- /dev/null +++ b/dotfiles/zsh/scripts/cgen_etc/clang_format_template @@ -0,0 +1,16 @@ +AlignAfterOpenBracket: Align +AlignConsecutiveMacros: 'true' +AlignConsecutiveAssignments: 'true' +AlignConsecutiveDeclarations: 'true' +AlignTrailingComments: 'true' +BreakBeforeBraces: Allman +IndentCaseLabels: 'true' +IndentWidth: '4' +Language: Cpp +PointerAlignment: Right +SortIncludes: 'true' +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: 'true' +SpaceInEmptyParentheses: 'false' +UseTab: Never +ColumnLimit: 80 \ No newline at end of file diff --git a/dotfiles/zsh/scripts/cgen_etc/gitignore_template b/dotfiles/zsh/scripts/cgen_etc/gitignore_template new file mode 100644 index 0000000..300d9c4 --- /dev/null +++ b/dotfiles/zsh/scripts/cgen_etc/gitignore_template @@ -0,0 +1,97 @@ +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + +# VSCode + +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Vim + +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +*~ +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +# CMake + +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps diff --git a/dotfiles/zsh/zshrc b/dotfiles/zsh/zshrc index a9719aa..0ef5b1c 100644 --- a/dotfiles/zsh/zshrc +++ b/dotfiles/zsh/zshrc @@ -44,18 +44,13 @@ if [[ -x go ]]; then mkdir -p $HOME/.go fi -test -r /home/vm/.opam/opam-init/init.sh && . /home/vm/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true - -if [ -f "$HOME/.cargo/env" ]; then - . "$HOME/.cargo/env" -fi # Install zsh completion in ~/.zsh if it doesn't exist if [[ ! -d $HOME/.zsh ]]; then echo "Installing zsh git completion scripts" mkdir -p $HOME/.zsh pushd - + cd $HOME/.zsh curl -o git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash @@ -68,18 +63,18 @@ autoload -U is-at-least # Install zsh-syntax-highlighting if it doesn't exist if is-at-least 4.3.11; then - if [[ ! -d $HOME/.zsh/zsh-syntax-highlighting ]]; then + if [[ ! -d $HOME/.zsh/zsh-syntax-highlighting ]]; then echo "Installing zsh syntax highlighting" pushd - + cd $HOME/.zsh - git clone https://github.com/zsh-users/zsh-syntax-highlighting.git + git clone https://github.com/zsh-users/zsh-syntax-highlighting.git popd fi else echo "ZSH syntax highlighting requires ZSH >= 4.3.11 (current: $ZSH_VERSION)." -fi +fi zstyle ':completion:*:*:git:*' script $HOME/.zsh/git-completion.bash fpath=(~/.zsh $fpath) @@ -99,3 +94,14 @@ source $HOME/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh # Created by `userpath` on 2022-09-05 23:32:41 export PATH="$PATH:$HOME/.local/bin" + +# ghcup config - Haskell +[ -f "/home/taylor/.ghcup/env" ] && source "/home/taylor/.ghcup/env" # ghcup-env + +# Ocaml +test -r $HOME/.opam/opam-init/init.sh && . $HOME/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true + +# Rust +if [ -f "$HOME/.cargo/env" ]; then + . "$HOME/.cargo/env" +fi