shake

WebJar for shake

License

License

MIT
GroupId

GroupId

org.webjars.npm
ArtifactId

ArtifactId

shake
Last Version

Last Version

0.0.9
Release Date

Release Date

Type

Type

jar
Description

Description

shake
WebJar for shake
Project URL

Project URL

http://webjars.org
Source Code Management

Source Code Management

https://github.com/wearefractal/shake

Download shake

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.npm/shake/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>shake</artifactId>
    <version>0.0.9</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/shake/
implementation 'org.webjars.npm:shake:0.0.9'
// https://jarcasting.com/artifacts/org.webjars.npm/shake/
implementation ("org.webjars.npm:shake:0.0.9")
'org.webjars.npm:shake:jar:0.0.9'
<dependency org="org.webjars.npm" name="shake" rev="0.0.9">
  <artifact name="shake" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='shake', version='0.0.9')
)
libraryDependencies += "org.webjars.npm" % "shake" % "0.0.9"
[org.webjars.npm/shake "0.0.9"]

Dependencies

compile (4)

Group / Artifact Type Version
org.webjars.npm : coffee-script jar [0,)
org.webjars.npm » loggo jar [0,)
org.webjars.npm : commander jar [0,)
org.webjars.npm : async jar [0,)

Project Modules

There are no modules declared in this project.

Information

Package shake
Description Deployment tool for node
Node Version >= 0.4

Usage

Running tasks

$ shake setup:deploy:something["some arg", true, 2]:status

Defining Tasks

Add a .shake.coffee or .shake.js file to your project root.

A task is a function that takes 3 arguments. Any arguments inside [ and ] will be applied to the task function after the initial 3.

module.exports =
  sometask: (local, remote, done) ->
    # local = local machine
    # remote = remote machine (defined in target)
    local.exec """
    whoami
    ls -la
    mkdir test
    """, (res) ->
      # res = array of stdout+stderr
      remote.exec "ls -la", (res) ->
        done() # Call this when the task is finished

Example config

Here is an example config demonstrating basic functionality:

# This is a non-standard config used only within this config
# you can make this file look like whatever you want as long as you export
# your tasks and target
app =
  sudo: "sudo" # Change this to "" to disable sudo
  parent: '/var/www/'
  name: 'your cool app name'
app.repository = "[email protected]:your cool username/#{app.name}.git"
app.folder = "#{app.parent}#{app.name}/"
app.start = "coffee #{app.folder}start.coffee"
app.log = "/var/log/#{app.name}.log"


module.exports =
  target: 'cool server'
  clean: (local, remote, done) ->
    remote.exec """
    #{app.sudo} rm -rf #{app.folder}
    """, done

  setup: (local, remote, done) ->
    remote.exec """
    NAME=`whoami`;
    #{app.sudo} mkdir -p #{app.folder}
    #{app.sudo} chown -R $NAME:$NAME #{app.folder}
    git clone #{app.repository} #{app.folder}
    cd #{app.folder}
    npm install
    """, done

  deploy: (local, remote, done) ->
    remote.exec """
    cd #{app.folder}
    git pull
    sudo killall node
    npm install
    #{app.sudo} stop #{app.name}
    #{app.sudo} start #{app.name}
    """, done

  start: (local, remote, done) ->
    remote.exec "#{app.sudo} start #{app.name}", done

  stop: (local, remote, done) ->
    remote.exec "#{app.sudo} stop #{app.name}", done

  restart: (local, remote, done) ->
    remote.exec "#{app.sudo} restart #{app.name}", done

  log: (local, remote, done) ->
    remote.exec "tail -n 100 #{app.log}", done

  status: (local, remote, done) ->
    remote.sexec "ps -eo args | grep '#{app.name}' | grep -v grep", (res) ->
      done if res then "Online" else "Offline"
org.webjars.npm

Fractal

Versions

Version
0.0.9