#!/usr/bin/env bash # Convenience script to create a C/C++ NeteBeans project. # Copyright (C) 26.5.2025 Benny Lyons benny.lyons@gmx.net # # nb_create.sh is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along with # this program; if not, see . # # Default settings # # Default Git repository containing Makefile, NetBeans project file, ... # Override this using -r my_repo.git; or reset this DEFAULT_REPO="/home/benn/share/home/repo/netbeans_proj/netbeans_generic.git" this_script=$(basename -- $0) USE_PROGRAMME=git help() { cat < The name of the file that contains the main function default: name of the project -p [--project] Provide a name of the project instead of the default default: name of the current directory -r [--repo] The Git repo containing the NetBeans generic C/C++ project Default: /home/benn/share/home/repo/netbeans_proj/netbeans_generic.git Licence: $this_script Copyright (C) 2025 Benny Lyons. GNU GPL2 or later; see LICENCE distributed with this file for more details. EOF } if_no_dir_then_exit() { exist_dir=$1 message=$2 if [ ! -d $exist_dir ]; then echo "ERROR: Can't find: "$exist_dir echo " $message" exit 1 fi } if_no_file_then_exit() { exist_file=$1 message=$2 if [ ! -f $exist_file ]; then echo "ERROR: Can't find: "$exist_file echo " $message" exit 1 fi } main() { OPT_DEBUG=False # By default, debugging is off OPT_ALL="$(getopt -o dhm:p:r: -l debug,help,main:,project:,repo: --name "$0" -- "$@")" eval set -- "$OPT_ALL" while true ; do case $1 in -d | --debug) OPT_DEBUG=True shift ;; -h | --help) # Call help help exit 0 ;; -m | --main) OPT_MAIN=$2 ;; -p | --project) OPT_PROJECT=$2 #shift 2 ;; -r | --repo ) OPT_REPO=$2 #shift 2 ;; --) shift break ;; *) echo "Invalid argument" >&2 exit 1 ;; esac done if [[ $OPT_DEBUG == "True" ]]; then trap 'echo "At line $LINENO: $BASH_COMMAND"' DEBUG fi if ! command -v "${USE_PROGRAMME}" > /dev/null; then echo "ERROR: cannot find " $USE_PROGRAMME echo " You must install "$USE_PROGRAMME exit 1 fi pwd="$PWD" # # Set defaults # if [ -z $OPT_PROJECT ]; then PROJECT=$(basename $pwd) else PROJECT="$OPT_PROJECT" fi if [ -z $OPT_MAIN ]; then MAIN="$PROJECT" else MAIN="$OPT_MAIN" fi if [ -z $OPT_REPO ]; then REPO=$DEFAULT_REPO else REPO="$OPT_REPO" fi if [ ! -d "$REPO" ]; then echo "ERROR: can't find: "$REPO echo "Require a valid Git repository with a NetBeans project" echo "Use -r \).*\(<\/name>\(/$PROJECT<\/name>/g" project.xml # # cd "$pwd"/src # if [ -f ./myapp.cpp ]; then # mv myapp.cpp "$MAIN".cpp # fi } main $@