bam 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/Gemfile +4 -0
- data/README.mdown +27 -0
- data/Rakefile +2 -0
- data/bam.gemspec +21 -0
- data/bin/bam +24 -0
- data/bin/bamify +55 -0
- data/lib/bam/version.rb +3 -0
- data/lib/bam.rb +47 -0
- data/lib/bam_helpers.rb +14 -0
- metadata +78 -0
data/Gemfile
ADDED
data/README.mdown
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
Bam
|
2
|
+
===
|
3
|
+
|
4
|
+
A super simple deployment utility, it's basically an opinionated abstraction of rsync served in a capistrano fashion. Capistrano is a super cool utility, I love it, I use it all the time. But for smaller projects (websites, sinatra apps, etc), I think it's simply overkill. With a combination of rsync and git (well actually not really, bam simply allows git to do what git does best... version management).
|
5
|
+
|
6
|
+
Installation
|
7
|
+
============
|
8
|
+
|
9
|
+
gem install bam
|
10
|
+
|
11
|
+
Usage
|
12
|
+
=====
|
13
|
+
|
14
|
+
cd into/your/project/root
|
15
|
+
bamify
|
16
|
+
# update the @server and @to variables in deploy.bam file
|
17
|
+
# work on your project
|
18
|
+
bam
|
19
|
+
|
20
|
+
TODO
|
21
|
+
====
|
22
|
+
|
23
|
+
- Add revision history
|
24
|
+
|
25
|
+
|
26
|
+
Copyright (c) 2010 Vann Ek., released under the MIT license
|
27
|
+
|
data/Rakefile
ADDED
data/bam.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "bam/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "bam"
|
7
|
+
s.version = Bam::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Vann Ek"]
|
10
|
+
s.email = ["vann@innerfusion.net"]
|
11
|
+
s.homepage = "http://github.com/vanntastic/bam"
|
12
|
+
s.summary = %q{A super simple deployment utility}
|
13
|
+
s.description = %q{A super simple deployment utility using rsync and git}
|
14
|
+
|
15
|
+
s.rubyforge_project = "bam"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
end
|
data/bin/bam
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/usr/bin/env ruby -wKU
|
2
|
+
|
3
|
+
begin
|
4
|
+
require "bam_helpers"
|
5
|
+
require "bam"
|
6
|
+
rescue LoadError
|
7
|
+
require "rubygems"
|
8
|
+
require "bam_helpers"
|
9
|
+
require "bam"
|
10
|
+
end
|
11
|
+
|
12
|
+
pwd = Dir.pwd
|
13
|
+
bampath = File.join(pwd, "deploy.bam")
|
14
|
+
if File.exists?(bampath)
|
15
|
+
@pre_deploy_tasks, @post_deploy_tasks = nil
|
16
|
+
deployfile = File.read(File.join(pwd,"deploy.bam"))
|
17
|
+
eval deployfile
|
18
|
+
ready_to = Bam::Deployment.new @server, @to, pwd
|
19
|
+
ready_to.deploy_tasks(@pre_deploy_tasks) unless @pre_deploy_tasks.nil?
|
20
|
+
ready_to.deploy
|
21
|
+
ready_to.deploy_tasks(@post_deploy_tasks) unless @post_deploy_tasks.nil?
|
22
|
+
else
|
23
|
+
puts "No deploy.bam file found, run bamify to generate one."
|
24
|
+
end
|
data/bin/bamify
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/env ruby -wKU
|
2
|
+
|
3
|
+
# Bamify : generates the deploy.bam file for deploying using bam
|
4
|
+
# USAGE :
|
5
|
+
# bamify [path_to_project]
|
6
|
+
begin
|
7
|
+
require "bam_helpers"
|
8
|
+
rescue LoadError
|
9
|
+
require "rubygems"
|
10
|
+
require "bam_helpers"
|
11
|
+
end
|
12
|
+
|
13
|
+
include BamHelpers
|
14
|
+
|
15
|
+
def template
|
16
|
+
"
|
17
|
+
# Bam Deploy File
|
18
|
+
# ---------------
|
19
|
+
# All you have to do is change all the variables below...
|
20
|
+
# the ip or hostname of the server, can use the following conventions for this variable:
|
21
|
+
# - server_name # => if you have server_name setup in ~/.ssh/config
|
22
|
+
# - username@host
|
23
|
+
@server = 'login@yourhost.com'
|
24
|
+
# the location on the server don't forget to append the slash/
|
25
|
+
@to = '~/location/to/your/web/site/or/app/'
|
26
|
+
|
27
|
+
# pre_deploy_tasks : These are things that you can run locally before deployment
|
28
|
+
# @pre_deploy_tasks = ['rm -rf cache/*']
|
29
|
+
# @pre_deploy_tasks = []
|
30
|
+
|
31
|
+
# post_deploy_tasks : These are things that you can run locally before deployment
|
32
|
+
# @post_deploy_tasks = ['rm -rf cache/*']
|
33
|
+
# @post_deploy_tasks = []
|
34
|
+
"
|
35
|
+
end
|
36
|
+
|
37
|
+
def add_ignore_bam
|
38
|
+
`touch .gitignore` unless File.exists?(".gitignore")
|
39
|
+
no_bam_found = (`cat .gitignore | grep deploy.bam` == "")
|
40
|
+
`echo deploy.bam >> .gitignore` if no_bam_found
|
41
|
+
end
|
42
|
+
|
43
|
+
if ARGV[0] == "--help"
|
44
|
+
puts "bamify [path_to_project]"
|
45
|
+
else
|
46
|
+
path = ARGV[0] == "" ? ARGV[0] : Dir.pwd
|
47
|
+
bam_path = File.join(path, "deploy.bam")
|
48
|
+
File.open File.join(bam_path), "w+" do |file|
|
49
|
+
file << template
|
50
|
+
end
|
51
|
+
add_ignore_bam
|
52
|
+
puts wrap_borders("Bam! you're done! bam.deploy generated to : #{bam_path}")
|
53
|
+
# TODO : add editor options
|
54
|
+
end
|
55
|
+
|
data/lib/bam/version.rb
ADDED
data/lib/bam.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
module Bam
|
2
|
+
class Deployment
|
3
|
+
include BamHelpers
|
4
|
+
PWD = Dir.pwd
|
5
|
+
|
6
|
+
def initialize(server, to, from)
|
7
|
+
@from = from
|
8
|
+
@server = server
|
9
|
+
@to = to
|
10
|
+
end
|
11
|
+
|
12
|
+
def has_git?
|
13
|
+
File.exists?(File.join PWD, ".git")
|
14
|
+
end
|
15
|
+
|
16
|
+
def has_git_ignores?
|
17
|
+
File.exists?(File.join PWD, ".gitignore")
|
18
|
+
end
|
19
|
+
|
20
|
+
def exclusions
|
21
|
+
return "" if !has_git_ignores? || !has_git?
|
22
|
+
git_ignore = File.join PWD, ".gitignore"
|
23
|
+
exclusions = `cat #{git_ignore}`.split("\n")
|
24
|
+
exclude_list = exclusions.map { |e| "--exclude '#{e}' " }
|
25
|
+
exclude_list = exclude_list.join
|
26
|
+
end
|
27
|
+
|
28
|
+
def deploy
|
29
|
+
puts("Starting deployment...")
|
30
|
+
# use -avzC to exclude .git and .svn repositories
|
31
|
+
cmd = "rsync -avzC #{@from} #{@server}:#{@to} #{exclusions}"
|
32
|
+
output = "OUTPUT: #{cmd}"
|
33
|
+
puts(wrap_borders(output))
|
34
|
+
system(cmd)
|
35
|
+
end
|
36
|
+
|
37
|
+
def deploy_tasks(tasks)
|
38
|
+
if tasks.length > 0
|
39
|
+
tasks.each do |task|
|
40
|
+
puts " - Executing deployment task: #{task}"
|
41
|
+
`#{task}`
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
data/lib/bam_helpers.rb
ADDED
metadata
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bam
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Vann Ek
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-10-20 00:00:00 -05:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: A super simple deployment utility using rsync and git
|
23
|
+
email:
|
24
|
+
- vann@innerfusion.net
|
25
|
+
executables:
|
26
|
+
- bam
|
27
|
+
- bamify
|
28
|
+
extensions: []
|
29
|
+
|
30
|
+
extra_rdoc_files: []
|
31
|
+
|
32
|
+
files:
|
33
|
+
- .gitignore
|
34
|
+
- Gemfile
|
35
|
+
- README.mdown
|
36
|
+
- Rakefile
|
37
|
+
- bam.gemspec
|
38
|
+
- bin/bam
|
39
|
+
- bin/bamify
|
40
|
+
- lib/bam.rb
|
41
|
+
- lib/bam/version.rb
|
42
|
+
- lib/bam_helpers.rb
|
43
|
+
has_rdoc: true
|
44
|
+
homepage: http://github.com/vanntastic/bam
|
45
|
+
licenses: []
|
46
|
+
|
47
|
+
post_install_message:
|
48
|
+
rdoc_options: []
|
49
|
+
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
hash: 3
|
67
|
+
segments:
|
68
|
+
- 0
|
69
|
+
version: "0"
|
70
|
+
requirements: []
|
71
|
+
|
72
|
+
rubyforge_project: bam
|
73
|
+
rubygems_version: 1.3.7
|
74
|
+
signing_key:
|
75
|
+
specification_version: 3
|
76
|
+
summary: A super simple deployment utility
|
77
|
+
test_files: []
|
78
|
+
|