Преглед изворни кода

Parsing commandline arguments

Bob Mottram пре 10 година
родитељ
комит
e723166fa2
1 измењених фајлова са 159 додато и 157 уклоњено
  1. 159
    157
      src/freedombone

+ 159
- 157
src/freedombone Прегледај датотеку

@@ -79,6 +79,8 @@
79 79
 #
80 80
 # Note that there are no spaces around the equals.
81 81
 
82
+NO_OF_ARGS=$#
83
+
82 84
 DOMAIN_NAME=
83 85
 MY_USERNAME=
84 86
 FREEDNS_SUBDOMAIN_CODE=
@@ -372,170 +374,170 @@ function show_help {
372 374
   echo "'$VARIANT_CHAT', '$VARIANT_SOCIAL', '$VARIANT_MEDIA', '$VARIANT_TOR_DONGLE' or '$VARIANT_WRITER'."
373 375
   echo "If you wish to install everything except email then use the '$VARIANT_NONMAILBOX' variaint."
374 376
   echo ''
377
+  exit 0
375 378
 }
376 379
 
380
+# Oddly it appears that command line parsing cannot be done inside of a function
381
+while [[ $# > 1 ]]
382
+do
383
+key="$1"
384
+
385
+case $key in
386
+    -h|--help)
387
+    show_help
388
+    ;;
389
+    # username within /home
390
+    -u|--user)
391
+    shift
392
+    MY_USERNAME="$1"
393
+    ;;
394
+    # microblog domain name
395
+    --microblogdomain)
396
+    shift
397
+    MICROBLOG_DOMAIN_NAME="$1"
398
+    ;;
399
+    # microblog domain code (freedns)
400
+    --microblogcode)
401
+    shift
402
+    MICROBLOG_FREEDNS_SUBDOMAIN_CODE="$1"
403
+    ;;
404
+    # wiki domain name
405
+    --wikidomain)
406
+    shift
407
+    WIKI_DOMAIN_NAME="$1"
408
+    ;;
409
+    # wiki domain code (freedns)
410
+    --wikicode)
411
+    shift
412
+    WIKI_FREEDNS_SUBDOMAIN_CODE="$1"
413
+    ;;
414
+    # blog domain name
415
+    --blogdomain)
416
+    shift
417
+    FULLBLOG_DOMAIN_NAME="$1"
418
+    ;;
419
+    # blog domain code (freedns)
420
+    --blogcode)
421
+    shift
422
+    FULLBLOG_FREEDNS_SUBDOMAIN_CODE="$1"
423
+    ;;
424
+    # owncloud domain name
425
+    --ownclouddomain)
426
+    shift
427
+    OWNCLOUD_DOMAIN_NAME="$1"
428
+    ;;
429
+    # owncloud domain code (freedns)
430
+    --owncloudcode)
431
+    shift
432
+    OWNCLOUD_FREEDNS_SUBDOMAIN_CODE="$1"
433
+    ;;
434
+    # redmatrix domain name
435
+    --redmatrixdomain)
436
+    shift
437
+    REDMATRIX_DOMAIN_NAME="$1"
438
+    ;;
439
+    # redmatrix domain code (freedns)
440
+    --redmatrixcode)
441
+    shift
442
+    REDMATRIX_FREEDNS_SUBDOMAIN_CODE="$1"
443
+    ;;
444
+    # default domain name
445
+    -d|--domain)
446
+    shift
447
+    DOMAIN_NAME="$1"
448
+    ;;
449
+    # default domain code (freedns)
450
+    -c|--code)
451
+    shift
452
+    FREEDNS_SUBDOMAIN_CODE="$1"
453
+    ;;
454
+    # The type of system
455
+    -s|--system)
456
+    shift
457
+    SYSTEM_TYPE="$1"
458
+    ;;
459
+    # The dynamic DNS provider
460
+    --ddns)
461
+    shift
462
+    DDNS_PROVIDER="$1"
463
+    ;;
464
+    # Username for the synamic DNS provider
465
+    --ddnsuser)
466
+    shift
467
+    DDNS_USERNAME="$1"
468
+    ;;
469
+    # Password for the synamic DNS provider
470
+    --ddnspass)
471
+    shift
472
+    DDNS_PASSWORD="$1"
473
+    ;;
474
+    # Whether this installation is on a Beaglebone Black
475
+    --bbb)
476
+    INSTALLING_ON_BBB="yes"
477
+    ;;
478
+    # Domain name to use as a TLS time source
479
+    -t|--time)
480
+    shift
481
+    TLS_TIME_SOURCE1="$1"
482
+    ;;
483
+    # Static IP address for the system
484
+    --ip)
485
+    shift
486
+    LOCAL_NETWORK_STATIC_IP_ADDRESS=$1
487
+    ;;
488
+    # IP address for the internet router
489
+    --iprouter)
490
+    shift
491
+    ROUTER_IP_ADDRESS=$1
492
+    ;;
493
+    # ssh port
494
+    --ssh)
495
+    shift
496
+    SSH_PORT=$1
497
+    ;;
498
+    # public mailing list name
499
+    --list)
500
+    shift
501
+    PUBLIC_MAILING_LIST="$1"
502
+    ;;
503
+    # Number of CPU cores
504
+    --cores)
505
+    shift
506
+    CPU_CORES=$1
507
+    ;;
508
+    # my name
509
+    --name)
510
+    shift
511
+    MY_NAME="$1"
512
+    ;;
513
+    # my email address
514
+    --email)
515
+    shift
516
+    MY_EMAIL_ADDRESS="$1"
517
+    ;;
518
+    # USB drive
519
+    --usb)
520
+    shift
521
+    USB_DRIVE=$1
522
+    ;;
523
+    # Enable CJDNS
524
+    --cjdns)
525
+    shift
526
+    ENABLE_CJDNS="yes"
527
+    ;;
528
+    *)
529
+    # unknown option
530
+    ;;
531
+esac
532
+shift
533
+done
534
+
377 535
 function parse_args {
378
-  if [ ! $1 ]; then
536
+  if [[ $NO_OF_ARGS == 0 ]]; then
379 537
       show_help
380 538
       exit 0
381 539
   fi
382 540
 
383
-  while [[ $# > 1 ]]
384
-  do
385
-  key="$1"
386
-
387
-  case $key in
388
-      -h|--help)
389
-      show_help
390
-      exit 0
391
-      ;;
392
-      # username within /home
393
-      -u|--user)
394
-      MY_USERNAME="$1"
395
-      shift
396
-      ;;
397
-      # microblog domain name
398
-      --microblogdomain)
399
-      MICROBLOG_DOMAIN_NAME="$1"
400
-      shift
401
-      ;;
402
-      # microblog domain code (freedns)
403
-      --microblogcode)
404
-      MICROBLOG_FREEDNS_SUBDOMAIN_CODE="$1"
405
-      shift
406
-      ;;
407
-      # wiki domain name
408
-      --wikidomain)
409
-      WIKI_DOMAIN_NAME="$1"
410
-      shift
411
-      ;;
412
-      # wiki domain code (freedns)
413
-      --wikicode)
414
-      WIKI_FREEDNS_SUBDOMAIN_CODE="$1"
415
-      shift
416
-      ;;
417
-      # blog domain name
418
-      --blogdomain)
419
-      FULLBLOG_DOMAIN_NAME="$1"
420
-      shift
421
-      ;;
422
-      # blog domain code (freedns)
423
-      --blogcode)
424
-      FULLBLOG_FREEDNS_SUBDOMAIN_CODE="$1"
425
-      shift
426
-      ;;
427
-      # owncloud domain name
428
-      --ownclouddomain)
429
-      OWNCLOUD_DOMAIN_NAME="$1"
430
-      shift
431
-      ;;
432
-      # owncloud domain code (freedns)
433
-      --owncloudcode)
434
-      OWNCLOUD_FREEDNS_SUBDOMAIN_CODE="$1"
435
-      shift
436
-      ;;
437
-      # redmatrix domain name
438
-      --redmatrixdomain)
439
-      REDMATRIX_DOMAIN_NAME="$1"
440
-      shift
441
-      ;;
442
-      # redmatrix domain code (freedns)
443
-      --redmatrixcode)
444
-      REDMATRIX_FREEDNS_SUBDOMAIN_CODE="$1"
445
-      shift
446
-      ;;
447
-      # default domain name
448
-      -d|--domain)
449
-      DOMAIN_NAME="$1"
450
-      shift
451
-      ;;
452
-      # default domain code (freedns)
453
-      -c|--code)
454
-      FREEDNS_SUBDOMAIN_CODE="$1"
455
-      shift
456
-      ;;
457
-      # The type of system
458
-      -s|--system)
459
-      SYSTEM_TYPE="$1"
460
-      shift
461
-      ;;
462
-      # The dynamic DNS provider
463
-      --ddns)
464
-      DDNS_PROVIDER="$1"
465
-      shift
466
-      ;;
467
-      # Username for the synamic DNS provider
468
-      --ddnsuser)
469
-      DDNS_USERNAME="$1"
470
-      shift
471
-      ;;
472
-      # Password for the synamic DNS provider
473
-      --ddnspass)
474
-      DDNS_PASSWORD="$1"
475
-      shift
476
-      ;;
477
-      # Whether this installation is on a Beaglebone Black
478
-      --bbb)
479
-      INSTALLING_ON_BBB="$1"
480
-      shift
481
-      ;;
482
-      # Domain name to use as a TLS time source
483
-      -t|--time)
484
-      TLS_TIME_SOURCE1="$1"
485
-      shift
486
-      ;;
487
-      # Static IP address for the system
488
-      --ip)
489
-      LOCAL_NETWORK_STATIC_IP_ADDRESS=$1
490
-      shift
491
-      ;;
492
-      # IP address for the internet router
493
-      --iprouter)
494
-      ROUTER_IP_ADDRESS=$1
495
-      shift
496
-      ;;
497
-      # ssh port
498
-      --ssh)
499
-      SSH_PORT=$1
500
-      shift
501
-      ;;
502
-      # public mailing list name
503
-      --list)
504
-      PUBLIC_MAILING_LIST="$1"
505
-      shift
506
-      ;;
507
-      # Number of CPU cores
508
-      --cores)
509
-      CPU_CORES=$1
510
-      shift
511
-      ;;
512
-      # my name
513
-      --name)
514
-      MY_NAME="$1"
515
-      shift
516
-      ;;
517
-      # my email address
518
-      --email)
519
-      MY_EMAIL_ADDRESS="$1"
520
-      shift
521
-      ;;
522
-      # USB drive
523
-      --usb)
524
-      USB_DRIVE=$1
525
-      shift
526
-      ;;
527
-      # Enable CJDNS
528
-      --cjdns)
529
-      ENABLE_CJDNS="yes"
530
-      shift
531
-      ;;
532
-      *)
533
-      # unknown option
534
-      ;;
535
-  esac
536
-  shift
537
-  done
538
-
539 541
   if [ ! -d /home/$MY_USERNAME ]; then
540 542
       echo "There is no user '$MY_USERNAME' on the system. Use 'adduser $MY_USERNAME' to create the user."
541 543
       exit 1