popo 0.1.9 → 0.1.10
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +27 -0
- data/README +11 -1
- data/lib/popo.rb +1 -1
- data/lib/popo/{initializer.rb → init.rb} +4 -4
- data/lib/popo/runner.rb +58 -31
- data/lib/popo/rvm.rb +1 -1
- data/lib/popo/sync.rb +4 -4
- data/lib/popo/utils.rb +1 -0
- data/lib/popo/version.rb +1 -1
- data/script/poporc +27 -32
- metadata +10 -15
- data/targets/beta.rb +0 -1
- data/targets/common.rb +0 -1
- data/targets/development.rb +0 -1
- data/targets/production.rb +0 -1
- data/targets/staging.rb +0 -1
- data/targets/test.rb +0 -1
data/CHANGELOG
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
-- 0.1.10
|
2
|
+
|
3
|
+
features
|
4
|
+
* popo bash is now popo shell. bash still works though. just changed
|
5
|
+
underlying code to be more generic
|
6
|
+
|
7
|
+
* popo will now check for $SHELL instead of which
|
8
|
+
|
9
|
+
* git and env are now called on boot before everything else. without it,
|
10
|
+
popo will not have the ability to work.
|
11
|
+
* added boring README and CHANGELOG.
|
12
|
+
|
13
|
+
* version bump 0.1.9 -> 0.1.10
|
14
|
+
|
15
|
+
* added sourcing of rvm ps1_functions for ps1_set option
|
16
|
+
|
17
|
+
* removed deprecated targets folder
|
18
|
+
|
19
|
+
* poporc is now read from popo source and not from a manifest
|
20
|
+
|
21
|
+
* a customrc is now loaded if it is found under .manifest/script
|
22
|
+
|
23
|
+
bug fixes
|
24
|
+
* fixed sync not being be able to update when path basename is equal
|
25
|
+
to app basename.
|
26
|
+
|
27
|
+
* changed parameters in order of importance
|
data/README
CHANGED
@@ -1 +1,11 @@
|
|
1
|
-
|
1
|
+
Popo Repo Tool
|
2
|
+
|
3
|
+
Deploy your rails app
|
4
|
+
|
5
|
+
Features:
|
6
|
+
- Customizable manifest
|
7
|
+
- Separate shell, rvm. No conflict worries
|
8
|
+
- Easy on resources (RAM and CPU)
|
9
|
+
- Integrated with cableguy to ease Rails configuration file deployment
|
10
|
+
- Is best used when deploying and working with multiple Rails applications
|
11
|
+
|
data/lib/popo.rb
CHANGED
@@ -12,7 +12,7 @@ module Popo
|
|
12
12
|
autoload :Database, File.join(POPO_LIB_ROOT, 'database')
|
13
13
|
autoload :Error, File.join(POPO_LIB_ROOT, 'error')
|
14
14
|
autoload :GitUtils, File.join(POPO_LIB_ROOT, 'git_utils')
|
15
|
-
autoload :
|
15
|
+
autoload :Init, File.join(POPO_LIB_ROOT, 'init')
|
16
16
|
autoload :Runner, File.join(POPO_LIB_ROOT, 'runner')
|
17
17
|
autoload :RVM, File.join(POPO_LIB_ROOT, 'rvm')
|
18
18
|
autoload :Sync, File.join(POPO_LIB_ROOT, 'sync')
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module Popo
|
2
|
-
class
|
2
|
+
class Init
|
3
3
|
include Constants
|
4
4
|
|
5
|
-
def self.boot(config, options
|
6
|
-
self.new(config, options
|
5
|
+
def self.boot(db, config, options)
|
6
|
+
self.new(db, config, options)
|
7
7
|
end
|
8
8
|
|
9
|
-
def initialize(config, options
|
9
|
+
def initialize(db, config, options)
|
10
10
|
@options = options
|
11
11
|
@db = db
|
12
12
|
@manifest = config['manifests'][@options[:manifest]]
|
data/lib/popo/runner.rb
CHANGED
@@ -3,18 +3,39 @@ module Popo
|
|
3
3
|
include Constants
|
4
4
|
|
5
5
|
def self.boot(args)
|
6
|
-
|
7
|
-
|
8
|
-
Popo::Constants.const_set("
|
9
|
-
|
6
|
+
check_requirements
|
7
|
+
|
8
|
+
Popo::Constants.const_set("SHELL", ENV['SHELL'])
|
9
|
+
|
10
|
+
if SHELL.empty?
|
11
|
+
Error.say("SHELL is empty.")
|
12
|
+
end
|
10
13
|
|
11
14
|
self.new(args)
|
12
15
|
end
|
13
16
|
|
17
|
+
def self.check_requirements
|
18
|
+
bins = ['env', 'git' ]
|
19
|
+
|
20
|
+
bins.each do |b|
|
21
|
+
const_fn = "#{b.upcase}_CMD"
|
22
|
+
|
23
|
+
Popo::Constants.const_set(const_fn, get_bin_path(b))
|
24
|
+
|
25
|
+
if Popo::Constants.const_get(const_fn).empty?
|
26
|
+
Error.say "#{b} is needed and is not found in PATH!"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.get_bin_path(bin)
|
32
|
+
`which #{bin}`.strip
|
33
|
+
end
|
34
|
+
|
14
35
|
def initialize(args)
|
15
36
|
@db_opts = {}
|
16
37
|
@options = {}
|
17
|
-
@app_root
|
38
|
+
@app_root = ENV['popo_path'] || Dir.pwd
|
18
39
|
@options[:verbose] = false
|
19
40
|
|
20
41
|
if Utils.has_popo_config?(@app_root)
|
@@ -67,15 +88,14 @@ module Popo
|
|
67
88
|
else
|
68
89
|
@db_opts[:path] = File.join(@app_root, POPO_WORK_PATH)
|
69
90
|
@db_opts[:target] = ENV['CABLING_TARGET'] || @options[:target] || DEFAULT_POPO_TARGET
|
70
|
-
@db_opts[:location] = ENV['CABLING_LOCATION'] || @options[:location]
|
71
91
|
@db_opts[:verbose] = @options[:verbose]
|
92
|
+
@db_opts[:location] = ENV['CABLING_LOCATION'] || @options[:location]
|
72
93
|
|
73
94
|
# set manifest usable constants
|
74
95
|
Object.const_set("POPO_PATH", @app_root)
|
96
|
+
Object.const_set("POPO_USER", @options[:user])
|
75
97
|
Object.const_set("POPO_TARGET", @db_opts[:target])
|
76
98
|
Object.const_set("POPO_LOCATION", @options[:location])
|
77
|
-
Object.const_set("POPO_USER", @options[:user])
|
78
|
-
|
79
99
|
|
80
100
|
mandatory = [:path, :manifest]
|
81
101
|
mandatory = mandatory.select { |p| @options[p].nil? }
|
@@ -89,7 +109,7 @@ module Popo
|
|
89
109
|
end
|
90
110
|
|
91
111
|
def run(args)
|
92
|
-
if POPO_COMMANDS.include?(args)
|
112
|
+
if POPO_COMMANDS.include?(args.first)
|
93
113
|
Utils.in_popo?(@app_root)
|
94
114
|
end
|
95
115
|
|
@@ -105,64 +125,71 @@ module Popo
|
|
105
125
|
|
106
126
|
if !File.exist?(File.join(@app_root, @options[:path]))
|
107
127
|
@db_opts[:path] = File.join(@app_root, @options[:path], POPO_WORK_PATH)
|
108
|
-
db =
|
128
|
+
db = get_database
|
109
129
|
|
110
|
-
|
130
|
+
Init.boot(db, config, @options).setup
|
111
131
|
else
|
112
|
-
Error.say "Path already exists!"
|
132
|
+
Error.say "Path \'#{@options[:path]}\' already exists!"
|
113
133
|
end
|
114
134
|
when 'sync'
|
115
|
-
db =
|
116
|
-
db.boot_database
|
135
|
+
db = get_database
|
117
136
|
|
118
|
-
Sync.new(@app_root, args
|
137
|
+
Sync.new(db, @app_root, args).sync
|
119
138
|
when 'rvm'
|
120
|
-
db =
|
121
|
-
db.boot_database
|
139
|
+
db = get_database
|
122
140
|
|
123
|
-
RVM.new(@app_root, args
|
141
|
+
RVM.new(db, @app_root, args).setup
|
124
142
|
when 'migrate'
|
125
|
-
|
126
|
-
db.boot_database
|
127
|
-
db.migrate_database
|
143
|
+
get_database.migrate_database
|
128
144
|
when 'status'
|
129
145
|
Utils.say `cat #{File.join(@app_root, POPO_WORK_PATH, POPO_YML_FILE)}`
|
130
|
-
when 'bash'
|
131
|
-
sh!
|
132
|
-
when 'zsh'
|
133
|
-
sh!(cmd)
|
146
|
+
when 'shell', 'bash'
|
147
|
+
sh!
|
134
148
|
when 'diff'
|
135
149
|
GitUtils.branch_diff(Dir.pwd)
|
136
150
|
else
|
137
|
-
Error.say "#{
|
151
|
+
Error.say "#{cmd} is not a valid command!"
|
138
152
|
end
|
139
153
|
end
|
140
154
|
|
141
|
-
|
155
|
+
protected
|
156
|
+
|
157
|
+
def sh!
|
142
158
|
if Utils.has_popo_config?(@app_root)
|
143
159
|
path = POPO_CONFIG['path']
|
144
160
|
target = POPO_CONFIG['target']
|
145
161
|
location = POPO_CONFIG['location']
|
162
|
+
shell = File.basename(SHELL)
|
146
163
|
|
147
|
-
|
164
|
+
case shell
|
165
|
+
when 'bash'
|
148
166
|
poporc = File.expand_path('../../../script/poporc', __FILE__)
|
149
167
|
|
150
168
|
shcmd = "%s popo_target=%s popo_path=%s \
|
151
169
|
popo_location=%s %s --rcfile %s" \
|
152
|
-
% [ENV_CMD, target, path, location,
|
153
|
-
|
170
|
+
% [ENV_CMD, target, path, location, shell, poporc]
|
171
|
+
when 'zsh'
|
154
172
|
zdotdir = File.expand_path('../../../script', __FILE__)
|
155
173
|
|
156
174
|
shcmd = "%s popo_target=%s popo_path=%s \
|
157
175
|
popo_location=%s ZDOTDIR=%s\
|
158
176
|
%s" \
|
159
|
-
% [ENV_CMD, target, path, location, zdotdir,
|
177
|
+
% [ENV_CMD, target, path, location, zdotdir, shell]
|
178
|
+
else
|
179
|
+
Error.say "Shell #{SHELL} is not supported!"
|
160
180
|
end
|
161
181
|
|
162
182
|
exec(shcmd)
|
163
183
|
end
|
164
184
|
end
|
165
185
|
|
186
|
+
def get_database
|
187
|
+
database = Database.new(@app_root, @db_opts)
|
188
|
+
database.boot_database
|
189
|
+
|
190
|
+
database
|
191
|
+
end
|
192
|
+
|
166
193
|
def get_config!
|
167
194
|
if File.exist?(File.join(ENV['HOME'], ".#{DEFAULT_CONFIG_FILE}"))
|
168
195
|
config_file_path = File.join(ENV['HOME'], ".#{DEFAULT_CONFIG_FILE}")
|
data/lib/popo/rvm.rb
CHANGED
data/lib/popo/sync.rb
CHANGED
@@ -2,7 +2,7 @@ module Popo
|
|
2
2
|
class Sync
|
3
3
|
include Constants
|
4
4
|
|
5
|
-
def initialize(popo_path, args
|
5
|
+
def initialize(db, popo_path, args)
|
6
6
|
@db = db
|
7
7
|
@sync_list = @db.get(POPO_DIR_KEY).split(',')
|
8
8
|
@popo_path = popo_path
|
@@ -29,9 +29,10 @@ module Popo
|
|
29
29
|
if @cwd.eql? @popo_path
|
30
30
|
@sync_list.each { |p| sync_all(p) }
|
31
31
|
else
|
32
|
-
|
32
|
+
key = @cwd.split('/')
|
33
|
+
key.shift(@popo_path.split('/').count)
|
33
34
|
|
34
|
-
sync_all(convert_to_key(
|
35
|
+
sync_all(convert_to_key(key))
|
35
36
|
end
|
36
37
|
end
|
37
38
|
end
|
@@ -74,7 +75,6 @@ module Popo
|
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
77
|
-
|
78
78
|
def get_values(key)
|
79
79
|
POPO_KEY_VALUES.each do |v|
|
80
80
|
@info[v] = @db.get("#{key}.#{v}")
|
data/lib/popo/utils.rb
CHANGED
data/lib/popo/version.rb
CHANGED
data/script/poporc
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
#!/usr/bin/env bash
|
2
|
-
|
3
2
|
if [[ -z "$popo_path" ]] ; then
|
4
3
|
echo "FAIL Please set the popo_path environment var"
|
5
4
|
exit -1
|
@@ -14,26 +13,15 @@ YELLOW="\[\033[33m\]"
|
|
14
13
|
NORMAL="\[\033[0;0m\]"
|
15
14
|
BASEPATH=`which basename`
|
16
15
|
BASENAME=`$BASEPATH $popo_path`
|
16
|
+
CUSTOMRC=$popo_path/.manifest/script/customrc
|
17
17
|
|
18
|
-
|
19
|
-
export rvm_reload_flag=1
|
20
18
|
export rvm_prefix=$popo_path
|
21
|
-
|
22
|
-
export CABLING_PATH=$popo_path/.manifest/cabling
|
23
|
-
export CABLING_TARGET=$popo_target
|
24
|
-
|
25
|
-
if [[ -n "$popo_location" ]] ; then
|
26
|
-
export CABLING_LOCATION=$popo_location
|
27
|
-
fi
|
28
|
-
|
29
|
-
export DBGET_PATH=$popo_path/.manifest
|
30
|
-
|
31
19
|
unset $(env | awk -F= '/^rvm_/{print $1" "}')
|
32
|
-
|
33
20
|
export rvm_path=$popo_path/rvm
|
34
21
|
source $rvm_path/scripts/rvm
|
35
|
-
|
22
|
+
source $rvm_path/contrib/ps1_functions
|
36
23
|
rubies_path=$rvm_path/rubies
|
24
|
+
|
37
25
|
# Load default rvm if rubies folder is not empty
|
38
26
|
if [ -d $rubies_path ] && [ "$(ls -A $rubies_path)" ] ; then
|
39
27
|
rvm default
|
@@ -42,30 +30,32 @@ fi
|
|
42
30
|
unset PALMADE_GEMS_DIR
|
43
31
|
export PATH="$rvm_path/bin:$popo_path/tools:$PATH"
|
44
32
|
|
45
|
-
|
46
33
|
if [[ $PS1 != "" ]] ; then
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
34
|
+
if [[ -f /etc/bash.bashrc ]] ; then
|
35
|
+
source /etc/bash.bashrc
|
36
|
+
fi
|
37
|
+
|
38
|
+
if [[ -f $HOME/.bashrc ]] ; then
|
39
|
+
source $HOME/.bashrc
|
40
|
+
fi
|
41
|
+
|
42
|
+
if [[ $BASENAME != $popo_target ]] ; then
|
43
|
+
export PS1="$YELLOW(popo $popo_target/$BASENAME) $NORMAL$PS1"
|
44
|
+
else
|
45
|
+
export PS1="$YELLOW(popo $popo_target) $NORMAL$PS1"
|
46
|
+
fi
|
60
47
|
fi
|
61
48
|
|
49
|
+
rvm reload
|
50
|
+
|
62
51
|
if [[ -z "$PS1" ]] ; then
|
63
52
|
rvm $*
|
64
53
|
else
|
65
|
-
echo "Welcome to the popoed
|
54
|
+
echo "Welcome to the popoed environment, where you can play with your very own popo."
|
66
55
|
echo ""
|
67
|
-
echo "
|
68
|
-
echo "
|
56
|
+
echo "Popo has set these variables for you lazy ass people".
|
57
|
+
echo " popo_path: $popo_path"
|
58
|
+
echo " popo_target: $popo_target"
|
69
59
|
echo ""
|
70
60
|
echo "Remember to keep things clean and civil around here."
|
71
61
|
echo "To go back to your normal world, just hit exit."
|
@@ -73,3 +63,8 @@ else
|
|
73
63
|
echo "But wait, you ask, who needs popo? Baahh, popo's for n00bs!"
|
74
64
|
echo ""
|
75
65
|
fi
|
66
|
+
|
67
|
+
# source a custom rc file
|
68
|
+
if [[ -s $CUSTOMRC ]] ; then
|
69
|
+
source $CUSTOMRC
|
70
|
+
fi
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: popo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-26 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sequel
|
16
|
-
requirement: &
|
16
|
+
requirement: &17259580 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *17259580
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sqlite3
|
27
|
-
requirement: &
|
27
|
+
requirement: &17259080 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *17259080
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: cableguy
|
38
|
-
requirement: &
|
38
|
+
requirement: &17258660 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *17258660
|
47
47
|
description: Ruby and rails repo tool
|
48
48
|
email:
|
49
49
|
- poymode@gmail.com
|
@@ -54,6 +54,7 @@ extensions: []
|
|
54
54
|
extra_rdoc_files: []
|
55
55
|
files:
|
56
56
|
- .gitignore
|
57
|
+
- CHANGELOG
|
57
58
|
- Gemfile
|
58
59
|
- README
|
59
60
|
- Rakefile
|
@@ -67,7 +68,7 @@ files:
|
|
67
68
|
- lib/popo/database.rb
|
68
69
|
- lib/popo/error.rb
|
69
70
|
- lib/popo/git_utils.rb
|
70
|
-
- lib/popo/
|
71
|
+
- lib/popo/init.rb
|
71
72
|
- lib/popo/runner.rb
|
72
73
|
- lib/popo/rvm.rb
|
73
74
|
- lib/popo/sync.rb
|
@@ -80,12 +81,6 @@ files:
|
|
80
81
|
- script/envy.template
|
81
82
|
- script/envyrc
|
82
83
|
- script/poporc
|
83
|
-
- targets/beta.rb
|
84
|
-
- targets/common.rb
|
85
|
-
- targets/development.rb
|
86
|
-
- targets/production.rb
|
87
|
-
- targets/staging.rb
|
88
|
-
- targets/test.rb
|
89
84
|
homepage: https://github.com/poymode/popo
|
90
85
|
licenses: []
|
91
86
|
post_install_message:
|
data/targets/beta.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# BETA target
|
data/targets/common.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# COMMON TARGET
|
data/targets/development.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# DEVELOPMENT TARGET
|
data/targets/production.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# PRODUCTION TARGET
|
data/targets/staging.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# STAGING TARGET
|
data/targets/test.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# TEST TARGET
|