Guest User

Untitled

a guest
Jan 23rd, 2018
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.95 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. usage()
  4. {
  5.     cat <<EOF
  6. Usage: $(basename $0) [OPTIONS] NAME
  7.  
  8. This script assists in setting up a default autotools project.
  9.  
  10. OPTIONS:
  11.     --help, -h      Show this message
  12.     --author, -a    Set the project's author
  13.     --target, -t    Set the target directory
  14. EOF
  15. }
  16.  
  17.  
  18. run()
  19. {
  20.     curdir="$PWD"
  21.     echo -n "Creating project structure..."
  22.     mkdir -p ${targetdir}
  23.     cd "${targetdir}"
  24.     cat > ./configure.ac <<EOF
  25. AC_INIT( [${projectname}], [0.1], [${author}] )
  26. AM_INIT_AUTOMAKE([-Wall -Werror foreign])
  27. AC_PROG_CC
  28. AC_CONFIG_HEADERS([config.h])
  29. AC_CONFIG_FILES([
  30.     Makefile
  31.     src/Makefile
  32. ])
  33. AC_OUTPUT
  34. EOF
  35.     mkdir -p ./src
  36.        
  37.     cat > ./Makefile.am <<EOF
  38. SUBDIRS = src
  39. dist_doc_DATA = README
  40. EOF
  41.  
  42.     cat > ./src/Makefile.am <<EOF
  43. bin_PROGRAMS = ${projectname}
  44. ${projectname}_SOURCES = main.c
  45. EOF
  46.  
  47.     touch README
  48.     autoreconf --install &> /dev/null
  49.     cd "$curdir"
  50.     echo "Done."
  51.  
  52. }
  53.  
  54. OPTIONS=`getopt -l help,author:,target: ha:t: "$@"`
  55. let ret=$?
  56. if [ $ret -eq 1 ];then
  57.     usage
  58.     exit 2
  59. fi
  60.  
  61. set -- `getopt -l help,author:,target: ha:t: "$@"`
  62. [ $# -lt 1 ] && usage && exit 1 #Failed to get command line parameters
  63.  
  64. while [ $# -gt 0 ];do
  65.     case "$1" in
  66. #Help options
  67.         --help)
  68.             usage
  69.             exit 2
  70.         ;;
  71.         -h)
  72.             usage
  73.             exit 2
  74.         ;;
  75. #Set the author
  76.         --author)
  77.             author="${2//\'}"
  78.             shift
  79.         ;;
  80.         -a)
  81.             author="${2//\'}"
  82.             shift
  83.         ;;
  84. #Set the target
  85.         --target)
  86.             targetdir="${2%\'}"
  87.             targetdir="${targetdir#\'}"
  88.             shift
  89.         ;;
  90.         -t)
  91.             targetdir="${2%\'}"
  92.             targetdir="${targetdir#\'}"
  93.             shift
  94.         ;;
  95.  
  96.  
  97. #All of our default parameter stuff goes below here
  98.         --)
  99.             projectname="${2//\'}"
  100.             shift
  101.             break
  102.         ;;
  103.  
  104.         --*)
  105.             usage
  106.             exit 2
  107.         ;;
  108.  
  109.         -*)
  110.             usage
  111.             exit 2
  112.         ;;
  113.  
  114.         *)
  115.             break
  116.         ;;
  117.     esac
  118.     shift
  119. done
  120.  
  121. #Double check all of our variables
  122. [[ -z "$projectname" ]] && usage && exit 2
  123. [[ -z "$author" ]] && author="unknown@unknown.com"
  124. [[ -z "$targetdir" ]] && targetdir="."
  125.  
  126. run
Add Comment
Please, Sign In to add comment