From f5d56602df70950de6b7d40966b00c9939c81763 Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Sun, 26 Jan 2020 17:16:07 +0100 Subject: Intial commit of v2 See https://drewdevault.com/2019/12/30/dotfiles.html --- bin/mesoninit | 191 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100755 bin/mesoninit (limited to 'bin/mesoninit') diff --git a/bin/mesoninit b/bin/mesoninit new file mode 100755 index 0000000..5ce3b79 --- /dev/null +++ b/bin/mesoninit @@ -0,0 +1,191 @@ +#!/bin/bash +# vim: ft=sh + +_meson_dir=`pwd` +_meson_lang=c + +while getopts ":hl:" o; do + case $o in + l) + _meson_lang=$OPTARG + ;; + h | *) + echo "usage: $0 [flags]" + echo "" + echo "-h :: print help" + echo "-l LANG (default: c) :: language to use" + echo "" + exit 0 + ;; + esac +done +shift $((OPTIND - 1)) + +log() { + echo "[*] ${@}" >&2 +} + +# allow setting target dir +if [[ -n $1 ]]; then + _meson_dir="$1" + [[ ! -d $_meson_dir ]] && mkdir -p $_meson_dir + log "creating in $_meson_dir" +fi + +_meson_bin=`basename $_meson_dir` +_meson_ignore_extra= +declare -a _meson_default_options +declare -a _meson_default_files + +case $_meson_lang in + + ### C ### + c) + _meson_default_options=( \ + 'c_std=c11' \ + 'warning_level=2' \ + 'werror=true' \ + ) + _meson_default_files=('src/main.c') + _meson_ignore_extra='**/*.o' + _meson_output=" +x = executable( + '$_meson_bin', + sources: src +)" + + log "writing main.c" + mkdir $_meson_dir/src + cat > $_meson_dir/src/main.c < +#include + +int main(int argc, char **argv) { + printf("%s version %s\n\n", *argv, VERSION); + + printf("args (len: %d)", argc-1); + for (int i=1; i < argc; ++i) { + printf(" '%s'", argv[i]); + } + printf("\n"); + return 0; +} +EOF + ;; + + ### JAVA ### + java) + _meson_default_options= + _meson_default_files=('pkg/Main.class') + _meson_ignore_extra='**/*.jar' + _meson_output=" +x = jar( + '$_meson_bin', + main_class: 'pkg.Main', + sources: src +) +" + + log "writing Main.java" + mkdir $_meson_dir/pkg + cat > $_meson_dir/pkg/Main.java < $_meson_dir/meson.build < $_meson_dir/.gitignore < $_meson_dir/Makefile <