| 
					
				 | 
			
			
				@@ -1,40 +1,54 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # gimme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-A micro meta package manager for the masses. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+A micro meta manager for the masses. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-## What. Does. __That__. MEAN? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-The `gimme` command is intended to run micro scripts that get stuff (or get 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-stuff done). Ideally, it can do anything ~~that can be automated in shell~~. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## What. Does. _That_. MEAN? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The `gimme` command runs micro scripts that get small blocks of work done. These usually build on other tools and can be chained together. Ideally, it can do anything ~~that can be automated in shell~~. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Think of it as glue between tiny little tasks that are easy to define. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+It's like glue between tiny little tasks. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ## No really... what does it do? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 It deals with the shell scripts so that the engineers don't have to. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+yeah... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-## Umm.. okay... how, then? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-### install it (you do read these scripts, right?) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## Installation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ```bash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 curl -fsSL "http://git.kylepdavis.com/kylepdavis/gimme/raw/master/gimme" | bash - 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+_(you do read these scripts, right?)_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-### use it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## Usage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ```bash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 gimme goodies 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# if it exists, it will run the "$GIMME_DIR/gimmes/goodies" script 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# otherwise, it will run the "$GIMME_DIR/gimmes/_default" script (which by default installs stuff with your package manager) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# if it exists, run: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"$GIMME_DIR/gimmes/goodies" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# otherwise, run the nearest _default (as an example, this wraps your package manager): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"$GIMME_DIR/gimmes/_default" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-### shell integration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## Integration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 You can get tab completion in bash by doing something like this (put it in your `.profile` to play for keeps): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ```bash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 source "$GIMME_DIR/gimme" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## Customization 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+1. write a shell script that does something awesome 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  * you can depend on other "gimmes" by simply calling `gimme that other thing` at the top 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  * add a check to make sure that it does nothing on subsequent runs -- idempotence is sexy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  * helpers like `has` and `gimme_pkg` get inherited from the main `gimme` script if you want 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2. put it into the `$GIMME_DIR/gimmes/` directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+3. make it executable with something like `chmod 755 YOUR_GIMME_SCRIPT` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ## What is in it for me? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 The idea here is that the what you use this for is really up to you. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -46,35 +60,5 @@ Here are some ideas for overall uses to get you started: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 If that wasn't enough here are some ideas for the "gimmes": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-## How do I write gimmes? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Simple: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-1. write a shell script that does something awesome 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  * helpers like `has` and `gimme_pkg` get inherited from the main `gimme` script if you want 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  * add a check to make sure that it does nothing on subsequent runs -- idempotence is sexy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  * you can depend on other "gimmes" by simply calling `gimme that other thing` at the top 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-2. put it into the `$GIMME_DIR/gimmes/` directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-3. make it executable with something like `chmod 755 YOUR_GIMME_SCRIPT` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-## What else? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Also, it prevents cycles so one of your "gimmes" could 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-What you use this for could range from a small set of personal tools that you use to compliment your dotfiles 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-rdotconfiguration management suite to compliment your dotfiles to a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- getting stuff. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-You can take that to mean whatever you want. Use my defaults or fork this project and add your own scripts. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ## What makes it better than X? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Maybe nothing. Lots of things do dependency tracking. I wanted to try this out. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Some suggested using `Makefile` files but that felt a little clunky. Plus `make` isn't exactly installed everywhere. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Neither is `bash` but it was good enough for me. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-You could technically use something like chef, puppet, ansible, salt, etc. but those felt *way* too heavy for my needs. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Just trying to keep it simple and shell scripts are about as simple as it gets. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Here's another project that somewhat agrees: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- [https://github.com/brandonhilkert/fucking_shell_scripts](fucking_shell_scripts) project 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Maybe nothing. I thought it was a neat idea and wanted to try it out. 
			 |