Saul Salazar/Onboarding with a single command

Created Sat, 20 May 2023 00:00:00 +0000

Make employee onboarding easier providing a tool with a single command to install all required applications and plugins. The tool is Make so you just need to write a single file (the Makefile).

Depending the case, this can be implemented for the entire tech area, the development division, multiple teams, or even big projects.

Plus you can add ASCII art

What you can automate

  • Create default folders (notes, projects, documentation, temp).
  • Install an IDE or text editor and add plugins.
  • Download git repositories.

Repositories

  • onboarding-tech (for all technology employees)
  • onboarding-dev (for development)
  • onboarding-ops (for operations)
  • onboarding-team-cheems (for a single team)
  • onboarding-service-billing (for a single service)

Example

With the command make mac it must setup a MacOS machine with applications like Firefox, Discord, etc using Homebrew.

.PHONY: help

info: header

define HEADER
 ____________________
< Available Commands >
 --------------------
   \ 
    \ 
        .--.
       |o_o |
       |:_/ |
      //   \ \ 
     (|     | )
    /'\_   _/`\ 
    \___)=(___/
endef
export HEADER

help:  ## Display this help
	@echo "$$HEADER"
	@awk 'BEGIN {FS = ":.*##"; printf "\nUsage: make <command> [ARGUMENT1=value1] [ARGUMENT2=value2]\n\nCommands: \033[36m\033[0m\n"} /^[a-zA-Z0-9_-]+:.*?##/ { printf "  \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)

mac: ## Onboarding for MacOS
	@curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash
	@brew install --cask visual-studio-code
	@brew install --cask visual-studio
	@brew install --cask google-chrome
	@brew install --cask firefox
	@brew install --cask alt-tab
	@brew install --cask docker
	@brew install --cask slack
	@brew install --cask discord
	@brew install git
	@echo "Finished Setup!"

What to do next?

Customize!

  • Add another operating systems
  • Add more applications
  • Add more commands (example to upgrade all applications)
  • Add a next steps section (you can define a footer block)
  • You can even install VS Code plugins via CLI using code --install-extension id.here

How to make large letters on CLI

To “convert” your logo to text (well really just the name to large cool letters) you can use figlet, a CLI tool or use this online tool from askapache.com which probably uses figlet behind for a quick demo.

Adding a new ASCII art doesnt work correctly

This occurs if one line has the character \ at the end, then you must add an space, it should look like this \ , this can be done easily using a Search & Replace in your text editor, check the option to allow regular expressions (regex) and search \\\n and replace it with \ \n

ASCII Art Examples

define HEADER
 ____________________
< Available Commands >
 --------------------
\                             .       .
 \                           / `.   .' " 
  \                  .---.  <    > <    >  .---.
   \                 |    \  \ - ~ ~ - /  /    |
         _____          ..-~             ~-..-~
        |     |   \~~~\.'                    `./~~~/
       ---------   \__/                        \__/
      .'  O    \     /               /       \  " 
     (_____,    `._.'               |         }  \/~~~/
      `----.          /       }     |        /    \__/
            `-.      |       /      |       /      `. ,~~|
                ~-.__|      /_ - ~ ^|      /- _      `..-'   
                     |     /        |     /     ~-.     `-. _  _  _
                     |_____|        |_____|         ~ - . _ _ _ _ _>
endef
export HEADER

define HEADER
 ____________________
< Available Commands >
 --------------------
      \                    / \  //\ 
       \    |\___/|      /   \//  \\ 
            /0  0  \__  /    //  | \ \    
           /     /  \/_/    //   |  \  \  
           @_^_@'/   \/_   //    |   \   \ 
           //_^_/     \/_ //     |    \    \ 
        ( //) |        \///      |     \     \ 
      ( / /) _|_ /   )  //       |      \     _\ 
    ( // /) '/,_ _ _/  ( ; -.    |    _ _\.-~        .-~~~^-.
  (( / / )) ,-{        _      `-.|.-~-.           .~         `.
 (( // / ))  '/\      /                 ~-. _ .-~      .-~^-.  \ 
 (( /// ))      `.   {            }                   /      \  \ 
  (( / ))     .----~-.\        \-'                 .~         \  `. \^-.
             ///.----..>        \             _ -~             `.  ^-`  ^-_
               ///-._ _ _ _ _ _ _}^ - - - - ~                     ~-- ,.-~
                                                                  /.-~
endef
export HEADER

define HEADER
 ____________________
< Available Commands >
 --------------------
    \                                  ___-------___
     \                             _-~~             ~~-_
      \                         _-~                    /~-_
             /^\__/^\         /~  \                   /    \ 
           /|  O|| O|        /      \_______________/        \ 
          | |___||__|      /       /                \          \ 
          |          \    /      /                    \          \ 
          |   (_______) /______/                        \_________ \ 
          |         / /         \                      /            \ 
           \         \^\\         \                  /               \     /
             \         ||           \______________/      _-_       //\__//
               \       ||------_-~~-_ ------------- \ --/~   ~\    || __/
                 ~-----||====/~     |==================|       |/~~~~~
                  (_(__/  ./     /                    \_\      \.
                         (_(___/                         \_____)_)
endef
export HEADER

define HEADER
 ____________________
< Available Commands >
 --------------------
 \     /\  ___  /\ 
  \   // \/   \/ \\ 
     ((    O O    ))
      \\ /     \ //
       \/  | |  \/ 
        |  | |  |  
        |  | |  |  
        |   o   |  
        | |   | |  
        |m|   |m|  
endef
export HEADER