From 0f112252b5cec9862d1df908d698bfd9b08d99f4 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Tue, 23 Apr 2019 13:01:18 +0700 Subject: [PATCH 01/36] Add bin/install for homebrew --- .travis.yml | 4 +--- bin/install | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100755 bin/install diff --git a/.travis.yml b/.travis.yml index 1407ff9..f75a989 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,4 @@ os: osx language: objective-c -install: - - curl https://raw.githubusercontent.com/blcsntb/mac-setup/master/mac-setup | bash -s all script: - - ~/mac-setup/mac-setup all + - ./bin/install diff --git a/bin/install b/bin/install new file mode 100755 index 0000000..b64c040 --- /dev/null +++ b/bin/install @@ -0,0 +1,35 @@ +#!/bin/bash +set -e + +[ -d ~/.homebrew ] || (mkdir ~/.homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C ~/.homebrew) +export PATH=$HOME/.homebrew/bin:$PATH + +type brew +echo " + git + python + rbenv + tree + watchman + zsh + zsh-autosuggestions + zsh-completions + zsh-syntax-highlighting +" | xargs brew install + +echo " + alfred + android-studio + calibre + google-chrome + iterm2 + skype + slack + spectacle + spotify + sourcetree + visual-studio-code +" | xargs -L1 brew cask install + +type pip3 +pip3 install powerline-shell From a6ed5bab75dedffd41b678e65976319216473cc0 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Tue, 23 Apr 2019 13:49:44 +0700 Subject: [PATCH 02/36] Handle cache for travisAdd nvm install --- .travis.yml | 7 +++++++ bin/install | 40 +++++++++++++++++++++++++++------------- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index f75a989..ccb03e9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,11 @@ os: osx language: objective-c +install: + - ./bin/install script: - ./bin/install +cache: + directories: + - /Applications + - $HOME/.homebrew + - $HOME/.nvm diff --git a/bin/install b/bin/install index b64c040..7f250a1 100755 --- a/bin/install +++ b/bin/install @@ -1,22 +1,17 @@ #!/bin/bash set -e +# install brew [ -d ~/.homebrew ] || (mkdir ~/.homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C ~/.homebrew) export PATH=$HOME/.homebrew/bin:$PATH - type brew -echo " - git - python - rbenv - tree - watchman - zsh - zsh-autosuggestions - zsh-completions - zsh-syntax-highlighting -" | xargs brew install +# install nvm +[ -d ~/.nvm ] || (curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash) +\. ~/.nvm/nvm.sh +nvm install --lts + +# brew cask install echo " alfred android-studio @@ -25,11 +20,30 @@ echo " iterm2 skype slack + sourcetree spectacle spotify - sourcetree visual-studio-code " | xargs -L1 brew cask install +# brew install +echo " + git + python + rbenv + tree + watchman + zsh + zsh-autosuggestions + zsh-completions + zsh-syntax-highlighting +" | xargs brew install + +# pip3 install type pip3 pip3 install powerline-shell + +# npm install +type npm +npm install -g yarn +npm install -g vmd From 2d7ee7b247683916fbf889029add8a968fbc7782 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Tue, 23 Apr 2019 13:55:29 +0700 Subject: [PATCH 03/36] Remove hook install on travis --- .travis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index ccb03e9..6ac63bb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,5 @@ os: osx language: objective-c -install: - - ./bin/install script: - ./bin/install cache: From 01033a0de779240e7b3333c1822a37f3c6dc8346 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Tue, 23 Apr 2019 15:23:25 +0700 Subject: [PATCH 04/36] Remove symbolic link --- .../powerline-shell}/config.json | 0 .zshrc | 15 +- .../Code/User}/keybindings.json | 0 .../Code/User}/settings.json | 0 .../Spectacle}/Shortcuts.json | 0 .../Preferences/com.googlecode.iterm2.plist | Bin 0 -> 8504 bytes bin/install | 13 +- {jenkins => bin}/jenkins | 0 lib => bin/lib | 0 brew/brew | 19 - iterm2.png | Bin 189417 -> 0 bytes iterm2/README.md | 6 - iterm2/com.googlecode.iterm2.plist | 900 ------------------ nvm/nvm | 30 - rbenv/rbenv | 32 - vscode/.vscode | 5 - 16 files changed, 19 insertions(+), 1001 deletions(-) rename {powerline-shell => .config/powerline-shell}/config.json (100%) rename {vscode => Library/Application Support/Code/User}/keybindings.json (100%) rename {vscode => Library/Application Support/Code/User}/settings.json (100%) rename {spectacle => Library/Application Support/Spectacle}/Shortcuts.json (100%) create mode 100644 Library/Preferences/com.googlecode.iterm2.plist rename {jenkins => bin}/jenkins (100%) rename lib => bin/lib (100%) delete mode 100755 brew/brew delete mode 100644 iterm2.png delete mode 100644 iterm2/README.md delete mode 100644 iterm2/com.googlecode.iterm2.plist delete mode 100755 nvm/nvm delete mode 100755 rbenv/rbenv delete mode 100644 vscode/.vscode diff --git a/powerline-shell/config.json b/.config/powerline-shell/config.json similarity index 100% rename from powerline-shell/config.json rename to .config/powerline-shell/config.json diff --git a/.zshrc b/.zshrc index d1ff949..00070e3 100644 --- a/.zshrc +++ b/.zshrc @@ -7,6 +7,9 @@ export LANG=en_US.UTF-8 export PATH=$HOME/.homebrew/bin:$PATH +export PATH=/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:$PATH +export REACT_EDITOR=code + export JAVA_HOME=`/usr/libexec/java_home -v 1.8` export PATH=$JAVA_HOME/bin:$PATH @@ -19,8 +22,6 @@ export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion -export MAC_SETUP_DIR="$HOME/mac-setup" - alias mac='~/mac-setup/mac-setup' alias mac-update='mac all && source ~/.zshrc' alias emulator=$ANDROID_HOME/tools/emulator @@ -30,6 +31,8 @@ alias xcode='open -a Xcode' alias stree='open -a SourceTree' alias restree='killall Sourcetree && stree' alias gff='git flow feature' +alias vscode='code' +alias revscode='pgrep Electron | xargs kill && code' function powerline_precmd() { PS1="$(powerline-shell --shell zsh $?)" @@ -45,10 +48,8 @@ function install_powerline_precmd() { install_powerline_precmd source $ZSH/oh-my-zsh.sh -source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh -source $MAC_SETUP_DIR/vscode/.vscode - -# Note the source command must be at the end of ~/.zshrc. -source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +source ~/.homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh +source ~/.homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +fpath=(~/.homebrew/share/zsh-completions $fpath) eval "$(rbenv init -)" diff --git a/vscode/keybindings.json b/Library/Application Support/Code/User/keybindings.json similarity index 100% rename from vscode/keybindings.json rename to Library/Application Support/Code/User/keybindings.json diff --git a/vscode/settings.json b/Library/Application Support/Code/User/settings.json similarity index 100% rename from vscode/settings.json rename to Library/Application Support/Code/User/settings.json diff --git a/spectacle/Shortcuts.json b/Library/Application Support/Spectacle/Shortcuts.json similarity index 100% rename from spectacle/Shortcuts.json rename to Library/Application Support/Spectacle/Shortcuts.json diff --git a/Library/Preferences/com.googlecode.iterm2.plist b/Library/Preferences/com.googlecode.iterm2.plist new file mode 100644 index 0000000000000000000000000000000000000000..766d8d960dc61b58054b6816333fd25fbb9d0c8f GIT binary patch literal 8504 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 I;+JjwH@mUBd;kCd literal 0 HcmV?d00001 diff --git a/bin/install b/bin/install index 7f250a1..3e5daa4 100755 --- a/bin/install +++ b/bin/install @@ -2,12 +2,15 @@ set -e # install brew -[ -d ~/.homebrew ] || (mkdir ~/.homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C ~/.homebrew) +[ -d ~/.homebrew ] || mkdir ~/.homebrew +curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C ~/.homebrew export PATH=$HOME/.homebrew/bin:$PATH type brew # install nvm -[ -d ~/.nvm ] || (curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash) +if [ ! -d ~/.nvm ]; then + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash +fi \. ~/.nvm/nvm.sh nvm install --lts @@ -47,3 +50,9 @@ pip3 install powerline-shell type npm npm install -g yarn npm install -g vmd + +# install oh-my-zsh +if [ ! -d ~/.oh-my-zsh ]; then + git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh + sudo chsh -s ~/.homebrew/bin/zsh +fi diff --git a/jenkins/jenkins b/bin/jenkins similarity index 100% rename from jenkins/jenkins rename to bin/jenkins diff --git a/lib b/bin/lib similarity index 100% rename from lib rename to bin/lib diff --git a/brew/brew b/brew/brew deleted file mode 100755 index f7b5057..0000000 --- a/brew/brew +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -source ~/mac-setup/lib - -export PATH=$HOME/.homebrew/bin:$PATH - -install() { - if not_install brew; then - mkdir ~/.homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C ~/.homebrew - fi - verify brew -} - -uninstall() { - log_uninstalling brew - echo y | ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)" -} - -$@ diff --git a/iterm2.png b/iterm2.png deleted file mode 100644 index 81157d6c79d9a75101e00529d6ff06ea90a08e7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 189417 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 z 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�u5&;SFUN3^(2Mcp*OvE$vOl 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 - - - - AdjustWindowForFontSizeChange - - AppleAntiAliasingThreshold - 1 - AppleScrollAnimationEnabled - 0 - AppleSmoothFixedFontsSizeThreshold - 1 - AppleWindowTabbingMode - manual - Default Bookmark Guid - C0FA1836-5A6D-46D9-9D1F-C4BF6FEF9044 - HideActivityIndicator - - HideTab - - HideTabCloseButton - - HideTabNumber - - HotkeyMigratedFromSingleToMulti - - JobName - - LoadPrefsFromCustomFolder - - NSNavLastRootDirectory - ~/Documents - NSNavPanelExpandedSizeForOpenMode - {712, 448} - NSQuotedKeystrokeBinding - - NSRepeatCountBinding - - NSScrollAnimationEnabled - - NSScrollViewShouldScrollUnderTitlebar - - NSTableView Columns v2 KeyBingingTable - - YnBsaXN0MDDUAQIDBAUGNjdYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS - AAGGoK4HCA8aGxwdHh8gJjAxMlUkbnVsbNIJCgsOWk5TLm9iamVjdHNWJGNsYXNzogwN - gAKACoAN0xAJChEVGVdOUy5rZXlzoxITFIADgASABaMWFxiABoAHgAiACVpJZGVudGlm - aWVyVVdpZHRoVkhpZGRlblEwI0BowAAAAAAACNIhIiMkWiRjbGFzc25hbWVYJGNsYXNz - ZXNcTlNEaWN0aW9uYXJ5oiMlWE5TT2JqZWN00xAJCicrGaMSExSAA4AEgAWjLC0YgAuA - DIAIgAlRMSNAdKGdsi0OVtIhIjM0Xk5TTXV0YWJsZUFycmF5ozM1JVdOU0FycmF5XxAP - TlNLZXllZEFyY2hpdmVy0Tg5VUFycmF5gAEACAARABoAIwAtADIANwBGAEwAUQBcAGMA - ZgBoAGoAbABzAHsAfwCBAIMAhQCJAIsAjQCPAJEAnACiAKkAqwC0ALUAugDFAM4A2wDe - AOcA7gDyAPQA9gD4APwA/gEAAQIBBAEGAQ8BFAEjAScBLwFBAUQBSgAAAAAAAAIBAAAA - AAAAADoAAAAAAAAAAAAAAAAAAAFM - - NSTableView Sort Ordering v2 KeyBingingTable - - YnBsaXN0MDDUAQIDBAUGFBVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS - AAGGoKMHCA1VJG51bGzSCQoLDFpOUy5vYmplY3RzViRjbGFzc6CAAtIODxARWiRjbGFz - c25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjEBITV05TQXJyYXlYTlNPYmplY3Rf - EA9OU0tleWVkQXJjaGl2ZXLRFhdVQXJyYXmAAQgRGiMtMjc7QUZRWFlbYGt0g4ePmKqt - swAAAAAAAAEBAAAAAAAAABgAAAAAAAAAAAAAAAAAAAC1 - - NSTableView Supports v2 KeyBingingTable - - NSToolbar Configuration com.apple.NSColorPanel - - TB Is Shown - 1 - - NSWindow Frame SharedPreferences - 569 282 1016 512 0 0 1920 1080 - NSWindow Frame iTerm Window 0 - 1920 -160 1920 1080 1920 -160 1920 1080 - NSWindow Frame iTerm Window 1 - 0 0 1920 1080 0 0 1920 1080 - NSWindow Frame iTerm Window 2 - 268 14 650 527 0 0 1920 1080 - New Bookmarks - - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Location - - Blinking Cursor - - Blur - - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Bound Hosts - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - - Cursor Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Cursor Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Description - Default - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Guid - C0FA1836-5A6D-46D9-9D1F-C4BF6FEF9044 - Has Hotkey - - Horizontal Spacing - 1 - Idle Code - 0 - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0x2a-0x200000 - - Action - 12 - Text - * - - 0x2b-0x200000 - - Action - 12 - Text - + - - 0x2d-0x200000 - - Action - 12 - Text - - - - 0x2d-0x40000 - - Action - 11 - Text - 0x1f - - 0x2e-0x200000 - - Action - 12 - Text - . - - 0x2f-0x200000 - - Action - 12 - Text - / - - 0x3-0x200000 - - Action - 11 - Text - 0xd - - 0x30-0x200000 - - Action - 12 - Text - 0 - - 0x31-0x200000 - - Action - 12 - Text - 1 - - 0x32-0x200000 - - Action - 12 - Text - 2 - - 0x32-0x40000 - - Action - 11 - Text - 0x00 - - 0x33-0x200000 - - Action - 12 - Text - 3 - - 0x33-0x40000 - - Action - 11 - Text - 0x1b - - 0x34-0x200000 - - Action - 12 - Text - 4 - - 0x34-0x40000 - - Action - 11 - Text - 0x1c - - 0x35-0x200000 - - Action - 12 - Text - 5 - - 0x35-0x40000 - - Action - 11 - Text - 0x1d - - 0x36-0x200000 - - Action - 12 - Text - 6 - - 0x36-0x40000 - - Action - 11 - Text - 0x1e - - 0x37-0x200000 - - Action - 12 - Text - 7 - - 0x37-0x40000 - - Action - 11 - Text - 0x1f - - 0x38-0x200000 - - Action - 12 - Text - 8 - - 0x38-0x40000 - - Action - 11 - Text - 0x7f - - 0x39-0x200000 - - Action - 12 - Text - 9 - - 0x7f-0x100000 - - Action - 11 - Text - 0x15 - - 0x7f-0x80000 - - Action - 11 - Text - 0x1b 0x7f - - 0xf700-0x220000 - - Action - 10 - Text - [1;2A - - 0xf700-0x240000 - - Action - 10 - Text - [1;5A - - 0xf700-0x260000 - - Action - 10 - Text - [1;6A - - 0xf701-0x220000 - - Action - 10 - Text - [1;2B - - 0xf701-0x240000 - - Action - 10 - Text - [1;5B - - 0xf701-0x260000 - - Action - 10 - Text - [1;6B - - 0xf702-0x220000 - - Action - 10 - Text - [1;2D - - 0xf702-0x240000 - - Action - 10 - Text - [1;5D - - 0xf702-0x260000 - - Action - 10 - Text - [1;6D - - 0xf702-0x280000 - - Action - 10 - Text - b - - 0xf703-0x220000 - - Action - 10 - Text - [1;2C - - 0xf703-0x240000 - - Action - 10 - Text - [1;5C - - 0xf703-0x260000 - - Action - 10 - Text - [1;6C - - 0xf703-0x280000 - - Action - 10 - Text - f - - 0xf704-0x20000 - - Action - 10 - Text - [1;2P - - 0xf705-0x20000 - - Action - 10 - Text - [1;2Q - - 0xf706-0x20000 - - Action - 10 - Text - [1;2R - - 0xf707-0x20000 - - Action - 10 - Text - [1;2S - - 0xf708-0x20000 - - Action - 10 - Text - [15;2~ - - 0xf709-0x20000 - - Action - 10 - Text - [17;2~ - - 0xf70a-0x20000 - - Action - 10 - Text - [18;2~ - - 0xf70b-0x20000 - - Action - 10 - Text - [19;2~ - - 0xf70c-0x20000 - - Action - 10 - Text - [20;2~ - - 0xf70d-0x20000 - - Action - 10 - Text - [21;2~ - - 0xf70e-0x20000 - - Action - 10 - Text - [23;2~ - - 0xf70f-0x20000 - - Action - 10 - Text - [24;2~ - - 0xf728-0x0 - - Action - 11 - Text - 0x4 - - 0xf728-0x80000 - - Action - 10 - Text - d - - 0xf729-0x20000 - - Action - 10 - Text - [1;2H - - 0xf729-0x40000 - - Action - 10 - Text - [1;5H - - 0xf72b-0x20000 - - Action - 10 - Text - [1;2F - - 0xf72b-0x40000 - - Action - 10 - Text - [1;5F - - 0xf739-0x0 - - Action - 13 - Text - - - - Mouse Reporting - - Name - Dark - Non Ascii Font - Monaco 12 - Non-ASCII Anti Aliased - - Normal Font - MesloLGMForPowerline-Regular 12 - Option Key Sends - 0 - Prompt Before Closing 2 - - Right Option Key Sends - 0 - Rows - 25 - Screen - -1 - Scrollback Lines - 10000 - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Send Code When Idle - - Shortcut - - Silence Bell - - Sync Title - - Tags - - Terminal Type - xterm-256color - Transparency - 0.0 - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Italic Font - - Use Non-ASCII Font - - Vertical Spacing - 1 - Visual Bell - - Window Type - 12 - Working Directory - /Users/blcsntb - - - NoSyncHaveRequestedFullDiskAccess - - NoSyncHaveWarnedAboutPasteConfirmationChange - - NoSyncInstallationId - 4C3B6B5A-2265-4526-AE25-86767DB027C8 - NoSyncNeverRemindPrefsChangesLostForFile - - NoSyncNeverRemindPrefsChangesLostForFile_selection - 0 - NoSyncPermissionToShowTip - - NoSyncTimeOfFirstLaunchOfVersionWithTip - 563644389.30083001 - OnlyWhenMoreTabs - - PointerActions - - Button,1,1,, - - Action - kContextMenuPointerAction - - Button,2,1,, - - Action - kPasteFromClipboardPointerAction - - Gesture,ThreeFingerSwipeDown,, - - Action - kPrevWindowPointerAction - - Gesture,ThreeFingerSwipeLeft,, - - Action - kPrevTabPointerAction - - Gesture,ThreeFingerSwipeRight,, - - Action - kNextTabPointerAction - - Gesture,ThreeFingerSwipeUp,, - - Action - kNextWindowPointerAction - - - PrefsCustomFolder - ~/mac-setup/iterm2 - PromptOnQuit - - SUEnableAutomaticChecks - - SUFeedAlternateAppNameKey - iTerm - SUFeedURL - https://iterm2.com/appcasts/final.xml?shard=90 - SUHasLaunchedBefore - - SULastCheckTime - 2018-11-26T01:26:50Z - SUSendProfileInfo - - ShowBookmarkName - - ShowFullScreenTabBar - - ShowNewOutputIndicator - - ShowPaneTitles - - StretchTabsToFillBar - - TabStyleWithAutomaticOption - 1 - TabViewType - 0 - UseBorder - - WindowNumber - - WordCharacters - /-+\~_. - findMode_iTerm - 0 - iTerm Version - 3.2.6 - - diff --git a/nvm/nvm b/nvm/nvm deleted file mode 100755 index cd8f6e1..0000000 --- a/nvm/nvm +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -source ~/mac-setup/lib - -load_nvm() { - if [ -d ~/.nvm ]; then - export NVM_DIR="$HOME/.nvm" - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm - else - export NVM_DIR= - fi -} - -load_nvm - -install() { - if [ ! -d ~/.nvm ]; then - log_installing nvm - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash - load_nvm - fi - log_installed $NVM_DIR -} - -uninstall() { - log_uninstalling nvm - rm -rf ~/.nvm -} - -$@ \ No newline at end of file diff --git a/rbenv/rbenv b/rbenv/rbenv deleted file mode 100755 index e1015fe..0000000 --- a/rbenv/rbenv +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -source ~/mac-setup/lib - -eval "$(rbenv init -)" - -install() { - if not_install rbenv; then - brew install rbenv - rbenv init - fi - - if [ $(which ruby) == '/usr/bin/ruby' ]; then - log_installing ruby - rbenv install 2.3.0 - rbenv local 2.3.0 - fi - verify ruby - verify gem - - if not_install pod; then - gem install cocoapods --quiet - fi - verify pod - - if not_install fastlane; then - gem install fastlane -NV --quiet - fi - verify fastlane -} - -$@ diff --git a/vscode/.vscode b/vscode/.vscode deleted file mode 100644 index a33fd54..0000000 --- a/vscode/.vscode +++ /dev/null @@ -1,5 +0,0 @@ -export PATH=/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:$PATH -export REACT_EDITOR=code - -alias vscode='code' -alias revscode='pgrep Electron | xargs kill && code' From b64b9cfde4b227bf6523b3daede81dfe073186dd Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Tue, 23 Apr 2019 17:12:17 +0700 Subject: [PATCH 05/36] Remove install npm lts --- .travis.yml | 4 +++- bin/install | 10 ++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6ac63bb..70e7258 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,7 @@ -os: osx +sudo: true language: objective-c +os: + - osx script: - ./bin/install cache: diff --git a/bin/install b/bin/install index 3e5daa4..149fb93 100755 --- a/bin/install +++ b/bin/install @@ -9,10 +9,9 @@ type brew # install nvm if [ ! -d ~/.nvm ]; then + export NVM_DIR= curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash fi -\. ~/.nvm/nvm.sh -nvm install --lts # brew cask install echo " @@ -46,13 +45,8 @@ echo " type pip3 pip3 install powerline-shell -# npm install -type npm -npm install -g yarn -npm install -g vmd - # install oh-my-zsh if [ ! -d ~/.oh-my-zsh ]; then git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh - sudo chsh -s ~/.homebrew/bin/zsh + sudo chsh -s ~/.homebrew/bin/zsh "$USER" fi From a39e724b25aca954f483427e1d29e6312a683d15 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Wed, 24 Apr 2019 01:09:03 +0700 Subject: [PATCH 06/36] Update ./bin/install --- .bashrc | 7 ++ .travis.yml | 8 +- .zshrc | 7 +- .zshrc.default | 103 ++++++++++++++++++ .../Preferences/com.googlecode.iterm2.plist | Bin 8504 -> 21768 bytes bin/init | 17 +++ bin/install | 69 +++++------- bin/link | 56 ++++++++++ fonts/fonts | 25 ----- 9 files changed, 215 insertions(+), 77 deletions(-) create mode 100644 .bashrc create mode 100644 .zshrc.default create mode 100755 bin/init create mode 100755 bin/link delete mode 100755 fonts/fonts diff --git a/.bashrc b/.bashrc new file mode 100644 index 0000000..9eaf296 --- /dev/null +++ b/.bashrc @@ -0,0 +1,7 @@ + +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion + +# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. +export PATH="$PATH:$HOME/.rvm/bin" diff --git a/.travis.yml b/.travis.yml index 70e7258..e42e355 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,9 +3,7 @@ language: objective-c os: - osx script: + - sudo chsh -s /bin/zsh "$USER" + - ./bin/init - ./bin/install -cache: - directories: - - /Applications - - $HOME/.homebrew - - $HOME/.nvm + - ./bin/link diff --git a/.zshrc b/.zshrc index 00070e3..aaf9e1b 100644 --- a/.zshrc +++ b/.zshrc @@ -48,8 +48,7 @@ function install_powerline_precmd() { install_powerline_precmd source $ZSH/oh-my-zsh.sh -source ~/.homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh -source ~/.homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh -fpath=(~/.homebrew/share/zsh-completions $fpath) +source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh +source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +fpath=(/usr/local/share/zsh-completions $fpath) -eval "$(rbenv init -)" diff --git a/.zshrc.default b/.zshrc.default new file mode 100644 index 0000000..a43e69a --- /dev/null +++ b/.zshrc.default @@ -0,0 +1,103 @@ +# If you come from bash you might have to change your $PATH. +# export PATH=$HOME/bin:/usr/local/bin:$PATH + +# Path to your oh-my-zsh installation. +export ZSH="/Users/blcsntb/.oh-my-zsh" + +# Set name of the theme to load --- if set to "random", it will +# load a random theme each time oh-my-zsh is loaded, in which case, +# to know which specific one was loaded, run: echo $RANDOM_THEME +# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes +ZSH_THEME="robbyrussell" + +# Set list of themes to pick from when loading at random +# Setting this variable when ZSH_THEME=random will cause zsh to load +# a theme from this variable instead of looking in ~/.oh-my-zsh/themes/ +# If set to an empty array, this variable will have no effect. +# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) + +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" + +# Uncomment the following line to use hyphen-insensitive completion. +# Case-sensitive completion must be off. _ and - will be interchangeable. +# HYPHEN_INSENSITIVE="true" + +# Uncomment the following line to disable bi-weekly auto-update checks. +# DISABLE_AUTO_UPDATE="true" + +# Uncomment the following line to change how often to auto-update (in days). +# export UPDATE_ZSH_DAYS=13 + +# Uncomment the following line to disable colors in ls. +# DISABLE_LS_COLORS="true" + +# Uncomment the following line to disable auto-setting terminal title. +# DISABLE_AUTO_TITLE="true" + +# Uncomment the following line to enable command auto-correction. +# ENABLE_CORRECTION="true" + +# Uncomment the following line to display red dots whilst waiting for completion. +# COMPLETION_WAITING_DOTS="true" + +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +# DISABLE_UNTRACKED_FILES_DIRTY="true" + +# Uncomment the following line if you want to change the command execution time +# stamp shown in the history command output. +# You can set one of the optional three formats: +# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" +# or set a custom format using the strftime function format specifications, +# see 'man strftime' for details. +# HIST_STAMPS="mm/dd/yyyy" + +# Would you like to use another custom folder than $ZSH/custom? +# ZSH_CUSTOM=/path/to/new-custom-folder + +# Which plugins would you like to load? +# Standard plugins can be found in ~/.oh-my-zsh/plugins/* +# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. +plugins=(git) + +source $ZSH/oh-my-zsh.sh +source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh +source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +fpath=(/usr/local/share/zsh-completions $fpath) + +# User configuration + +# export MANPATH="/usr/local/man:$MANPATH" + +# You may need to manually set your language environment +# export LANG=en_US.UTF-8 + +# Preferred editor for local and remote sessions +# if [[ -n $SSH_CONNECTION ]]; then +# export EDITOR='vim' +# else +# export EDITOR='mvim' +# fi + +# Compilation flags +# export ARCHFLAGS="-arch x86_64" + +# Set personal aliases, overriding those provided by oh-my-zsh libs, +# plugins, and themes. Aliases can be placed here, though oh-my-zsh +# users are encouraged to define aliases within the ZSH_CUSTOM folder. +# For a full list of active aliases, run `alias`. +# +# Example aliases +# alias zshconfig="mate ~/.zshrc" +# alias ohmyzsh="mate ~/.oh-my-zsh" + +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion + +# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. +export PATH="$PATH:$HOME/.rvm/bin" diff --git a/Library/Preferences/com.googlecode.iterm2.plist b/Library/Preferences/com.googlecode.iterm2.plist index 766d8d960dc61b58054b6816333fd25fbb9d0c8f..98056f8ead09cfbdce625bc1cd945ce07f331402 100644 GIT binary patch literal 21768 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 literal 8504 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 I;+JjwH@mUBd;kCd diff --git a/bin/init b/bin/init new file mode 100755 index 0000000..02c2f2f --- /dev/null +++ b/bin/init @@ -0,0 +1,17 @@ +#!/bin/bash +set -e + +# install oh-my-zsh +sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" + +# install brew +echo y | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + +# install nvm +curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash + +# install rvm +\curl -sSL https://get.rvm.io | bash -s stable --ruby + +# download fonts +[ -f ~/Library/Fonts/Meslo\ LG\ M\ Regular\ for\ Powerline.ttf ] || curl https://raw.githubusercontent.com/powerline/fonts/master/Meslo%20Slashed/Meslo%20LG%20M%20Regular%20for%20Powerline.ttf --output ~/Library/Fonts/Meslo\ LG\ M\ Regular\ for\ Powerline.ttf diff --git a/bin/install b/bin/install index 149fb93..3a02a53 100755 --- a/bin/install +++ b/bin/install @@ -1,52 +1,35 @@ #!/bin/bash set -e -# install brew -[ -d ~/.homebrew ] || mkdir ~/.homebrew -curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C ~/.homebrew -export PATH=$HOME/.homebrew/bin:$PATH -type brew +# load nvm +\. ~/.nvm/nvm.sh -# install nvm -if [ ! -d ~/.nvm ]; then - export NVM_DIR= - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash -fi +# load rvm +source /Users/blcsntb/.rvm/scripts/rvm -# brew cask install -echo " - alfred - android-studio - calibre - google-chrome - iterm2 - skype - slack - sourcetree - spectacle - spotify - visual-studio-code -" | xargs -L1 brew cask install +# verify +brew --version +nvm --version +rvm --version -# brew install -echo " - git - python - rbenv - tree - watchman - zsh - zsh-autosuggestions - zsh-completions - zsh-syntax-highlighting -" | xargs brew install +type brew +brew cask install alfred +brew cask install android-studio +brew cask install calibre +brew cask install google-chrome +brew cask install iterm2 +brew cask install skype +brew cask install slack +brew cask install sourcetree +brew cask install spectacle +brew cask install spotify +brew cask install visual-studio-code +brew install python +brew install tree +brew install watchman +brew install zsh-autosuggestions +brew install zsh-completions +brew install zsh-syntax-highlighting -# pip3 install type pip3 pip3 install powerline-shell - -# install oh-my-zsh -if [ ! -d ~/.oh-my-zsh ]; then - git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh - sudo chsh -s ~/.homebrew/bin/zsh "$USER" -fi diff --git a/bin/link b/bin/link new file mode 100755 index 0000000..974df8c --- /dev/null +++ b/bin/link @@ -0,0 +1,56 @@ +#!/bin/bash +set -e + +if [ ! "$CI" ]; then + DOTFILES_DIR=~/.dotfiles +else + DOTFILES_DIR=~/mac-setup +fi + +# bashrc +[ -f ~/.bashrc ] && rm ~/.bashrc +ln -s $DOTFILES_DIR/.bashrc ~ + +# zshrc +[ -f ~/.zshrc ] && rm ~/.zshrc +ln -s $DOTFILES_DIR/.zshrc ~ + +# vimrc +[ -f ~/.vimrc ] && rm ~/.vimrc +ln -s $DOTFILES_DIR/.vimrc ~ + +# gemrc +[ -f ~/.gemrc ] && rm ~/.gemrc +ln -s $DOTFILES_DIR/.gemrc ~ + +# vmdrc +[ -f ~/.vmdrc ] && rm ~/.vmdrc +ln -s $DOTFILES_DIR/.vmdrc ~ + +# gitignore_global +[ -f ~/.gitignore_global ] && rm ~/.gitignore_global +ln -s $DOTFILES_DIR/.gitignore_global ~ + +# powerline-shell +DIR=.config/powerline-shell +mkdir -p ~/$DIR +[ -f ~/$DIR/config.json ] && rm ~/$DIR/config.json +ln -s $DOTFILES_DIR/$DIR/config.json ~/$DIR + +# iterm2 +DIR=Library/Preferences +cp $DOTFILES_DIR/$DIR/com.googlecode.iterm2.plist ~/$DIR + +# spectacle +DIR="Library/Application Support/Spectacle" +mkdir -p "$HOME/$DIR" +[ -f "$HOME/$DIR/Shortcuts.json" ] && rm "$HOME/$DIR/Shortcuts.json" +ln -s "$DOTFILES_DIR/$DIR/Shortcuts.json" "$HOME/$DIR" + +# vscode +DIR="Library/Application Support/Code/User" +mkdir -p "$HOME/$DIR" +[ -f "$HOME/$DIR/settings.json" ] && rm "$HOME/$DIR/settings.json" +[ -f "$HOME/$DIR/keybindings.json" ] && rm "$HOME/$DIR/keybindings.json" +ln -s "$DOTFILES_DIR/$DIR/settings.json" "$HOME/$DIR" +ln -s "$DOTFILES_DIR/$DIR/keybindings.json" "$HOME/$DIR" diff --git a/fonts/fonts b/fonts/fonts deleted file mode 100755 index b0be82e..0000000 --- a/fonts/fonts +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -source ~/mac-setup/lib - -cd ~/Library/Fonts - -font_name="Meslo LG M Regular for Powerline.ttf" - -install() { - if [ ! -f "$font_name" ]; then - log_installing "font $font_name" - curl https://raw.githubusercontent.com/powerline/fonts/master/Meslo%20Slashed/Meslo%20LG%20M%20Regular%20for%20Powerline.ttf \ - --output "$font_name" \ - --silent - fi -} - -uninstall() { - if [ -f "$font_name" ]; then - log_uninstalling "font $font_name" - rm "$font_name" - fi -} - -$@ From ff6996f814a614aa21af3221588dfce58e9fc2f8 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Wed, 24 Apr 2019 01:43:35 +0700 Subject: [PATCH 07/36] Add z, fix install oh-my-zsh on travis --- .travis.yml | 1 - .zshrc | 1 + bin/init | 10 +++++++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index e42e355..de1ce2b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,6 @@ language: objective-c os: - osx script: - - sudo chsh -s /bin/zsh "$USER" - ./bin/init - ./bin/install - ./bin/link diff --git a/.zshrc b/.zshrc index aaf9e1b..db29368 100644 --- a/.zshrc +++ b/.zshrc @@ -52,3 +52,4 @@ source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh fpath=(/usr/local/share/zsh-completions $fpath) +. ~/.zrupa/z.sh diff --git a/bin/init b/bin/init index 02c2f2f..b0cfcd4 100755 --- a/bin/init +++ b/bin/init @@ -2,7 +2,15 @@ set -e # install oh-my-zsh -sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" +if [ ! -d ~/.oh-my-zsh ]; then + git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh + sudo chsh -s /bin/zsh "$USER" +fi + +# clone z +if [ ! -d ~/.zrupa ]; then + git clone https://github.com/rupa/z ~/.zrupa +fi # install brew echo y | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" From 2521cea577dd2386e2a8ee77003c539380b74c56 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Wed, 24 Apr 2019 08:41:20 +0700 Subject: [PATCH 08/36] Fix wrong path rvm --- bin/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/install b/bin/install index 3a02a53..59eac06 100755 --- a/bin/install +++ b/bin/install @@ -5,7 +5,7 @@ set -e \. ~/.nvm/nvm.sh # load rvm -source /Users/blcsntb/.rvm/scripts/rvm +source ~/.rvm/scripts/rvm # verify brew --version From d580a018ca9d69e585990a8241b393ee632e1703 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Wed, 24 Apr 2019 08:42:44 +0700 Subject: [PATCH 09/36] Fix wrong dotfiles directory on travis ci --- bin/link | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/link b/bin/link index 974df8c..0842379 100755 --- a/bin/link +++ b/bin/link @@ -4,7 +4,7 @@ set -e if [ ! "$CI" ]; then DOTFILES_DIR=~/.dotfiles else - DOTFILES_DIR=~/mac-setup + DOTFILES_DIR=~/blcsntb/mac-setup fi # bashrc From fb89f5d99c590c1a401a87627c711ceff5333b34 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Wed, 24 Apr 2019 13:24:06 +0700 Subject: [PATCH 10/36] Add dotfiles.sh --- .zshrc | 10 +++- bin/init | 25 --------- bin/install | 35 ------------ bin/link | 56 ------------------ dotfiles.sh | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 166 insertions(+), 119 deletions(-) delete mode 100755 bin/init delete mode 100755 bin/install delete mode 100755 bin/link create mode 100644 dotfiles.sh diff --git a/.zshrc b/.zshrc index db29368..71079c3 100644 --- a/.zshrc +++ b/.zshrc @@ -22,6 +22,9 @@ export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion +# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. +export PATH="$PATH:$HOME/.rvm/bin" + alias mac='~/mac-setup/mac-setup' alias mac-update='mac all && source ~/.zshrc' alias emulator=$ANDROID_HOME/tools/emulator @@ -48,8 +51,9 @@ function install_powerline_precmd() { install_powerline_precmd source $ZSH/oh-my-zsh.sh -source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh -source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh -fpath=(/usr/local/share/zsh-completions $fpath) +source ~/.dotfiles/dotfiles.sh +source ~/.homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh +source ~/.homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +fpath=(~/.homebrew/share/zsh-completions $fpath) . ~/.zrupa/z.sh diff --git a/bin/init b/bin/init deleted file mode 100755 index b0cfcd4..0000000 --- a/bin/init +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -set -e - -# install oh-my-zsh -if [ ! -d ~/.oh-my-zsh ]; then - git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh - sudo chsh -s /bin/zsh "$USER" -fi - -# clone z -if [ ! -d ~/.zrupa ]; then - git clone https://github.com/rupa/z ~/.zrupa -fi - -# install brew -echo y | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - -# install nvm -curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash - -# install rvm -\curl -sSL https://get.rvm.io | bash -s stable --ruby - -# download fonts -[ -f ~/Library/Fonts/Meslo\ LG\ M\ Regular\ for\ Powerline.ttf ] || curl https://raw.githubusercontent.com/powerline/fonts/master/Meslo%20Slashed/Meslo%20LG%20M%20Regular%20for%20Powerline.ttf --output ~/Library/Fonts/Meslo\ LG\ M\ Regular\ for\ Powerline.ttf diff --git a/bin/install b/bin/install deleted file mode 100755 index 59eac06..0000000 --- a/bin/install +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -set -e - -# load nvm -\. ~/.nvm/nvm.sh - -# load rvm -source ~/.rvm/scripts/rvm - -# verify -brew --version -nvm --version -rvm --version - -type brew -brew cask install alfred -brew cask install android-studio -brew cask install calibre -brew cask install google-chrome -brew cask install iterm2 -brew cask install skype -brew cask install slack -brew cask install sourcetree -brew cask install spectacle -brew cask install spotify -brew cask install visual-studio-code -brew install python -brew install tree -brew install watchman -brew install zsh-autosuggestions -brew install zsh-completions -brew install zsh-syntax-highlighting - -type pip3 -pip3 install powerline-shell diff --git a/bin/link b/bin/link deleted file mode 100755 index 0842379..0000000 --- a/bin/link +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -set -e - -if [ ! "$CI" ]; then - DOTFILES_DIR=~/.dotfiles -else - DOTFILES_DIR=~/blcsntb/mac-setup -fi - -# bashrc -[ -f ~/.bashrc ] && rm ~/.bashrc -ln -s $DOTFILES_DIR/.bashrc ~ - -# zshrc -[ -f ~/.zshrc ] && rm ~/.zshrc -ln -s $DOTFILES_DIR/.zshrc ~ - -# vimrc -[ -f ~/.vimrc ] && rm ~/.vimrc -ln -s $DOTFILES_DIR/.vimrc ~ - -# gemrc -[ -f ~/.gemrc ] && rm ~/.gemrc -ln -s $DOTFILES_DIR/.gemrc ~ - -# vmdrc -[ -f ~/.vmdrc ] && rm ~/.vmdrc -ln -s $DOTFILES_DIR/.vmdrc ~ - -# gitignore_global -[ -f ~/.gitignore_global ] && rm ~/.gitignore_global -ln -s $DOTFILES_DIR/.gitignore_global ~ - -# powerline-shell -DIR=.config/powerline-shell -mkdir -p ~/$DIR -[ -f ~/$DIR/config.json ] && rm ~/$DIR/config.json -ln -s $DOTFILES_DIR/$DIR/config.json ~/$DIR - -# iterm2 -DIR=Library/Preferences -cp $DOTFILES_DIR/$DIR/com.googlecode.iterm2.plist ~/$DIR - -# spectacle -DIR="Library/Application Support/Spectacle" -mkdir -p "$HOME/$DIR" -[ -f "$HOME/$DIR/Shortcuts.json" ] && rm "$HOME/$DIR/Shortcuts.json" -ln -s "$DOTFILES_DIR/$DIR/Shortcuts.json" "$HOME/$DIR" - -# vscode -DIR="Library/Application Support/Code/User" -mkdir -p "$HOME/$DIR" -[ -f "$HOME/$DIR/settings.json" ] && rm "$HOME/$DIR/settings.json" -[ -f "$HOME/$DIR/keybindings.json" ] && rm "$HOME/$DIR/keybindings.json" -ln -s "$DOTFILES_DIR/$DIR/settings.json" "$HOME/$DIR" -ln -s "$DOTFILES_DIR/$DIR/keybindings.json" "$HOME/$DIR" diff --git a/dotfiles.sh b/dotfiles.sh new file mode 100644 index 0000000..2ae3658 --- /dev/null +++ b/dotfiles.sh @@ -0,0 +1,159 @@ + +DOTFILES_DIR=~/.dotfiles + +install_oh_my_zsh() { + if [ ! -d ~/.oh-my-zsh ]; then + git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh + sudo chsh -s /bin/zsh "$USER" + fi +} + +install_homebrew() { + if ! type brew >/dev/null 2>&1; then + mkdir ~/.homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C ~/.homebrew + fi +} + +install_nvm() { + if ! type nvm >/dev/null 2>&1; then + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash + fi +} + +install_rvm() { + # if ! type rvm >/dev/null 2>&1; then + # \curl -sSL https://get.rvm.io | bash -s stable --ruby + # fi +} + +clone_z() { + if [ ! -d ~/.zrupa ]; then + git clone https://github.com/rupa/z ~/.zrupa + fi +} + +download_fonts() { + FONT_PATH="$HOME/Library/Fonts/Meslo LG M Regular for Powerline.ttf" + [ -f "$FONT_PATH" ] || curl https://raw.githubusercontent.com/powerline/fonts/master/Meslo%20Slashed/Meslo%20LG%20M%20Regular%20for%20Powerline.ttf --output "$FONT_PATH" +} + +brew_cask_install() { + casks=( + alfred + android-studio + calibre + google-chrome + iterm2 + skype + slack + sourcetree + spectacle + spotify + visual-studio-code + ) + for cask in "${casks[@]}"; do + brew cask install $cask || brew cask install $cask --force + done +} + +brew_install() { + brew install carthage + brew install python + brew install tree + brew install watchman + brew install zsh-autosuggestions + brew install zsh-completions + brew install zsh-syntax-highlighting +} + +nvm_install() { + nvm install --lts + npm install -g yarn + npm install -g vmd +} + +pip3_install() { + pip3 install powerline-shell +} + +gem_install() { + gem install cocoapods + gem install fastlane +} + +link_dotfiles() { + # bashrc + [ -f ~/.bashrc ] && rm ~/.bashrc + ln -s $DOTFILES_DIR/.bashrc ~ + + # zshrc + [ -f ~/.zshrc ] && rm ~/.zshrc + ln -s $DOTFILES_DIR/.zshrc ~ + + # vimrc + [ -f ~/.vimrc ] && rm ~/.vimrc + ln -s $DOTFILES_DIR/.vimrc ~ + + # gemrc + [ -f ~/.gemrc ] && rm ~/.gemrc + ln -s $DOTFILES_DIR/.gemrc ~ + + # vmdrc + [ -f ~/.vmdrc ] && rm ~/.vmdrc + ln -s $DOTFILES_DIR/.vmdrc ~ + + # gitignore_global + [ -f ~/.gitignore_global ] && rm ~/.gitignore_global + ln -s $DOTFILES_DIR/.gitignore_global ~ + + # powerline-shell + DIR=.config/powerline-shell + mkdir -p ~/$DIR + [ -f ~/$DIR/config.json ] && rm ~/$DIR/config.json + ln -s $DOTFILES_DIR/$DIR/config.json ~/$DIR + + # iterm2 + DIR=Library/Preferences + cp $DOTFILES_DIR/$DIR/com.googlecode.iterm2.plist ~/$DIR + + # spectacle + DIR="Library/Application Support/Spectacle" + mkdir -p "$HOME/$DIR" + [ -f "$HOME/$DIR/Shortcuts.json" ] && rm "$HOME/$DIR/Shortcuts.json" + ln -s "$DOTFILES_DIR/$DIR/Shortcuts.json" "$HOME/$DIR" + + # vscode + DIR="Library/Application Support/Code/User" + mkdir -p "$HOME/$DIR" + [ -f "$HOME/$DIR/settings.json" ] && rm "$HOME/$DIR/settings.json" + [ -f "$HOME/$DIR/keybindings.json" ] && rm "$HOME/$DIR/keybindings.json" + ln -s "$DOTFILES_DIR/$DIR/settings.json" "$HOME/$DIR" + ln -s "$DOTFILES_DIR/$DIR/keybindings.json" "$HOME/$DIR" +} + +dotfiles() { + install_oh_my_zsh + install_homebrew + install_nvm + clone_z + download_fonts + brew_cask_install + brew_install + pip3_install + nvm_install + link_dotfiles +} + +install_dotfiles() { + if [ ! -d "$DOTFILES_DIR" ]; then + git clone https://github.com/blcsntb/mac-setup "$DOTFILES_DIR" + fi + dotfiles +} + +update_dotfiles() { + if [ -d "$DOTFILES_DIR" ]; then + (cd "$DOTFILES_DIR"; git add . && git stash --quiet && git pull) + fi + dotfiles +} From 251ba66bf94dec8d95b85be4a9e07579384dd4c2 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Wed, 24 Apr 2019 23:45:13 +0700 Subject: [PATCH 11/36] Add shell functions --- .bashrc | 7 -- .functions/brew_cask_install.sh | 18 ++++ .functions/brew_install.sh | 10 ++ .functions/clone_z.sh | 6 ++ .functions/download_fonts.sh | 7 ++ .functions/gem_install.sh | 6 ++ .functions/install_homebrew.sh | 6 ++ .functions/install_nvm.sh | 6 ++ .functions/install_oh_my_zsh.sh | 7 ++ .functions/install_rbenv.sh | 3 + .functions/link_dotfiles.sh | 57 +++++++++++ .functions/macos.sh | 3 + .functions/npm_install.sh | 5 + .functions/pip3_install.sh | 3 + .functions/uninstal_rbenv.sh | 4 + .functions/uninstall_homebrew.sh | 4 + .functions/uninstall_nvm.sh | 3 + .functions/uninstall_rvm.sh | 4 + .gemrc | 2 +- .nvmrc | 1 + .ruby-version | 1 + .travis.yml | 5 +- .zshrc | 57 ++++++----- dotfiles.sh | 167 ++++--------------------------- mac-setup | 152 ---------------------------- 25 files changed, 209 insertions(+), 335 deletions(-) delete mode 100644 .bashrc create mode 100644 .functions/brew_cask_install.sh create mode 100644 .functions/brew_install.sh create mode 100644 .functions/clone_z.sh create mode 100644 .functions/download_fonts.sh create mode 100644 .functions/gem_install.sh create mode 100644 .functions/install_homebrew.sh create mode 100644 .functions/install_nvm.sh create mode 100644 .functions/install_oh_my_zsh.sh create mode 100644 .functions/install_rbenv.sh create mode 100644 .functions/link_dotfiles.sh create mode 100644 .functions/macos.sh create mode 100644 .functions/npm_install.sh create mode 100644 .functions/pip3_install.sh create mode 100644 .functions/uninstal_rbenv.sh create mode 100644 .functions/uninstall_homebrew.sh create mode 100644 .functions/uninstall_nvm.sh create mode 100644 .functions/uninstall_rvm.sh create mode 100644 .nvmrc create mode 100644 .ruby-version delete mode 100755 mac-setup diff --git a/.bashrc b/.bashrc deleted file mode 100644 index 9eaf296..0000000 --- a/.bashrc +++ /dev/null @@ -1,7 +0,0 @@ - -export NVM_DIR="$HOME/.nvm" -[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm -[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion - -# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. -export PATH="$PATH:$HOME/.rvm/bin" diff --git a/.functions/brew_cask_install.sh b/.functions/brew_cask_install.sh new file mode 100644 index 0000000..4f38654 --- /dev/null +++ b/.functions/brew_cask_install.sh @@ -0,0 +1,18 @@ +brew_cask_install() { + casks=( + alfred + android-studio + calibre + google-chrome + iterm2 + skype + slack + sourcetree + spectacle + spotify + visual-studio-code + ) + for cask in "${casks[@]}"; do + brew cask install $cask || brew cask install $cask --force + done +} \ No newline at end of file diff --git a/.functions/brew_install.sh b/.functions/brew_install.sh new file mode 100644 index 0000000..0743434 --- /dev/null +++ b/.functions/brew_install.sh @@ -0,0 +1,10 @@ +brew_install() { + brew install carthage + brew install python + brew install rbenv + brew install tree + brew install watchman + brew install zsh-autosuggestions + brew install zsh-completions + brew install zsh-syntax-highlighting +} \ No newline at end of file diff --git a/.functions/clone_z.sh b/.functions/clone_z.sh new file mode 100644 index 0000000..81acb00 --- /dev/null +++ b/.functions/clone_z.sh @@ -0,0 +1,6 @@ +clone_z() { + if [ -d ~/.zrupa ]; then + return + fi + git clone https://github.com/rupa/z ~/.zrupa +} \ No newline at end of file diff --git a/.functions/download_fonts.sh b/.functions/download_fonts.sh new file mode 100644 index 0000000..bde7c18 --- /dev/null +++ b/.functions/download_fonts.sh @@ -0,0 +1,7 @@ +download_fonts() { + FONT_PATH="$HOME/Library/Fonts/Meslo LG M Regular for Powerline.ttf" + if [ -f "$FONT_PATH" ]; then + return + fi + curl https://raw.githubusercontent.com/powerline/fonts/master/Meslo%20Slashed/Meslo%20LG%20M%20Regular%20for%20Powerline.ttf --output "$FONT_PATH" +} \ No newline at end of file diff --git a/.functions/gem_install.sh b/.functions/gem_install.sh new file mode 100644 index 0000000..1696674 --- /dev/null +++ b/.functions/gem_install.sh @@ -0,0 +1,6 @@ +gem_install() { + echo N | rbenv install $(cat ~/.ruby-version) + rbenv local $(cat ~/.ruby-version) + gem install cocoapods + gem install fastlane +} \ No newline at end of file diff --git a/.functions/install_homebrew.sh b/.functions/install_homebrew.sh new file mode 100644 index 0000000..bb0d4ef --- /dev/null +++ b/.functions/install_homebrew.sh @@ -0,0 +1,6 @@ +install_homebrew() { + if type brew >/dev/null 2>&1; then + return + fi + mkdir ~/.homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C ~/.homebrew +} \ No newline at end of file diff --git a/.functions/install_nvm.sh b/.functions/install_nvm.sh new file mode 100644 index 0000000..80dda9e --- /dev/null +++ b/.functions/install_nvm.sh @@ -0,0 +1,6 @@ +install_nvm() { + if type nvm >/dev/null 2>&1; then + return + fi + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash +} \ No newline at end of file diff --git a/.functions/install_oh_my_zsh.sh b/.functions/install_oh_my_zsh.sh new file mode 100644 index 0000000..d9705a6 --- /dev/null +++ b/.functions/install_oh_my_zsh.sh @@ -0,0 +1,7 @@ +install_oh_my_zsh() { + if [ -d ~/.oh-my-zsh ]; then + return + fi + git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh + sudo chsh -s /bin/zsh "$USER" +} \ No newline at end of file diff --git a/.functions/install_rbenv.sh b/.functions/install_rbenv.sh new file mode 100644 index 0000000..032332c --- /dev/null +++ b/.functions/install_rbenv.sh @@ -0,0 +1,3 @@ +install_rbenv() { + brew install rbenv +} \ No newline at end of file diff --git a/.functions/link_dotfiles.sh b/.functions/link_dotfiles.sh new file mode 100644 index 0000000..f5466c4 --- /dev/null +++ b/.functions/link_dotfiles.sh @@ -0,0 +1,57 @@ +link_dotfiles() { + if [ -z "$DOTFILES_DIR" ]; then + DOTFILES_DIR=~/.dotfiles + fi + + # zshrc + [ -f ~/.zshrc ] && rm ~/.zshrc + ln -s $DOTFILES_DIR/.zshrc ~ + + # vimrc + [ -f ~/.vimrc ] && rm ~/.vimrc + ln -s $DOTFILES_DIR/.vimrc ~ + + # ruby-version + [ -f ~/.ruby-version ] && rm ~/.ruby-version + ln -s $DOTFILES_DIR/.ruby-version ~ + + # gemrc + [ -f ~/.gemrc ] && rm ~/.gemrc + ln -s $DOTFILES_DIR/.gemrc ~ + + # nvmrc + [ -f ~/.nvmrc ] && rm ~/.nvmrc + ln -s $DOTFILES_DIR/.nvmrc ~ + + # vmdrc + [ -f ~/.vmdrc ] && rm ~/.vmdrc + ln -s $DOTFILES_DIR/.vmdrc ~ + + # gitignore_global + [ -f ~/.gitignore_global ] && rm ~/.gitignore_global + ln -s $DOTFILES_DIR/.gitignore_global ~ + + # powerline-shell + DIR=.config/powerline-shell + mkdir -p ~/$DIR + [ -f ~/$DIR/config.json ] && rm ~/$DIR/config.json + ln -s $DOTFILES_DIR/$DIR/config.json ~/$DIR + + # iterm2 + DIR=Library/Preferences + cp $DOTFILES_DIR/$DIR/com.googlecode.iterm2.plist ~/$DIR + + # spectacle + DIR="Library/Application Support/Spectacle" + mkdir -p "$HOME/$DIR" + [ -f "$HOME/$DIR/Shortcuts.json" ] && rm "$HOME/$DIR/Shortcuts.json" + ln -s "$DOTFILES_DIR/$DIR/Shortcuts.json" "$HOME/$DIR" + + # vscode + DIR="Library/Application Support/Code/User" + mkdir -p "$HOME/$DIR" + [ -f "$HOME/$DIR/settings.json" ] && rm "$HOME/$DIR/settings.json" + [ -f "$HOME/$DIR/keybindings.json" ] && rm "$HOME/$DIR/keybindings.json" + ln -s "$DOTFILES_DIR/$DIR/settings.json" "$HOME/$DIR" + ln -s "$DOTFILES_DIR/$DIR/keybindings.json" "$HOME/$DIR" +} \ No newline at end of file diff --git a/.functions/macos.sh b/.functions/macos.sh new file mode 100644 index 0000000..fe61e50 --- /dev/null +++ b/.functions/macos.sh @@ -0,0 +1,3 @@ +macos() { + defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false +} \ No newline at end of file diff --git a/.functions/npm_install.sh b/.functions/npm_install.sh new file mode 100644 index 0000000..e398407 --- /dev/null +++ b/.functions/npm_install.sh @@ -0,0 +1,5 @@ +npm_install() { + nvm install $(cat ~/.nvmrc) + npm install -g yarn + npm install -g vmd +} \ No newline at end of file diff --git a/.functions/pip3_install.sh b/.functions/pip3_install.sh new file mode 100644 index 0000000..299c38f --- /dev/null +++ b/.functions/pip3_install.sh @@ -0,0 +1,3 @@ +pip3_install() { + pip3 install powerline-shell +} \ No newline at end of file diff --git a/.functions/uninstal_rbenv.sh b/.functions/uninstal_rbenv.sh new file mode 100644 index 0000000..6047b60 --- /dev/null +++ b/.functions/uninstal_rbenv.sh @@ -0,0 +1,4 @@ +uninstall_rbenv() { + rm -rf `rbenv root` + brew uninstall rbenv +} \ No newline at end of file diff --git a/.functions/uninstall_homebrew.sh b/.functions/uninstall_homebrew.sh new file mode 100644 index 0000000..46884c6 --- /dev/null +++ b/.functions/uninstall_homebrew.sh @@ -0,0 +1,4 @@ +uninstall_homebrew() { + echo y | ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)" + for d in /usr/local/*; do sudo rm -rf $d; done +} \ No newline at end of file diff --git a/.functions/uninstall_nvm.sh b/.functions/uninstall_nvm.sh new file mode 100644 index 0000000..b6c57fe --- /dev/null +++ b/.functions/uninstall_nvm.sh @@ -0,0 +1,3 @@ +uninstall_nvm() { + rm -rf ~/.nvm +} \ No newline at end of file diff --git a/.functions/uninstall_rvm.sh b/.functions/uninstall_rvm.sh new file mode 100644 index 0000000..e32dc9d --- /dev/null +++ b/.functions/uninstall_rvm.sh @@ -0,0 +1,4 @@ +uninstall_rvm() { + echo yes | rvm implode + rm -rf ~/.rvm +} \ No newline at end of file diff --git a/.gemrc b/.gemrc index 2bf7755..154cd47 100644 --- a/.gemrc +++ b/.gemrc @@ -1 +1 @@ -echo "gem: --no-document" +gem: --no-document diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..1be7c05 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v10.15.3 \ No newline at end of file diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..e70b452 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +2.6.0 diff --git a/.travis.yml b/.travis.yml index de1ce2b..d5fbd59 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,5 @@ language: objective-c os: - osx script: - - ./bin/init - - ./bin/install - - ./bin/link + - curl https://raw.githubusercontent.com/blcsntb/mac-setup/dotfiles/dotfiles.sh | bash + - install_dotfiles diff --git a/.zshrc b/.zshrc index 71079c3..2959b08 100644 --- a/.zshrc +++ b/.zshrc @@ -10,23 +10,20 @@ export PATH=$HOME/.homebrew/bin:$PATH export PATH=/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:$PATH export REACT_EDITOR=code -export JAVA_HOME=`/usr/libexec/java_home -v 1.8` -export PATH=$JAVA_HOME/bin:$PATH +# export JAVA_HOME=`/usr/libexec/java_home -v 1.8` +# export PATH=$JAVA_HOME/bin:$PATH export ANDROID_HOME=$HOME/Library/Android/sdk export PATH=$ANDROID_HOME/tools:$PATH export PATH=$ANDROID_HOME/tools/bin:$PATH export PATH=$ANDROID_HOME/platform-tools:$PATH -export NVM_DIR="$HOME/.nvm" -[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm -[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion +if [ -d ~/.nvm ]; then + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm + [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion +fi -# Add RVM to PATH for scripting. Make sure this is the last PATH variable change. -export PATH="$PATH:$HOME/.rvm/bin" - -alias mac='~/mac-setup/mac-setup' -alias mac-update='mac all && source ~/.zshrc' alias emulator=$ANDROID_HOME/tools/emulator alias showFiles='defaults write com.apple.finder AppleShowAllFiles YES && killall Finder' alias hideFiles='defaults write com.apple.finder AppleShowAllFiles NO && killall Finder' @@ -37,23 +34,31 @@ alias gff='git flow feature' alias vscode='code' alias revscode='pgrep Electron | xargs kill && code' -function powerline_precmd() { - PS1="$(powerline-shell --shell zsh $?)" -} -function install_powerline_precmd() { - for s in "${precmd_functions[@]}"; do - if [ "$s" = "powerline_precmd" ]; then - return - fi - done - precmd_functions+=(powerline_precmd) -} -install_powerline_precmd +if type powerline-shell >/dev/null 2>&1; then + function powerline_precmd() { + PS1="$(powerline-shell --shell zsh $?)" + } + function install_powerline_precmd() { + for s in "${precmd_functions[@]}"; do + if [ "$s" = "powerline_precmd" ]; then + return + fi + done + precmd_functions+=(powerline_precmd) + } + install_powerline_precmd +fi source $ZSH/oh-my-zsh.sh source ~/.dotfiles/dotfiles.sh -source ~/.homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh -source ~/.homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh -fpath=(~/.homebrew/share/zsh-completions $fpath) +if [ -d ~/.homebrew/share ]; then + source ~/.homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh + source ~/.homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh + fpath=(~/.homebrew/share/zsh-completions $fpath) +fi + +[ -d ~/.zrupa ] && . ~/.zrupa/z.sh -. ~/.zrupa/z.sh +if type rbenv >/dev/null 2>&1; then + eval "$(rbenv init -)" +fi diff --git a/dotfiles.sh b/dotfiles.sh index 2ae3658..a50c0a9 100644 --- a/dotfiles.sh +++ b/dotfiles.sh @@ -1,159 +1,34 @@ -DOTFILES_DIR=~/.dotfiles +export DOTFILES_DIR=~/.dotfiles -install_oh_my_zsh() { - if [ ! -d ~/.oh-my-zsh ]; then - git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh - sudo chsh -s /bin/zsh "$USER" - fi -} - -install_homebrew() { - if ! type brew >/dev/null 2>&1; then - mkdir ~/.homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C ~/.homebrew - fi -} - -install_nvm() { - if ! type nvm >/dev/null 2>&1; then - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash +clone_dotfiles_repo() { + if [ ! -d "$DOTFILES_DIR" ]; then + git clone -b dotfiles https://github.com/blcsntb/mac-setup "$DOTFILES_DIR" fi } -install_rvm() { - # if ! type rvm >/dev/null 2>&1; then - # \curl -sSL https://get.rvm.io | bash -s stable --ruby - # fi -} - -clone_z() { - if [ ! -d ~/.zrupa ]; then - git clone https://github.com/rupa/z ~/.zrupa +update_dotfiles_repo() { + if [ -d "$DOTFILES_DIR" ]; then + (cd "$DOTFILES_DIR"; git add . && git stash && git pull) fi } -download_fonts() { - FONT_PATH="$HOME/Library/Fonts/Meslo LG M Regular for Powerline.ttf" - [ -f "$FONT_PATH" ] || curl https://raw.githubusercontent.com/powerline/fonts/master/Meslo%20Slashed/Meslo%20LG%20M%20Regular%20for%20Powerline.ttf --output "$FONT_PATH" -} - -brew_cask_install() { - casks=( - alfred - android-studio - calibre - google-chrome - iterm2 - skype - slack - sourcetree - spectacle - spotify - visual-studio-code - ) - for cask in "${casks[@]}"; do - brew cask install $cask || brew cask install $cask --force - done -} - -brew_install() { - brew install carthage - brew install python - brew install tree - brew install watchman - brew install zsh-autosuggestions - brew install zsh-completions - brew install zsh-syntax-highlighting -} - -nvm_install() { - nvm install --lts - npm install -g yarn - npm install -g vmd -} - -pip3_install() { - pip3 install powerline-shell -} - -gem_install() { - gem install cocoapods - gem install fastlane -} - -link_dotfiles() { - # bashrc - [ -f ~/.bashrc ] && rm ~/.bashrc - ln -s $DOTFILES_DIR/.bashrc ~ - - # zshrc - [ -f ~/.zshrc ] && rm ~/.zshrc - ln -s $DOTFILES_DIR/.zshrc ~ - - # vimrc - [ -f ~/.vimrc ] && rm ~/.vimrc - ln -s $DOTFILES_DIR/.vimrc ~ - - # gemrc - [ -f ~/.gemrc ] && rm ~/.gemrc - ln -s $DOTFILES_DIR/.gemrc ~ - - # vmdrc - [ -f ~/.vmdrc ] && rm ~/.vmdrc - ln -s $DOTFILES_DIR/.vmdrc ~ - - # gitignore_global - [ -f ~/.gitignore_global ] && rm ~/.gitignore_global - ln -s $DOTFILES_DIR/.gitignore_global ~ - - # powerline-shell - DIR=.config/powerline-shell - mkdir -p ~/$DIR - [ -f ~/$DIR/config.json ] && rm ~/$DIR/config.json - ln -s $DOTFILES_DIR/$DIR/config.json ~/$DIR - - # iterm2 - DIR=Library/Preferences - cp $DOTFILES_DIR/$DIR/com.googlecode.iterm2.plist ~/$DIR - - # spectacle - DIR="Library/Application Support/Spectacle" - mkdir -p "$HOME/$DIR" - [ -f "$HOME/$DIR/Shortcuts.json" ] && rm "$HOME/$DIR/Shortcuts.json" - ln -s "$DOTFILES_DIR/$DIR/Shortcuts.json" "$HOME/$DIR" - - # vscode - DIR="Library/Application Support/Code/User" - mkdir -p "$HOME/$DIR" - [ -f "$HOME/$DIR/settings.json" ] && rm "$HOME/$DIR/settings.json" - [ -f "$HOME/$DIR/keybindings.json" ] && rm "$HOME/$DIR/keybindings.json" - ln -s "$DOTFILES_DIR/$DIR/settings.json" "$HOME/$DIR" - ln -s "$DOTFILES_DIR/$DIR/keybindings.json" "$HOME/$DIR" -} - -dotfiles() { +alias load_functions='for f in $DOTFILES_DIR/.functions/*; do source $f; done' +alias install_dotfiles=' + clone_dotfiles_repo + clone_z + download_fonts + link_dotfiles install_oh_my_zsh install_homebrew + install_rbenv install_nvm - clone_z - download_fonts - brew_cask_install + source ~/.zshrc + # brew_cask_install brew_install - pip3_install - nvm_install - link_dotfiles -} + pip3_install && source ~/.zshrc + gem_install + npm_install +' -install_dotfiles() { - if [ ! -d "$DOTFILES_DIR" ]; then - git clone https://github.com/blcsntb/mac-setup "$DOTFILES_DIR" - fi - dotfiles -} - -update_dotfiles() { - if [ -d "$DOTFILES_DIR" ]; then - (cd "$DOTFILES_DIR"; git add . && git stash --quiet && git pull) - fi - dotfiles -} +load_functions diff --git a/mac-setup b/mac-setup deleted file mode 100755 index 46fdec5..0000000 --- a/mac-setup +++ /dev/null @@ -1,152 +0,0 @@ -#!/bin/bash - ---python() { - install() { - if not_install python3; then - brew install python - fi - verify python3 - verify pip3 - - if not_install powerline-shell; then - pip3 install powerline-shell - fi - verify powerline-shell - } - uninstall() { - log_uninstalling python - rm -rf ~/Library/Python - } - $@ -} ---zsh() { - install() { - if [ ! -d ~/.oh-my-zsh ]; then - log_installing zsh - sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" - fi - - if [ ! -d ~/.zsh/zsh-autosuggestions ]; then - log_installing 'zsh-autosuggestions' - git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions - fi - - if [ ! -d ~/.zsh/zsh-syntax-highlighting ]; then - log_installing 'zsh-syntax-highlighting' - git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.zsh/zsh-syntax-highlighting - echo "source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc - fi - } - uninstall() { - if [ -d ~/.oh-my-zsh ]; then - log_uninstalling zsh - rm -rf ~/.oh-my-zsh - rm -rf ~/.zsh - rm ~/.zshrc* - fi - } - $@ -} ---iterm2() { - install() { - if [ ! -d /Applications/iTerm.app ]; then - log_installing iterm2 - brew cask install iterm2 - fi - } - $@ -} -config() { - vim() { - rm ~/.vimrc - ln -s ~/mac-setup/.vimrc ~/.vimrc - readlink ~/.vimrc - } - gitignore_global() { - rm ~/.gitignore_global - ln -s ~/mac-setup/.gitignore_global ~/.gitignore_global - readlink ~/.gitignore_global - } - zsh() { - rm ~/.zshrc - ln -s ~/mac-setup/.zshrc ~/.zshrc - readlink ~/.zshrc - } - powerline-shell() { - mkdir -p ~/.config/powerline-shell - rm ~/.config/powerline-shell/config.json - ln -s ~/mac-setup/powerline-shell/config.json ~/.config/powerline-shell/config.json - readlink ~/.config/powerline-shell/config.json - } - gem() { - rm ~/.gemrc - ln -s ~/mac-setup/.gemrc ~/.gemrc - readlink ~/.gemrc - } - vmd() { - rm ~/.vmdrc - ln -s ~/mac-setup/.vmdrc ~/.vmdrc - readlink ~/.vmdrc - } - iterm2() { - cp ~/mac-setup/iterm2/com.googlecode.iterm2.plist ~/Library/Preferences/com.googlecode.iterm2.plist - } - spectacle() { - mkdir -p ~/Library/Application\ Support/Spectacle - rm ~/Library/Application\ Support/Spectacle/Shortcuts.json - ln -s ~/mac-setup/spectacle/Shortcuts.json ~/Library/Application\ Support/Spectacle/Shortcuts.json - readlink ~/Library/Application\ Support/Spectacle/Shortcuts.json - } - vscode() { - if [ -d ~/Library/Application\ Support/Code/User ]; then - rm ~/Library/Application\ Support/Code/User/settings.json - rm ~/Library/Application\ Support/Code/User/keybindings.json - ln -s ~/mac-setup/vscode/settings.json ~/Library/Application\ Support/Code/User/settings.json - ln -s ~/mac-setup/vscode/keybindings.json ~/Library/Application\ Support/Code/User/keybindings.json - readlink ~/Library/Application\ Support/Code/User/*.json - fi - } - vim - gitignore_global - zsh - powerline-shell - gem - vmd - run fonts install - iterm2 - spectacle - vscode -} - -clone_or_pull() { - if [ -d ~/mac-setup ]; then - (cd ~/mac-setup; git add . && git stash --quiet && git pull) - else - git clone https://github.com/blcsntb/mac-setup ~/mac-setup - fi -} - -run() { - ~/mac-setup/$1/$@ -} - -all() { - run brew install - --python install - run rbenv install - run nvm install - if [ ! "$CI" ]; then - --zsh install - fi - --iterm2 install - config -} - -source ~/mac-setup/lib - -if [ "$1" == "all" ]; then - clone_or_pull - all -elif [ ! "$1" == "" ]; then - run $@ -fi From c1fe385b3051382ba05b85793a96730534130fa0 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 00:45:10 +0700 Subject: [PATCH 12/36] Fix build on travis ci --- .functions/npm_install.sh | 1 + .travis.yml | 16 ++++++++++++++-- dotfiles.sh | 7 +++---- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/.functions/npm_install.sh b/.functions/npm_install.sh index e398407..50342b0 100644 --- a/.functions/npm_install.sh +++ b/.functions/npm_install.sh @@ -1,5 +1,6 @@ npm_install() { nvm install $(cat ~/.nvmrc) + nvm alias default $(cat ~/.nvmrc) npm install -g yarn npm install -g vmd } \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index d5fbd59..632bd6f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,5 +3,17 @@ language: objective-c os: - osx script: - - curl https://raw.githubusercontent.com/blcsntb/mac-setup/dotfiles/dotfiles.sh | bash - - install_dotfiles + - git clone -b dotfiles https://github.com/blcsntb/mac-setup ~/.dotfiles + - source ~/.dotfiles/dotfiles.sh + - clone_z + - download_fonts + - link_dotfiles + - install_oh_my_zsh + - install_homebrew + - install_rbenv + - install_nvm + - source ~/.zshrc + - brew_install + - pip3_install && source ~/.zshrc + - gem_install + - npm_install diff --git a/dotfiles.sh b/dotfiles.sh index a50c0a9..39ddf10 100644 --- a/dotfiles.sh +++ b/dotfiles.sh @@ -13,7 +13,8 @@ update_dotfiles_repo() { fi } -alias load_functions='for f in $DOTFILES_DIR/.functions/*; do source $f; done' +for f in $DOTFILES_DIR/.functions/*; do source $f; done + alias install_dotfiles=' clone_dotfiles_repo clone_z @@ -29,6 +30,4 @@ alias install_dotfiles=' pip3_install && source ~/.zshrc gem_install npm_install -' - -load_functions +' \ No newline at end of file From ffcee9776d6c0764633481d27565c0b675f33f87 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 01:04:27 +0700 Subject: [PATCH 13/36] Change ruby version --- .ruby-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ruby-version b/.ruby-version index e70b452..6550da6 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.6.0 +2.4.3 \ No newline at end of file From 3567e4813b4ca5a519628ec2bb34d718336d9bf1 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 01:19:46 +0700 Subject: [PATCH 14/36] Remove alias dotfiles --- .functions/install_dotfiles.sh | 15 +++++++++++++++ .travis.yml | 13 +------------ dotfiles.sh | 17 ----------------- 3 files changed, 16 insertions(+), 29 deletions(-) create mode 100644 .functions/install_dotfiles.sh diff --git a/.functions/install_dotfiles.sh b/.functions/install_dotfiles.sh new file mode 100644 index 0000000..7800e75 --- /dev/null +++ b/.functions/install_dotfiles.sh @@ -0,0 +1,15 @@ +install_dotfiles() { + clone_z + download_fonts + link_dotfiles + install_oh_my_zsh + install_homebrew + install_rbenv + install_nvm + source ~/.zshrc + # brew_cask_install + brew_install + pip3_install && source ~/.zshrc + gem_install + npm_install +} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 632bd6f..f8872ac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,15 +5,4 @@ os: script: - git clone -b dotfiles https://github.com/blcsntb/mac-setup ~/.dotfiles - source ~/.dotfiles/dotfiles.sh - - clone_z - - download_fonts - - link_dotfiles - - install_oh_my_zsh - - install_homebrew - - install_rbenv - - install_nvm - - source ~/.zshrc - - brew_install - - pip3_install && source ~/.zshrc - - gem_install - - npm_install + - install_dotfiles diff --git a/dotfiles.sh b/dotfiles.sh index 39ddf10..1549274 100644 --- a/dotfiles.sh +++ b/dotfiles.sh @@ -14,20 +14,3 @@ update_dotfiles_repo() { } for f in $DOTFILES_DIR/.functions/*; do source $f; done - -alias install_dotfiles=' - clone_dotfiles_repo - clone_z - download_fonts - link_dotfiles - install_oh_my_zsh - install_homebrew - install_rbenv - install_nvm - source ~/.zshrc - # brew_cask_install - brew_install - pip3_install && source ~/.zshrc - gem_install - npm_install -' \ No newline at end of file From 31fb646e2fb44f33463a54ae2f003e06aab39c4e Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 01:27:24 +0700 Subject: [PATCH 15/36] Add function update_dotfiles --- .functions/link_dotfiles.sh | 4 +--- .functions/update_dotfiles.sh | 7 +++++++ dotfiles.sh | 19 ++++++------------- 3 files changed, 14 insertions(+), 16 deletions(-) create mode 100644 .functions/update_dotfiles.sh diff --git a/.functions/link_dotfiles.sh b/.functions/link_dotfiles.sh index f5466c4..da70c20 100644 --- a/.functions/link_dotfiles.sh +++ b/.functions/link_dotfiles.sh @@ -1,7 +1,5 @@ link_dotfiles() { - if [ -z "$DOTFILES_DIR" ]; then - DOTFILES_DIR=~/.dotfiles - fi + DOTFILES_DIR=~/.dotfiles # zshrc [ -f ~/.zshrc ] && rm ~/.zshrc diff --git a/.functions/update_dotfiles.sh b/.functions/update_dotfiles.sh new file mode 100644 index 0000000..ab62853 --- /dev/null +++ b/.functions/update_dotfiles.sh @@ -0,0 +1,7 @@ +update_dotfiles() { + DOTFILES_DIR=~/.dotfiles + if [ -d "$DOTFILES_DIR" ]; then + (cd "$DOTFILES_DIR"; git add . && git stash && git pull) + fi + install_dotfiles +} \ No newline at end of file diff --git a/dotfiles.sh b/dotfiles.sh index 1549274..fc7141e 100644 --- a/dotfiles.sh +++ b/dotfiles.sh @@ -1,16 +1,9 @@ - export DOTFILES_DIR=~/.dotfiles -clone_dotfiles_repo() { - if [ ! -d "$DOTFILES_DIR" ]; then - git clone -b dotfiles https://github.com/blcsntb/mac-setup "$DOTFILES_DIR" - fi -} - -update_dotfiles_repo() { - if [ -d "$DOTFILES_DIR" ]; then - (cd "$DOTFILES_DIR"; git add . && git stash && git pull) - fi -} +if [ ! -d "$DOTFILES_DIR" ]; then + git clone -b dotfiles https://github.com/blcsntb/mac-setup "$DOTFILES_DIR" +fi -for f in $DOTFILES_DIR/.functions/*; do source $f; done +for f in $DOTFILES_DIR/.functions/*; do + source $f +done From 5eab789a9619ef2c7f0afae31ed6f6387ccedb13 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 01:27:39 +0700 Subject: [PATCH 16/36] Change node version --- .nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nvmrc b/.nvmrc index 1be7c05..c18c439 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v10.15.3 \ No newline at end of file +v8.11.3 \ No newline at end of file From 8b80fcd84a0d11f80ca76d3f673911a7e7be0470 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 01:34:18 +0700 Subject: [PATCH 17/36] Change function to upgrade_dotfiles --- .functions/{update_dotfiles.sh => upgrade_dotfiles.sh} | 2 +- .travis.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) rename .functions/{update_dotfiles.sh => upgrade_dotfiles.sh} (87%) diff --git a/.functions/update_dotfiles.sh b/.functions/upgrade_dotfiles.sh similarity index 87% rename from .functions/update_dotfiles.sh rename to .functions/upgrade_dotfiles.sh index ab62853..1d021f3 100644 --- a/.functions/update_dotfiles.sh +++ b/.functions/upgrade_dotfiles.sh @@ -1,4 +1,4 @@ -update_dotfiles() { +upgrade_dotfiles() { DOTFILES_DIR=~/.dotfiles if [ -d "$DOTFILES_DIR" ]; then (cd "$DOTFILES_DIR"; git add . && git stash && git pull) diff --git a/.travis.yml b/.travis.yml index f8872ac..72b4665 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,7 @@ language: objective-c os: - osx script: - - git clone -b dotfiles https://github.com/blcsntb/mac-setup ~/.dotfiles + - curl https://raw.githubusercontent.com/blcsntb/mac-setup/dotfiles/dotfiles.sh | bash - source ~/.dotfiles/dotfiles.sh - install_dotfiles + - upgrade_dotfiles From 849f2ffac4f7eaf92bb8ad2103c563b54c69ee7f Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 01:34:28 +0700 Subject: [PATCH 18/36] Update README --- README.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 7ca29ca..06777d7 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,23 @@ [![Build Status](https://travis-ci.org/blcsntb/mac-setup.svg?branch=master)](https://travis-ci.org/blcsntb/mac-setup) -![](./iterm2.png) - # Getting Started -## Install - -Install the latest Xcode command line tools: +## Requirement ``` xcode-select --install ``` -Install *mac-setup* using curl +## Install ``` -curl https://raw.githubusercontent.com/blcsntb/mac-setup/master/mac-setup | bash -s all && source ~/.zshrc +curl https://raw.githubusercontent.com/blcsntb/mac-setup/dotfiles/dotfiles.sh | bash +source ~/.dotfiles/dotfiles.sh +install_dotfiles ``` -## Update +## Upgrade ``` -mac-update +upgrade_dotfiles ``` From f59e87f3821ab66d8e61537dd90236afd88b6230 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 01:37:11 +0700 Subject: [PATCH 19/36] Add newline for file --- .ruby-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ruby-version b/.ruby-version index 6550da6..35cee72 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.4.3 \ No newline at end of file +2.4.3 From 2dfda813a739fde46fde04ecd1b1916f478efbba Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 01:46:21 +0700 Subject: [PATCH 20/36] Add gem install xcode-install --- .functions/gem_install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.functions/gem_install.sh b/.functions/gem_install.sh index 1696674..625b93b 100644 --- a/.functions/gem_install.sh +++ b/.functions/gem_install.sh @@ -3,4 +3,5 @@ gem_install() { rbenv local $(cat ~/.ruby-version) gem install cocoapods gem install fastlane + gem install xcode-install } \ No newline at end of file From 952c1120cd15382f9dd9cba649e54cb8c291c713 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 02:07:48 +0700 Subject: [PATCH 21/36] Add brew_cask_install and macos --- .functions/install_dotfiles.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.functions/install_dotfiles.sh b/.functions/install_dotfiles.sh index 7800e75..e14a084 100644 --- a/.functions/install_dotfiles.sh +++ b/.functions/install_dotfiles.sh @@ -7,9 +7,10 @@ install_dotfiles() { install_rbenv install_nvm source ~/.zshrc - # brew_cask_install brew_install pip3_install && source ~/.zshrc gem_install npm_install -} \ No newline at end of file + brew_cask_install + macos +} From 0f3876e40ef8b8767991f6468236939841de1528 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 09:11:30 +0700 Subject: [PATCH 22/36] Handle exit code --- .functions/install_dotfiles.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.functions/install_dotfiles.sh b/.functions/install_dotfiles.sh index e14a084..b6a3a49 100644 --- a/.functions/install_dotfiles.sh +++ b/.functions/install_dotfiles.sh @@ -13,4 +13,5 @@ install_dotfiles() { npm_install brew_cask_install macos + return $? } From a431a2acca0c6fb7a7c10387fd2856553f700ce9 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 09:46:47 +0700 Subject: [PATCH 23/36] Revert handle exit code --- .functions/install_dotfiles.sh | 1 - .travis.yml | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.functions/install_dotfiles.sh b/.functions/install_dotfiles.sh index b6a3a49..e14a084 100644 --- a/.functions/install_dotfiles.sh +++ b/.functions/install_dotfiles.sh @@ -13,5 +13,4 @@ install_dotfiles() { npm_install brew_cask_install macos - return $? } diff --git a/.travis.yml b/.travis.yml index 72b4665..38e3a61 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,9 @@ sudo: true language: objective-c os: - osx -script: +install: - curl https://raw.githubusercontent.com/blcsntb/mac-setup/dotfiles/dotfiles.sh | bash - source ~/.dotfiles/dotfiles.sh - install_dotfiles +script: - upgrade_dotfiles From ce6c5966df5ca85dc9fa7cc5bcacd44483ca834d Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 12:00:39 +0700 Subject: [PATCH 24/36] Add shell function link_file --- .functions/link_dotfiles.sh | 67 ++++++++----------------------------- .functions/link_file.sh | 7 ++++ 2 files changed, 21 insertions(+), 53 deletions(-) create mode 100644 .functions/link_file.sh diff --git a/.functions/link_dotfiles.sh b/.functions/link_dotfiles.sh index da70c20..930b86f 100644 --- a/.functions/link_dotfiles.sh +++ b/.functions/link_dotfiles.sh @@ -1,55 +1,16 @@ link_dotfiles() { - DOTFILES_DIR=~/.dotfiles - - # zshrc - [ -f ~/.zshrc ] && rm ~/.zshrc - ln -s $DOTFILES_DIR/.zshrc ~ - - # vimrc - [ -f ~/.vimrc ] && rm ~/.vimrc - ln -s $DOTFILES_DIR/.vimrc ~ - - # ruby-version - [ -f ~/.ruby-version ] && rm ~/.ruby-version - ln -s $DOTFILES_DIR/.ruby-version ~ - - # gemrc - [ -f ~/.gemrc ] && rm ~/.gemrc - ln -s $DOTFILES_DIR/.gemrc ~ - - # nvmrc - [ -f ~/.nvmrc ] && rm ~/.nvmrc - ln -s $DOTFILES_DIR/.nvmrc ~ - - # vmdrc - [ -f ~/.vmdrc ] && rm ~/.vmdrc - ln -s $DOTFILES_DIR/.vmdrc ~ - - # gitignore_global - [ -f ~/.gitignore_global ] && rm ~/.gitignore_global - ln -s $DOTFILES_DIR/.gitignore_global ~ - - # powerline-shell - DIR=.config/powerline-shell - mkdir -p ~/$DIR - [ -f ~/$DIR/config.json ] && rm ~/$DIR/config.json - ln -s $DOTFILES_DIR/$DIR/config.json ~/$DIR - - # iterm2 - DIR=Library/Preferences - cp $DOTFILES_DIR/$DIR/com.googlecode.iterm2.plist ~/$DIR - - # spectacle - DIR="Library/Application Support/Spectacle" - mkdir -p "$HOME/$DIR" - [ -f "$HOME/$DIR/Shortcuts.json" ] && rm "$HOME/$DIR/Shortcuts.json" - ln -s "$DOTFILES_DIR/$DIR/Shortcuts.json" "$HOME/$DIR" - - # vscode - DIR="Library/Application Support/Code/User" - mkdir -p "$HOME/$DIR" - [ -f "$HOME/$DIR/settings.json" ] && rm "$HOME/$DIR/settings.json" - [ -f "$HOME/$DIR/keybindings.json" ] && rm "$HOME/$DIR/keybindings.json" - ln -s "$DOTFILES_DIR/$DIR/settings.json" "$HOME/$DIR" - ln -s "$DOTFILES_DIR/$DIR/keybindings.json" "$HOME/$DIR" + link_file .zshrc + link_file .vimrc + link_file .ruby-version + link_file .gemrc + link_file .nvmrc + link_file .vmdrc + link_file .gitignore_global + + link_file .config/powerline-shell/config.json + + link_file Library/Application\ Support/Spectacle + link_file Library/Application\ Support/Code/User/settings.json + link_file Library/Application\ Support/Code/User/keybindings.json + link_file Library/Preferences/com.googlecode.iterm2.plist } \ No newline at end of file diff --git a/.functions/link_file.sh b/.functions/link_file.sh new file mode 100644 index 0000000..8790ca1 --- /dev/null +++ b/.functions/link_file.sh @@ -0,0 +1,7 @@ +link_file() { + file="$1" + srcfile="$DOTFILES_DIR/$file" + desfile="$HOME/$file" + mkdir -p "$(dirname "$desfile")" + ln -f -s "$srcfile" "$desfile" +} \ No newline at end of file From dd5f49d645874bfc1804cc89c687982d7aba8c1c Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 13:06:52 +0700 Subject: [PATCH 25/36] Add shell function backup_vscode_extensions sync_vscode_extensions --- .config/vscode_extensions.txt | 7 +++++++ .functions/backup_vscode_extensions.sh | 3 +++ .functions/link_dotfiles.sh | 2 -- .functions/sync_vscode_extensions.sh | 3 +++ 4 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 .config/vscode_extensions.txt create mode 100644 .functions/backup_vscode_extensions.sh create mode 100644 .functions/sync_vscode_extensions.sh diff --git a/.config/vscode_extensions.txt b/.config/vscode_extensions.txt new file mode 100644 index 0000000..e07c923 --- /dev/null +++ b/.config/vscode_extensions.txt @@ -0,0 +1,7 @@ +dbaeumer.vscode-eslint +eamodio.gitlens +Orta.vscode-jest +ryanluker.vscode-coverage-gutters +shd101wyy.markdown-preview-enhanced +vscodevim.vim +vsmobile.vscode-react-native diff --git a/.functions/backup_vscode_extensions.sh b/.functions/backup_vscode_extensions.sh new file mode 100644 index 0000000..727eed0 --- /dev/null +++ b/.functions/backup_vscode_extensions.sh @@ -0,0 +1,3 @@ +backup_vscode_extensions() { + code --list-extensions > $DOTFILES_DIR/.config/vscode_extensions.txt +} \ No newline at end of file diff --git a/.functions/link_dotfiles.sh b/.functions/link_dotfiles.sh index 930b86f..cce5c9d 100644 --- a/.functions/link_dotfiles.sh +++ b/.functions/link_dotfiles.sh @@ -6,9 +6,7 @@ link_dotfiles() { link_file .nvmrc link_file .vmdrc link_file .gitignore_global - link_file .config/powerline-shell/config.json - link_file Library/Application\ Support/Spectacle link_file Library/Application\ Support/Code/User/settings.json link_file Library/Application\ Support/Code/User/keybindings.json diff --git a/.functions/sync_vscode_extensions.sh b/.functions/sync_vscode_extensions.sh new file mode 100644 index 0000000..e144cca --- /dev/null +++ b/.functions/sync_vscode_extensions.sh @@ -0,0 +1,3 @@ +syn_vscode_extensions() { + cat $DOTFILES_DIR/.config/vscode_extensions.txt | xargs -L1 code --install-extension +} \ No newline at end of file From 9e7bebbbe2d95cd733a48b8276c9d3593fe8433d Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 13:24:17 +0700 Subject: [PATCH 26/36] Add shell function for brew_cask_list --- .config/brew_cask_list.txt | 11 +++++++++++ .functions/backup_brew_cask_list.sh | 3 +++ .functions/brew_cask_install.sh | 18 ------------------ .functions/sync_brew_cast_list.sh | 6 ++++++ .functions/sync_vscode_extensions.sh | 2 +- 5 files changed, 21 insertions(+), 19 deletions(-) create mode 100644 .config/brew_cask_list.txt create mode 100644 .functions/backup_brew_cask_list.sh delete mode 100644 .functions/brew_cask_install.sh create mode 100644 .functions/sync_brew_cast_list.sh diff --git a/.config/brew_cask_list.txt b/.config/brew_cask_list.txt new file mode 100644 index 0000000..6f9472d --- /dev/null +++ b/.config/brew_cask_list.txt @@ -0,0 +1,11 @@ +alfred +android-studio +calibre +google-chrome +iterm2 +skype +slack +sourcetree +spectacle +spotify +visual-studio-code diff --git a/.functions/backup_brew_cask_list.sh b/.functions/backup_brew_cask_list.sh new file mode 100644 index 0000000..db1f895 --- /dev/null +++ b/.functions/backup_brew_cask_list.sh @@ -0,0 +1,3 @@ +backup_brew_cask_list() { + brew cask list > $DOTFILES_DIR/.config/brew_cask_list.txt +} \ No newline at end of file diff --git a/.functions/brew_cask_install.sh b/.functions/brew_cask_install.sh deleted file mode 100644 index 4f38654..0000000 --- a/.functions/brew_cask_install.sh +++ /dev/null @@ -1,18 +0,0 @@ -brew_cask_install() { - casks=( - alfred - android-studio - calibre - google-chrome - iterm2 - skype - slack - sourcetree - spectacle - spotify - visual-studio-code - ) - for cask in "${casks[@]}"; do - brew cask install $cask || brew cask install $cask --force - done -} \ No newline at end of file diff --git a/.functions/sync_brew_cast_list.sh b/.functions/sync_brew_cast_list.sh new file mode 100644 index 0000000..7030737 --- /dev/null +++ b/.functions/sync_brew_cast_list.sh @@ -0,0 +1,6 @@ +sync_brew_cast_list() { + casks=(`cat $DOTFILES_DIR/.config/brew_cask_list.txt`) + for cask in "${casks[@]}"; do + brew cask install $cask || brew cask install $cask --force + done +} \ No newline at end of file diff --git a/.functions/sync_vscode_extensions.sh b/.functions/sync_vscode_extensions.sh index e144cca..5bba8c6 100644 --- a/.functions/sync_vscode_extensions.sh +++ b/.functions/sync_vscode_extensions.sh @@ -1,3 +1,3 @@ -syn_vscode_extensions() { +sync_vscode_extensions() { cat $DOTFILES_DIR/.config/vscode_extensions.txt | xargs -L1 code --install-extension } \ No newline at end of file From ee6e4c076fb63dc101fbd0215de7fda5140fa0a4 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 14:05:05 +0700 Subject: [PATCH 27/36] Update shell command install_dotfiles --- .functions/install_dotfiles.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.functions/install_dotfiles.sh b/.functions/install_dotfiles.sh index e14a084..736499e 100644 --- a/.functions/install_dotfiles.sh +++ b/.functions/install_dotfiles.sh @@ -11,6 +11,7 @@ install_dotfiles() { pip3_install && source ~/.zshrc gem_install npm_install - brew_cask_install + sync_brew_cask_list + sync_vscode_extensions macos } From cab4f7de73c7d4608f91d25ae1dd921fe63dab59 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 15:00:31 +0700 Subject: [PATCH 28/36] Add shell function load_* --- .functions/load_android_sdk.sh | 11 +++++ .functions/load_java.sh | 4 ++ .functions/load_nvm.sh | 8 ++++ .functions/load_powerline_shell.sh | 17 ++++++++ .functions/load_rbenv.sh | 6 +++ .functions/load_z.sh | 3 ++ .functions/load_zsh_plugins.sh | 10 +++++ .zshrc | 69 ++++++------------------------ 8 files changed, 72 insertions(+), 56 deletions(-) create mode 100644 .functions/load_android_sdk.sh create mode 100644 .functions/load_java.sh create mode 100644 .functions/load_nvm.sh create mode 100644 .functions/load_powerline_shell.sh create mode 100644 .functions/load_rbenv.sh create mode 100644 .functions/load_z.sh create mode 100644 .functions/load_zsh_plugins.sh diff --git a/.functions/load_android_sdk.sh b/.functions/load_android_sdk.sh new file mode 100644 index 0000000..3b38100 --- /dev/null +++ b/.functions/load_android_sdk.sh @@ -0,0 +1,11 @@ +load_android_sdk() { + export ANDROID_HOME=$HOME/Library/Android/sdk + if [ ! -d "$ANDROID_HOME" ]; then + return + fi + export PATH=$ANDROID_HOME/tools:$PATH + export PATH=$ANDROID_HOME/tools/bin:$PATH + export PATH=$ANDROID_HOME/platform-tools:$PATH + alias emulator=$ANDROID_HOME/tools/emulator +} +load_android_sdk \ No newline at end of file diff --git a/.functions/load_java.sh b/.functions/load_java.sh new file mode 100644 index 0000000..3e8fb0b --- /dev/null +++ b/.functions/load_java.sh @@ -0,0 +1,4 @@ +load_java() { + export JAVA_HOME=`/usr/libexec/java_home -v 1.8` + export PATH=$JAVA_HOME/bin:$PATH +} \ No newline at end of file diff --git a/.functions/load_nvm.sh b/.functions/load_nvm.sh new file mode 100644 index 0000000..b59908c --- /dev/null +++ b/.functions/load_nvm.sh @@ -0,0 +1,8 @@ +load_nvm() { + if [ ! -d ~/.nvm ]; then + return + fi + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm + [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion +} \ No newline at end of file diff --git a/.functions/load_powerline_shell.sh b/.functions/load_powerline_shell.sh new file mode 100644 index 0000000..5d0c6c0 --- /dev/null +++ b/.functions/load_powerline_shell.sh @@ -0,0 +1,17 @@ +load_powerline_shell() { + if ! type powerline-shell >/dev/null 2>&1; then + return + fi + function powerline_precmd() { + PS1="$(powerline-shell --shell zsh $?)" + } + function install_powerline_precmd() { + for s in "${precmd_functions[@]}"; do + if [ "$s" = "powerline_precmd" ]; then + return + fi + done + precmd_functions+=(powerline_precmd) + } + install_powerline_precmd +} \ No newline at end of file diff --git a/.functions/load_rbenv.sh b/.functions/load_rbenv.sh new file mode 100644 index 0000000..be983f7 --- /dev/null +++ b/.functions/load_rbenv.sh @@ -0,0 +1,6 @@ +load_rbenv() { + if ! type rbenv >/dev/null 2>&1; then + return + fi + eval "$(rbenv init -)" +} \ No newline at end of file diff --git a/.functions/load_z.sh b/.functions/load_z.sh new file mode 100644 index 0000000..cd2ee59 --- /dev/null +++ b/.functions/load_z.sh @@ -0,0 +1,3 @@ +load_z() { + [ -d ~/.zrupa ] && . ~/.zrupa/z.sh +} \ No newline at end of file diff --git a/.functions/load_zsh_plugins.sh b/.functions/load_zsh_plugins.sh new file mode 100644 index 0000000..bcb709e --- /dev/null +++ b/.functions/load_zsh_plugins.sh @@ -0,0 +1,10 @@ +function load_zsh_plugins() { + if ! type brew >/dev/null 2>&1; then + return + fi + brew_dir=$(brew --prefix) + source $brew_dir/share/zsh-autosuggestions/zsh-autosuggestions.zsh + source $brew_dir/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh + fpath=($brew_dir/share/zsh-completions $fpath) +} +load_zsh_plugins \ No newline at end of file diff --git a/.zshrc b/.zshrc index 2959b08..3e400d7 100644 --- a/.zshrc +++ b/.zshrc @@ -1,64 +1,21 @@ -ZSH_THEME="robbyrussell" - -export ZSH=~/.oh-my-zsh - -export LC_ALL=en_US.UTF-8 -export LANG=en_US.UTF-8 - -export PATH=$HOME/.homebrew/bin:$PATH - -export PATH=/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:$PATH -export REACT_EDITOR=code - -# export JAVA_HOME=`/usr/libexec/java_home -v 1.8` -# export PATH=$JAVA_HOME/bin:$PATH - -export ANDROID_HOME=$HOME/Library/Android/sdk -export PATH=$ANDROID_HOME/tools:$PATH -export PATH=$ANDROID_HOME/tools/bin:$PATH -export PATH=$ANDROID_HOME/platform-tools:$PATH - -if [ -d ~/.nvm ]; then - export NVM_DIR="$HOME/.nvm" - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm - [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion -fi - -alias emulator=$ANDROID_HOME/tools/emulator alias showFiles='defaults write com.apple.finder AppleShowAllFiles YES && killall Finder' alias hideFiles='defaults write com.apple.finder AppleShowAllFiles NO && killall Finder' alias xcode='open -a Xcode' -alias stree='open -a SourceTree' +alias sourcetree='open -a SourceTree' alias restree='killall Sourcetree && stree' -alias gff='git flow feature' -alias vscode='code' -alias revscode='pgrep Electron | xargs kill && code' +alias vscode='/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code' -if type powerline-shell >/dev/null 2>&1; then - function powerline_precmd() { - PS1="$(powerline-shell --shell zsh $?)" - } - function install_powerline_precmd() { - for s in "${precmd_functions[@]}"; do - if [ "$s" = "powerline_precmd" ]; then - return - fi - done - precmd_functions+=(powerline_precmd) - } - install_powerline_precmd -fi +ZSH_THEME="robbyrussell" +export ZSH=~/.oh-my-zsh +export REACT_EDITOR=vscode +export PATH=$HOME/.homebrew/bin:$PATH source $ZSH/oh-my-zsh.sh source ~/.dotfiles/dotfiles.sh -if [ -d ~/.homebrew/share ]; then - source ~/.homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh - source ~/.homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh - fpath=(~/.homebrew/share/zsh-completions $fpath) -fi - -[ -d ~/.zrupa ] && . ~/.zrupa/z.sh - -if type rbenv >/dev/null 2>&1; then - eval "$(rbenv init -)" -fi +load_zsh_plugins +load_powerline_shell +load_z +load_rbenv +load_nvm +load_java +load_android_sdk From 5d35e4e8696fcce4984ce289dfc95a5f8bf88542 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 15:14:35 +0700 Subject: [PATCH 29/36] Remove alias xcode --- .zshrc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.zshrc b/.zshrc index 3e400d7..502aff5 100644 --- a/.zshrc +++ b/.zshrc @@ -3,11 +3,10 @@ alias hideFiles='defaults write com.apple.finder AppleShowAllFiles NO && killall alias xcode='open -a Xcode' alias sourcetree='open -a SourceTree' alias restree='killall Sourcetree && stree' -alias vscode='/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code' ZSH_THEME="robbyrussell" export ZSH=~/.oh-my-zsh -export REACT_EDITOR=vscode +export REACT_EDITOR=code export PATH=$HOME/.homebrew/bin:$PATH source $ZSH/oh-my-zsh.sh From b8c2117d18c3a29082fb2edad95c00eb1708d8ec Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 15:16:44 +0700 Subject: [PATCH 30/36] Remove alias restree --- .zshrc | 1 - 1 file changed, 1 deletion(-) diff --git a/.zshrc b/.zshrc index 502aff5..f8cae7f 100644 --- a/.zshrc +++ b/.zshrc @@ -2,7 +2,6 @@ alias showFiles='defaults write com.apple.finder AppleShowAllFiles YES && killal alias hideFiles='defaults write com.apple.finder AppleShowAllFiles NO && killall Finder' alias xcode='open -a Xcode' alias sourcetree='open -a SourceTree' -alias restree='killall Sourcetree && stree' ZSH_THEME="robbyrussell" export ZSH=~/.oh-my-zsh From 00478a970522ab5f6d50c23c42f183c2700f3df2 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 15:46:00 +0700 Subject: [PATCH 31/36] Fix typo --- .functions/{sync_brew_cast_list.sh => sync_brew_cask_list.sh} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .functions/{sync_brew_cast_list.sh => sync_brew_cask_list.sh} (86%) diff --git a/.functions/sync_brew_cast_list.sh b/.functions/sync_brew_cask_list.sh similarity index 86% rename from .functions/sync_brew_cast_list.sh rename to .functions/sync_brew_cask_list.sh index 7030737..af197b2 100644 --- a/.functions/sync_brew_cast_list.sh +++ b/.functions/sync_brew_cask_list.sh @@ -1,4 +1,4 @@ -sync_brew_cast_list() { +sync_brew_cask_list() { casks=(`cat $DOTFILES_DIR/.config/brew_cask_list.txt`) for cask in "${casks[@]}"; do brew cask install $cask || brew cask install $cask --force From 80c94f2848a753c7d014bdf50fc20647aeec404d Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 15:46:24 +0700 Subject: [PATCH 32/36] Add PATH for vscode --- .zshrc | 1 + 1 file changed, 1 insertion(+) diff --git a/.zshrc b/.zshrc index f8cae7f..9b90841 100644 --- a/.zshrc +++ b/.zshrc @@ -7,6 +7,7 @@ ZSH_THEME="robbyrussell" export ZSH=~/.oh-my-zsh export REACT_EDITOR=code export PATH=$HOME/.homebrew/bin:$PATH +export PATH=/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:$PATH source $ZSH/oh-my-zsh.sh source ~/.dotfiles/dotfiles.sh From 4041c171ce90c2f0de79ee47eef8c5200833505b Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 22:03:08 +0700 Subject: [PATCH 33/36] Update function load_java --- .functions/load_java.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.functions/load_java.sh b/.functions/load_java.sh index 3e8fb0b..4772ea7 100644 --- a/.functions/load_java.sh +++ b/.functions/load_java.sh @@ -1,4 +1,4 @@ load_java() { - export JAVA_HOME=`/usr/libexec/java_home -v 1.8` + export JAVA_HOME=`/usr/libexec/java_home --request` export PATH=$JAVA_HOME/bin:$PATH -} \ No newline at end of file +} From 503e7e6781a462bce6f4d85a2cccaba254cfe097 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 22:12:59 +0700 Subject: [PATCH 34/36] unset ANDROID_HOME if not install --- .functions/load_android_sdk.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.functions/load_android_sdk.sh b/.functions/load_android_sdk.sh index 3b38100..0b86d64 100644 --- a/.functions/load_android_sdk.sh +++ b/.functions/load_android_sdk.sh @@ -1,6 +1,7 @@ load_android_sdk() { export ANDROID_HOME=$HOME/Library/Android/sdk if [ ! -d "$ANDROID_HOME" ]; then + unset ANDROID_HOME return fi export PATH=$ANDROID_HOME/tools:$PATH @@ -8,4 +9,4 @@ load_android_sdk() { export PATH=$ANDROID_HOME/platform-tools:$PATH alias emulator=$ANDROID_HOME/tools/emulator } -load_android_sdk \ No newline at end of file +load_android_sdk From d3cf9596253384a8ea1a305cf3fb520ecef5cf2c Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 22:29:32 +0700 Subject: [PATCH 35/36] Fix wrong link config spectacle --- .functions/link_dotfiles.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.functions/link_dotfiles.sh b/.functions/link_dotfiles.sh index cce5c9d..89d8872 100644 --- a/.functions/link_dotfiles.sh +++ b/.functions/link_dotfiles.sh @@ -7,8 +7,8 @@ link_dotfiles() { link_file .vmdrc link_file .gitignore_global link_file .config/powerline-shell/config.json - link_file Library/Application\ Support/Spectacle + link_file Library/Application\ Support/Spectacle/Shortcuts.json link_file Library/Application\ Support/Code/User/settings.json link_file Library/Application\ Support/Code/User/keybindings.json link_file Library/Preferences/com.googlecode.iterm2.plist -} \ No newline at end of file +} From 8c7c3692cb1c611eb7c16ebee36e7e9bcd95c1a9 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Thu, 25 Apr 2019 22:33:26 +0700 Subject: [PATCH 36/36] Add config remove auto newline for vscode --- Library/Application Support/Code/User/settings.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Library/Application Support/Code/User/settings.json b/Library/Application Support/Code/User/settings.json index 4ddb752..29a59a5 100644 --- a/Library/Application Support/Code/User/settings.json +++ b/Library/Application Support/Code/User/settings.json @@ -2,6 +2,7 @@ "editor.detectIndentation": false, "editor.fontSize": 14, "editor.minimap.enabled": false, + "editor.renderFinalNewline": false, "editor.tabSize": 2, "editor.wordWrap": "on", "editor.wrappingIndent": "none", @@ -13,4 +14,4 @@ "terminal.integrated.fontSize": 14, "vim.foldfix": true, "window.zoomLevel": -1, -} +} \ No newline at end of file