First example!
This commit is contained in:
		
							parent
							
								
									9aa75c1170
								
							
						
					
					
						commit
						4f70443bda
					
				
							
								
								
									
										8
									
								
								examples
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								examples
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,8 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| ⚡️hello() { | ||||
|   _help-line "Say hello!" "$@" | ||||
|   echo Hello, world! | ||||
| } | ||||
| 
 | ||||
| source ⚡️ | ||||
							
								
								
									
										102
									
								
								test/test-help
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								test/test-help
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,102 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| testUsageIsShownWhenNoCommandIsSpecified() { | ||||
|   echo ' | ||||
|   #!/usr/bin/env bash | ||||
|   ' > go | ||||
|   echo "source $(dirname $BASH_SOURCE)/../⚡️" >> go | ||||
|   chmod +x go | ||||
| 
 | ||||
|   try ./go | ||||
|   assertContains "$STDOUT" "Usage" | ||||
| } | ||||
| 
 | ||||
| testHelpSubcommandCannotBeOverridden() { | ||||
|   echo ' | ||||
|   #!/usr/bin/env bash | ||||
|   ⚡️help() { echo "ah hah hah" ; } | ||||
|   ' > go | ||||
|   echo "source $(dirname $BASH_SOURCE)/../⚡️" >> go | ||||
|   chmod +x go | ||||
| 
 | ||||
|   try ./go help | ||||
|   assertContains "$STDOUT" "Usage" | ||||
| } | ||||
| 
 | ||||
| testHelpIncludesInvocationInstructions() { | ||||
|   SCRIPT_NAME="foo-$RANDOM" | ||||
|   echo ' | ||||
|   #!/usr/bin/env bash | ||||
|   ' > $SCRIPT_NAME | ||||
|   echo "source $(dirname $BASH_SOURCE)/../⚡️" >> $SCRIPT_NAME | ||||
|   chmod +x $SCRIPT_NAME | ||||
| 
 | ||||
|   try ./$SCRIPT_NAME help | ||||
|   assertContains "$STDOUT" "$SCRIPT_NAME SUBCOMMAND" | ||||
| } | ||||
| 
 | ||||
| testHelpListsAllAvailableLightningCommands() { | ||||
|   echo ' | ||||
|   #!/usr/bin/env bash | ||||
|   ⚡️foo() { echo "ah hah hah" ; } | ||||
|   ⚡️bar() { echo "ah hah hah" ; } | ||||
|   ⚡️baz() { echo "ah hah hah" ; } | ||||
|   ⚡️potato() { echo "ah hah hah" ; } | ||||
|   ' > go | ||||
|   echo "source $(dirname $BASH_SOURCE)/../⚡️" >> go | ||||
|   chmod +x go | ||||
| 
 | ||||
|   try ./go help | ||||
|   assertContains "$STDOUT" "foo" | ||||
|   assertContains "$STDOUT" "bar" | ||||
|   assertContains "$STDOUT" "baz" | ||||
|   assertContains "$STDOUT" "potato" | ||||
|   assertContains "$STDOUT" "help" | ||||
| } | ||||
| 
 | ||||
| testHelpLinesFromDefinedCommandsAreShown() { | ||||
|   echo ' | ||||
|   #!/usr/bin/env bash | ||||
| 
 | ||||
|   ⚡️hello() { | ||||
|    _help-line "Say Hello" "$@" | ||||
|    echo "Hello, World!" ;  | ||||
|   } | ||||
|   ' > go | ||||
| 
 | ||||
|   echo "source $(dirname $BASH_SOURCE)/../⚡️" >> go | ||||
|   chmod +x go | ||||
| 
 | ||||
|   try ./go | ||||
|   assertContains "$STDOUT" "Say Hello" | ||||
| } | ||||
| 
 | ||||
| testHelpDoesNotExecuteFunctionsWithNoHelpLine() { | ||||
|   echo ' | ||||
|   #!/usr/bin/env bash | ||||
| 
 | ||||
|   ⚡️hello() { echo "Hello, World!" ; } | ||||
|   ' > go | ||||
| 
 | ||||
|   echo "source $(dirname $BASH_SOURCE)/../⚡️" >> go | ||||
|   chmod +x go | ||||
| 
 | ||||
|   try ./go | ||||
|   assertNotContains "$STDOUT" "Hello, World" | ||||
| } | ||||
| 
 | ||||
| testLightningShouldNotBeIncludedInSubcommandNames() { | ||||
|   echo ' | ||||
|   #!/usr/bin/env bash | ||||
| 
 | ||||
|   ⚡️hello() { echo "Hello, World!" ; } | ||||
|   ' > go | ||||
| 
 | ||||
|   echo "source $(dirname $BASH_SOURCE)/../⚡️" >> go | ||||
|   chmod +x go | ||||
| 
 | ||||
|   try ./go | ||||
|   assertNotContains "$STDOUT" "⚡️hello" | ||||
| } | ||||
| 
 | ||||
| source $(dirname $0)/runner | ||||
							
								
								
									
										30
									
								
								⚡️
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								⚡️
									
									
									
									
									
								
							| @ -1,7 +1,35 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| main() { | ||||
|   ⚡️$1 | ||||
|   if [[ $(type -t "⚡️$1") == "function" ]]; then | ||||
|     ⚡️$1 | ||||
|   else | ||||
|     ⚡️help | ||||
|   fi | ||||
| } | ||||
| 
 | ||||
| ⚡️help() { | ||||
|   _help-line "Show this list" "$@" | ||||
|   echo Usage: "$0" SUBCOMMAND | ||||
|   echo | ||||
|   echo "Available subcommands:" | ||||
|   for subcommand in $(_subcommands); do | ||||
|     if [[ $(type ⚡️$subcommand) =~ _help-line ]]; then | ||||
|       printf "\t%-20s - %s\n" "$subcommand" "$(⚡️$subcommand help-line)" | ||||
|     else | ||||
|       printf "\t%-20s" $subcommand | ||||
|     fi | ||||
|   done | ||||
| } | ||||
| 
 | ||||
| _subcommands() { | ||||
|   compgen -c ⚡️ | cut -c3- | ||||
| } | ||||
| 
 | ||||
| _help-line() { | ||||
|   if [[ "$#" == 2 && "$2" == "help-line" ]]; then | ||||
|     echo "$1" && exit 0 | ||||
|   fi | ||||
| } | ||||
| 
 | ||||
| main "$@" | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user