How to Use the Command Line to Increase Speed of Development

Post on 21-Feb-2017

774 views 0 download

Transcript of How to Use the Command Line to Increase Speed of Development

How to Use the Command Line to Increase Speed of Development

Dave MyburghSenior Engineer and Team Lead on www.acquia.com

About Me● Dave Myburgh● Team lead for www.acquia.com, training, dev, engage● Most recently worked on docs D6 -> D8 update● 10 years of Drupal● First site in 4.7 and it's still running :)● Started on PC, now on Mac● From DOS to Terminal (autoexec.bat to .bash_profile)

What we will cover● Pimp out that prompt for Git● Bash profile● Aliases● Drush● File editing● SASS & Compass● Drupal 8 & Composer

Pimp my prompt● Git on the command line● .git-completion.bash

https://github.com/git/git/blob/master/contrib/completion/git-completion.bash

● .git-prompt.shhttp://git-prompt.shsource ~/.git-completion.bashsource ~/.git-prompt.shexport PS1="[fun_stuff_here]"

export PS1='[\t]:\w\[\033[0;32m\]$(__git_ps1 " (%s)")\[\033[0;0m\]\$ ';

time path start green

THE MAGIC

end green

For more prompt styling: https://wiki.archlinux.org/index.php/Bash/Prompt_customization

PS1 = main/primary prompt

Bash profile● .bash_profile on Mac, .bash_rc on Linux● aliases

e.g. alias l="ls =al"● directory listing colors

e.g. export LSCOLORS=GxFxCxDxBxegedabagacad● setting paths to programs:

export PATH="$PATH:/Applications/Dev Desktop/drush"

Bash profile (cont.)● custom functions

Convert an mp4 video file into an mp3: mp4-mp3() { # ${1%.*} returns only the filename, not the extension. ffmpeg -i "$1" -f mp3 -ab 192000 -vn "${1%.*}".mp3 }

● lots more out there:http://blog.taylormcgann.com/2012/06/13/customize-your-shell-command-prompt

Bash profile: Aliases● TIP: separate file for aliases, load from .bash_profile

source ~/.aliases

● some of favorites:alias l="ls -al"alias dev="cd ~/Sites/devdesktop/acquiacom-dev/docroot"alias gitb="git branch"alias gits="git status"alias ssh-ac-dev="ssh [user].dev@[server].network.hosting.acquia.com"alias fixwebcam="sudo killall VDCAssistant"

Drush● The Drupal shell (http://www.drush.org)● command line shell and scripting interface● ships with lots of useful commands● Drupal modules can add more commands

e.g. Backup & Migrate● THE most useful command line utility for Drupal

Drush (cont.)● Two main ways to get it:

○ Acquia Dev Desktop (Mac & Win)○ install globally for your computer via command line:

$ wget http://files.drush.org/drush.phar$ chmod +x drush.phar$ sudo mv drush.phar /usr/local/bin/drush

● http://docs.drush.org/en/master/install for more help

Drush (cont.)● Some of the most used commands:

$ drush cc [all] (clear all caches)$ drush dl [module_name]$ drush en [module_name]$ drush updb (run update.php)$ drush sql-cli (login to mysql)$ drush sql-connect (show mysql connection string)$ drush uli [username] (user login)$ drush sa (show site aliases)$ drush @acquia.prod cc all (clear caches on acquia)$ drush up [module_name] (update modules)

Drush (cont.)● Some Drupal 8 changes & additions:

$ drush cc all (clear all caches) => drush cr (cache rebuild)$ drush dis [module_name] (disable module) => drush pm-uninstall (also used in D7 & below)$ drush config-export / cex (export config)$ drush config-import / cim (import config)$ drush config-pull (copy config to new env)$ drush up drupal!!and many, many more...$ drush $ drush help [command]

Drush (cont.)● Acquia Dev Desktop:

to avoid this:Command xxxx needs a higher bootstrap level to run...

File Editing● Vi (Vim), Nano, Emacs, etc.● Personal favorite is nano● Similar commands like DOS editors: Ctrl-[key]● No typing : before commands● Tip: show line numbers all the time (else nano -c)

.nanorc:set const

● Some people use Vim for all editing, instead of an IDE like PHPStorm

SASS & Compass● Syntactically Awesome StyleSheets● extension of CSS, so regular CSS is 100% valid● get to use variables, nested rules, mixins (functions)● files use .scss extension● create separate files for regions/content types/whatever

and they all get loaded by one file● http://sass-lang.com● https://smacss.com (scalable and modular architecture)

SASS & Compass (cont.)● Compass is a CSS authoring framework that uses

SASS● provides many useful mixins (functions)● basically, it compiles your SASS files into actual CSS● compass watch will monitor changes to your .scss

files and rebuild the .css file● requires Ruby and a config.rb file in theme folder● http://compass-style.org

SASS & Compass (cont.)Example: sass/style.scss: @import 'components/base';

sass/components/_base.scss: $blue: #29aee1; a { color: $blue; &:hover { color: darken($blue, 10%); } }

SASS & Compass (cont.)Example: styles/style.css: a { color: #29aae1; } a:hover { color: #1a90bd; }

$ compass watch (to constantly monitor for changes)$ compass compile (to manually update changes)

SASS & Compass (cont.)● SO much more...● https://rvm.io/rvm/install (Ruby installation via RVM)● http://www.ruby-lang.org/en/documentation/installation

(regular Ruby install) ● http://sass-lang.com● http://compass-style.org● https://smacss.com

Drupal 8 & Composer● new way of managing site dependencies● Composer Manager module is a helper module with a

Drupal UI too (requires Composer command-line tool:https://getcomposer.org)

● can replace drush make or work with it● some modules now use composer for their

dependencies - look for composer.json file● https://www.drupal.

org/documentation/install/composer-dependencies

Drupal 8 & Composer (cont.)● so what's the workflow with composer?● recommended to install composer_manager module,

which will automatically update root composer.json with a module's requirements:$ drush dl composer_manager$ php modules/composer_manager/scripts/init.php

● then download your module(s) and run:$ composer drupal-update

● all dependencies, including core, will get updated

Drupal 8 & Composer (cont.)● without Composer Manager, you can manually edit root

composer.json to add modules, run composer update to then download the module and its dependencies

● Note: vendor directory will get updated often! Don't worry, those dependencies are restricted to certain versions in core/composer.json, so things won't break e.g."jcalderonzumba/mink-phantomjs-driver": "~0.3.1", (i.e. >=0.3.1 and <0.4)

Q & A

Thank You!