Offline git push and npm publish for cyberhobos


This module is gifted to cyberhobo extraordinaire, dominictarr.

  • Run git push and npm publish while you're offline!
  • Next time you're online, all queued commands will run in order.
  1. Install it globally.
npm install -g cyberhobo
  1. Set up bash/zsh aliases for npm and git so cyberhobo will run first.
alias git='cyberhobo git'
alias npm='cyberhobo npm'

cyberhobo will detect if you're offline and intercept git push and npm publish commands, queueing them to run later when you're back online. If you're online or if you run a non push/publish command, then it will run normally.

If you're back in civilization and you have an internet connection, the next time you run any git or npm command, cyberhobo will run all the commands that were queued up while you were offline. They will run in order.

If any of them fails with a non-zero exit code then cyberhobo bails, printing out the remaining commands so you can run them manually. (TODO)

$ touch test.txt
$ git add test.txt
# oh no! lost internet connection now. keep working...
$ git commit -m "wrote some awesome code"
[master 4f5f136] wrote some awesome code
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test.txt
$ git push
CYBER HOBO ACTIVATED! Command saved for later!
$ npm publish
CYBER HOBO ACTIVATED! Command saved for later!
# more commits, pushes, etc., ...
# later, we have internet again! Run any git/npm command to push queued commands!
$ git status
               HEY, YOU HAVE INTERNET NOW!
Time to re-run the commands you saved while you were offline
==== Running "git push" in /Users/feross/code/cyberhobo ====
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 229 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
   1174974..4f5f136  master -> master
==== Running "npm publish" in /Users/feross/code/cyberhobo ===
npm http PUT
npm http 201
+ cyberhobo@0.1.0
On branch master
Your branch is up-to-date with 'origin/master'.

This may be a horrible idea. I don't know.

MIT. Copyright Feross Aboukhadijeh.