popo 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "cableguy"
4
+ # Specify your gem's dependencies in popo.gemspec
5
+ gemspec
data/README ADDED
@@ -0,0 +1 @@
1
+ popo rails repo tool
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ require 'yaml'
3
+
4
+ ROOT_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..'))
5
+ BASH_PATH = `which bash`.strip
6
+ ENV_PATH = `which env`.strip
7
+ POPO_PATH = ENV['popo_path'] if ENV.include?('popo_path')
8
+ POPO_TARGET = ENV['popo_target'] if ENV.include?('popo_target')
9
+ POPO_WORK_PATH = '.manifest'
10
+ ENVYRC = File.join(POPO_PATH, POPO_WORK_PATH, 'script/envyrc')
11
+
12
+ cmd = ARGV.join(' ')
13
+
14
+ finale = "#{ENV_PATH} popo_path=#{POPO_PATH} popo_target=#{POPO_TARGET} #{BASH_PATH} -c 'source #{ENVYRC}; cd #{POPO_PATH}; #{cmd}'"
15
+ system(finale)
16
+
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ POPO_BASE_PATH = File.expand_path('../', File.dirname(__FILE__))
4
+ require File.join(POPO_BASE_PATH, 'lib/popo')
5
+ Popo::Runner.boot(ARGV)
6
+
@@ -0,0 +1,4 @@
1
+ # sample
2
+ # popo_path: /opt/palmade/development
3
+ # popo_target: development
4
+ # envyrc_path: scripts/envyrc
@@ -0,0 +1,15 @@
1
+ repo:
2
+ popo: jan@localhost:/opt/popo.git
3
+ rvm: jan@git.caresharing:popo/rvm.git
4
+ tools: jan@git.caresharing:popo/tools.git
5
+ manifest:
6
+ source: https://popo.caresharing.eu
7
+ rvm:
8
+ rubies: [ree-1.8.7-2010.01, ruby-1.9.2]
9
+ default: ree-1.8.7-2010.01
10
+ popo:
11
+ tree: [ 'apps', 'assets', 'frameworks', 'plugins', 'helpers', 'external', 'configs', 'out/logs', 'out/tmp/pids', 'out/tmp/caches', 'libwww']
12
+ default_target: development
13
+ gems:
14
+ source: http://gems.caresharing.eu
15
+
@@ -0,0 +1,23 @@
1
+ class Hash
2
+ def deep_merge(hash)
3
+ target = dup
4
+ hash.keys.each do |key|
5
+ if hash[key].is_a? Hash and self[key].is_a? Hash
6
+ target[key] = target[key].deep_merge(hash[key])
7
+ next
8
+ end
9
+ target[key] = hash[key]
10
+ end
11
+ target
12
+ end
13
+
14
+ def deep_merge!(second)
15
+ second.each_pair do |k,v|
16
+ if self[k].is_a?(Hash) and second[k].is_a?(Hash)
17
+ self[k].deep_merge!(second[k])
18
+ else
19
+ self[k] = second[k]
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ require 'palmade/cableguy'
3
+ require 'optparse'
4
+ require 'yaml'
5
+ require 'fileutils'
6
+
7
+ module Popo
8
+ POPO_LIB_ROOT = File.join(File.dirname(__FILE__), 'popo')
9
+
10
+ autoload :Constants, (File.join(POPO_LIB_ROOT, 'constants'))
11
+ autoload :Database, (File.join(POPO_LIB_ROOT, 'database'))
12
+ autoload :GitUtils, (File.join(POPO_LIB_ROOT, 'git_utils'))
13
+ autoload :Initializer, (File.join(POPO_LIB_ROOT, 'initializer'))
14
+ autoload :Runner, (File.join(POPO_LIB_ROOT, 'runner'))
15
+ autoload :RVM, (File.join(POPO_LIB_ROOT, 'rvm'))
16
+ autoload :Sync, (File.join(POPO_LIB_ROOT, 'sync'))
17
+ autoload :Utils, (File.join(POPO_LIB_ROOT, 'utils'))
18
+ end
@@ -0,0 +1,9 @@
1
+ module Popo
2
+ module Constants
3
+ POPORC = 'script/poporc'
4
+ DEFAULT_CONFIG_FILE = "popo_config.yml"
5
+ POPO_WORK_PATH = ".manifest"
6
+ POPO_YML_FILE = "popo.yml"
7
+ POPO_CONFIG = {}
8
+ end
9
+ end
@@ -0,0 +1,23 @@
1
+ module Popo
2
+ class Database
3
+ def initialize(app_root, options)
4
+ @cabler = Palmade::Cableguy::Cabler.new(app_root, options)
5
+ end
6
+
7
+ def boot_database
8
+ @cabler.boot
9
+ end
10
+
11
+ def migrate_database
12
+ @cabler.migrate
13
+ end
14
+
15
+ def get(key, group = 'manifest')
16
+ @cabler.db.get(key, group)
17
+ end
18
+
19
+ def get_children(key, group = 'manifest')
20
+ @cabler.db.get_children(key, group)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,60 @@
1
+ module Popo
2
+ module GitUtils
3
+ include Constants
4
+
5
+ def self.git_clone(repo, clone_path, branch)
6
+ clone_path ||= nil
7
+ branch = 'master' if branch.nil?
8
+
9
+ if clone_path.nil?
10
+ cmd = "#{GIT_CMD} clone -b #{branch} #{repo}"
11
+ else
12
+ cmd = "#{GIT_CMD} clone -b #{branch} #{repo} #{clone_path}"
13
+ end
14
+
15
+ clone_msg = "Cloning branch #{branch} from #{repo}" +
16
+ " to #{clone_path}"
17
+
18
+ Utils.say_with_time clone_msg do
19
+ `#{cmd}`
20
+ end
21
+ end
22
+
23
+ def self.git_update(repo, branch)
24
+ Utils.say_with_time "Updating #{repo}" do
25
+ Dir.chdir(repo) do
26
+ `#{GIT_CMD} fetch`
27
+ end
28
+ end
29
+
30
+ git_stash(repo)
31
+ git_checkout(repo, branch)
32
+ git_reset(repo, branch)
33
+ end
34
+
35
+ def self.git_stash(repo)
36
+ Utils.say_with_time "Stashing changes for #{repo}" do
37
+ Dir.chdir(repo) do
38
+ `#{GIT_CMD} stash`
39
+ end
40
+ end
41
+ end
42
+
43
+ def self.git_reset(repo, branch)
44
+ Utils.say_with_time "Doing a hard reset for #{repo}" do
45
+ Dir.chdir(repo) do
46
+ `#{GIT_CMD} reset --hard origin/#{branch}`
47
+ end
48
+ end
49
+ end
50
+
51
+ def self.git_checkout(repo, branch)
52
+ Utils.say_with_time "Switching to #{branch} branch" do
53
+ Dir.chdir(repo) do
54
+ `#{GIT_CMD} checkout #{branch}`
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+
@@ -0,0 +1,60 @@
1
+ module Popo
2
+ class Initializer
3
+ include Constants
4
+
5
+ def self.boot(config, options)
6
+ self.new(config, options)
7
+ end
8
+
9
+ def initialize(config, options)
10
+ @repos = {}
11
+
12
+ config['repos'].each do |k, v|
13
+ @repos[k] = v
14
+ end
15
+
16
+ @options = options
17
+ @default_target = @options[:target] || 'development'
18
+ @deploy_path = File.absolute_path(@options[:path])
19
+ @location = @options[:location] || nil
20
+ end
21
+
22
+ def print_variables
23
+ instance_variables.each do |i|
24
+ say instance_variable_get(i)
25
+ end
26
+ end
27
+
28
+ def setup
29
+ print_variables if @options[:verbose]
30
+
31
+ @repos.each do |k, v|
32
+ basename = File.basename(v['git'])
33
+
34
+ if k == POPO_WORK_PATH.delete('.')
35
+ clone_path = File.join(@deploy_path, POPO_WORK_PATH)
36
+ else
37
+ clone_path = File.join(@deploy_path, basename)
38
+ end
39
+
40
+ GitUtils.git_clone(v['git'], clone_path, v['branch'])
41
+ end
42
+
43
+ write_config
44
+ end
45
+
46
+ def write_config
47
+ popo = {}
48
+ popo['target'] = @default_target
49
+ popo['path'] = @deploy_path
50
+ popo['location'] = @location if !@location.nil?
51
+
52
+ yml_path = File.join(@deploy_path, POPO_WORK_PATH, POPO_YML_FILE)
53
+
54
+ File.open(yml_path, "w") do |f|
55
+ YAML.dump(popo, f)
56
+ end
57
+ end
58
+ end
59
+ end
60
+
@@ -0,0 +1,139 @@
1
+ module Popo
2
+ class Runner
3
+ include Constants
4
+
5
+ def self.boot(args)
6
+ Popo::Constants.const_set("BASH_CMD", `which bash`.strip)
7
+ Popo::Constants.const_set("ENV_CMD", `which env`.strip)
8
+ Popo::Constants.const_set("GIT_CMD", `which git`.strip)
9
+
10
+ self.new(args)
11
+ end
12
+
13
+ def initialize(args)
14
+ @popo_path = ENV['popo_path'] || Dir.pwd
15
+ @options = {}
16
+ @cabler_options = {}
17
+ @options[:verbose] = false
18
+
19
+ optparse = OptionParser.new do |opts|
20
+ opts.banner = "Popo tool."
21
+ opts.separator "Options:"
22
+
23
+ opts.on('-p', '--path PATH', 'Target path') do |path|
24
+ @options[:path] = path
25
+ end
26
+
27
+ opts.on('-t', '--target TARGET', 'Deployment target') do |target|
28
+ @options[:target] = target
29
+ end
30
+
31
+ opts.on('-u', '--user USER', 'Username') do |user|
32
+ @options[:user] = user
33
+ end
34
+
35
+ opts.on('-l', '--location LOCATION', 'Location') do |location|
36
+ @options[:location] = location
37
+ end
38
+
39
+ opts.on('-v', '--verbose', 'Verbose') do
40
+ @options[:verbose] = true
41
+ end
42
+
43
+ opts.on('-h', '--help', 'Display this screen') do
44
+ puts opts
45
+ exit
46
+ end
47
+ end
48
+
49
+ optparse.parse!
50
+
51
+ if args.length == 0
52
+ Utils.say optparse.help
53
+ else
54
+ @cabler_options = { :path => File.join(@popo_path, POPO_WORK_PATH),
55
+ :target => ENV['CABLING_TARGET'],
56
+ :location => ENV['CABLING_LOCATION'],
57
+ :verbose => @options[:verbose] }
58
+
59
+ run(args)
60
+ end
61
+ end
62
+
63
+ def run(args)
64
+ case args.shift
65
+ when 'init'
66
+ if !@options[:path].nil?
67
+ if !File.exist?(File.join(@popo_path, @options[:path]))
68
+ Initializer.boot(get_config!, @options).setup
69
+ else
70
+ raise "Path already exists!"
71
+ end
72
+ else
73
+ raise "Supply a path with the -p option!"
74
+ end
75
+ when 'sync'
76
+ if Utils.in_popo?(@popo_path)
77
+ db = Database.new(@popo_path, @cabler_options)
78
+ db.boot_database
79
+
80
+ Sync.new(@popo_path, args, db).gather
81
+ end
82
+ when 'rvminstall'
83
+ if Utils.in_popo?(@popo_path)
84
+ print "Install all rubies?(y/N): "
85
+
86
+ ok = $stdin.gets.chomp!
87
+ if ok == 'y'
88
+ db = Database.new(@popo_path, @cabler_options)
89
+ db.boot_database
90
+ RVM.new(@popo_path, args, db).setup
91
+ else
92
+ Utils.say "y/N only!"
93
+ end
94
+ end
95
+ when 'migrate'
96
+ if Utils.in_popo?(@popo_path)
97
+ db = Database.new(@popo_path, @cabler_options)
98
+ db.boot_database
99
+ db.migrate_database
100
+ end
101
+ when 'status'
102
+ Utils.say `cat #{File.join(@popo_path, POPO_WORK_PATH, POPO_YML_FILE)}`
103
+ when 'upload'
104
+ puts "Pushing!"
105
+ when 'bash'
106
+ bash!
107
+ else
108
+ puts "I don't know what to do."
109
+ end
110
+ end
111
+
112
+ def bash!
113
+ Utils.require_relative_work_popo(Dir.pwd)
114
+
115
+ poporc_path = File.join(Dir.pwd, POPO_WORK_PATH, POPORC)
116
+ target = POPO_CONFIG['target']
117
+ path = POPO_CONFIG['path']
118
+ location = POPO_CONFIG['location']
119
+
120
+ bashcmd = "%s popo_target=%s popo_path=%s \
121
+ popo_location=%s %s --rcfile %s" \
122
+ % [ENV_CMD, target, path, location, BASH_CMD, poporc_path]
123
+
124
+ exec(bashcmd)
125
+ end
126
+
127
+ def get_config!
128
+ if File.exist?(File.join(ENV['HOME'], ".#{DEFAULT_CONFIG_FILE}"))
129
+ config_file_path = File.join(ENV['HOME'], ".#{DEFAULT_CONFIG_FILE}")
130
+ elsif File.exist?(File.join('/etc', DEFAULT_CONFIG_FILE))
131
+ config_file_path = "/etc/#{DEFAULT_CONFIG_FILE}"
132
+ else
133
+ raise "No popo_config.yml found in #{ENV['HOME']} or /etc"
134
+ end
135
+
136
+ config_hash = YAML.load_file(config_file_path)
137
+ end
138
+ end
139
+ end
@@ -0,0 +1,59 @@
1
+ module Popo
2
+ class RVM
3
+ def initialize(app_root, args, db)
4
+ @db = db
5
+ @app_root = app_root
6
+ @rvm_bin = File.join(@app_root, 'rvm/bin/rvm')
7
+ @repos = args
8
+
9
+ @rubies = @db.get("rvm.rubies").split(",")
10
+ @default_ruby = @db.get("rvm.ruby.default")
11
+ @default_gems = @db.get("rvm.gems.default").split(",")
12
+ @gem_source = @db.get("rvm.gems.source")
13
+ end
14
+
15
+ def setup
16
+ Utils.say "Rubies to be installed #{@rubies}...\n\n"
17
+
18
+ @rubies.each do |r|
19
+ patch = File.join(@app_root, 'rvm', "#{r}.patch")
20
+
21
+ if File.exists?(patch)
22
+ Utils.say("Patch for #{r} is found at #{patch}")
23
+ cmd = "#{@rvm_bin} install #{r} --patch #{patch} --force"
24
+ else
25
+ cmd = "#{@rvm_bin} install #{r} --force"
26
+ end
27
+
28
+ system(cmd)
29
+ end
30
+
31
+ Utils.say_with_time "Setting #{@default_ruby} as default ruby..." do
32
+ `#{@rvm_bin} --default #{@default_ruby}`
33
+ end
34
+
35
+ Utils.say(POST_INSTALL_NOTE)
36
+
37
+ # Utils.say_with_time "Reloading rvm..." do
38
+ # `#{@rvm_bin} reload`
39
+ # end
40
+
41
+ # @default_gems.each do |g|
42
+ # Utils.say_with_time "Installing gem #{g}" do
43
+ # `gem install #{g} --source #{@gem_source}`
44
+ # end
45
+ # end
46
+ end
47
+ end
48
+
49
+ POST_INSTALL_NOTE = <<NOTE
50
+ You're almost done!\n\n
51
+ Do the following inside popo:\n
52
+ 1. rvm reload\n
53
+ 2. gem install cableguy popo dbget_client --source http://gems.caresharing.eu --no-ri --no-rdoc\n\n
54
+ OPTIONAL: (If you use another ruby version). In this example, ree.\n
55
+ 1. rvm use ree-1.8.7-2011.03\n
56
+ 2. gem install cableguy popo dbget_client --source http://gems.caresharing.eu --no-ri --no-rdoc\n
57
+ NOTE
58
+
59
+ end
@@ -0,0 +1,67 @@
1
+ module Popo
2
+ class Sync
3
+ def initialize(app_root, args, db)
4
+ @db = db
5
+ @current_dir = File.basename(Dir.pwd)
6
+ @app_root = app_root
7
+ @cwd = Dir.pwd
8
+ @repos = args
9
+ @info = {}
10
+ end
11
+
12
+ def gather
13
+ @repos.each do |repo|
14
+ if repo =~ /\//
15
+ r = repo.split('/')
16
+ @info[:parent], @info[:name] = r
17
+ @info[:key] = [@info[:parent], @info[:name]].join('.')
18
+ @info[:path] = File.join(@app_root, @info[:parent], @info[:name])
19
+
20
+ get_repo_values(@info[:key])
21
+
22
+ clone_or_update
23
+ else
24
+ gather_many(repo)
25
+ end
26
+ end
27
+
28
+ if @repos.empty?
29
+ if @cwd.eql? @app_root
30
+ popo_folders = @db.get("popo_folders").split(',')
31
+ popo_folders.each { |p| gather_many(p) }
32
+ else
33
+ repo = File.basename(@cwd)
34
+ gather_many(repo)
35
+ end
36
+ end
37
+ end
38
+
39
+ def gather_many(repo)
40
+ children = @db.get_children(repo)
41
+
42
+ raise "No values for parent key \'#{repo}\'." if children.empty?
43
+
44
+ children.each do |c|
45
+ @info[:key] = [repo, c].join('.')
46
+ get_repo_values(@info[:key])
47
+ @info[:path] = File.join(@app_root, repo, c)
48
+
49
+ clone_or_update
50
+ end
51
+ end
52
+
53
+ def clone_or_update
54
+ if !File.exists?(@info[:path])
55
+ GitUtils.git_clone(@info[:host], @info[:path], @info[:branch])
56
+ else
57
+ GitUtils.git_update(@info[:path], @info[:branch])
58
+ end
59
+ end
60
+
61
+
62
+ def get_repo_values(key)
63
+ @info[:branch] = @db.get("#{key}.branch")
64
+ @info[:host] = @db.get("#{key}.repo")
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,46 @@
1
+ require 'benchmark'
2
+
3
+ module Popo
4
+ module Utils
5
+ include Constants
6
+
7
+ def self.say(message, subitem = false)
8
+ puts "#{subitem ? " ->" : "--"} #{message}"
9
+ end
10
+
11
+ def self.say_with_time(message)
12
+ say(message)
13
+ result = nil
14
+ time = Benchmark.measure { result = yield }
15
+ say "%.4fs" % time.real, :subitem
16
+ say("#{result} rows", :subitem) if result.is_a?(Integer)
17
+ result
18
+ end
19
+
20
+ def self.in_popo?(root_path)
21
+ if !ENV.include?('popo_path')
22
+ raise "You must be inside popo!"
23
+ end
24
+ true
25
+ end
26
+
27
+ def self.require_relative_work_popo(root_path)
28
+ popo_work_path = File.expand_path(File.join(root_path, POPO_WORK_PATH))
29
+
30
+ popo_yml = File.expand_path(File.join(popo_work_path, POPO_YML_FILE))
31
+
32
+ if File.exists?(popo_yml)
33
+ popo_config = YAML.load_file(popo_yml)
34
+
35
+ if popo_config.is_a?(Hash)
36
+ POPO_CONFIG.update(popo_config)
37
+ else
38
+ raise "#{POPO_WORK_PATH}/#{POPO_YML_FILE} seems to be wrong."
39
+ end
40
+ else
41
+ raise "#{POPO_YML_FILE} not found."
42
+ end
43
+ end
44
+ end
45
+ end
46
+
@@ -0,0 +1,4 @@
1
+ # sample
2
+ popo_path: %popo_path%
3
+ popo_target: %popo_target%
4
+ envyrc_path: script/envyrc
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ VERSION = "0.1.1"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "popo"
7
+ s.version = VERSION
8
+ s.authors = ["Jan Mendoza"]
9
+ s.email = ["poymode@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Popo ruby and rails repo tool}
12
+ s.description = %q{Ruby and rails repo tool}
13
+
14
+ s.rubyforge_project = "popo"
15
+ s.add_dependency "sequel"
16
+ s.add_dependency "sqlite3"
17
+ s.add_dependency "cableguy"
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
+ s.require_paths = ["lib"]
23
+
24
+ # specify any dependencies here; for example:
25
+ # s.add_development_dependency "rspec"
26
+ # s.add_runtime_dependency "rest-client"
27
+ end
@@ -0,0 +1,60 @@
1
+ POPO_VERSION = 1.2
2
+ POPO_PACKAGE_VERSION = 1
3
+ POPO_PACKAGE_NAME = "popo-#{POPO_VERSION}-#{POPO_PACKAGE_VERSION}_all"
4
+
5
+ def control_file
6
+ "Package: popo\n" +
7
+ "Version: #{POPO_VERSION}-#{POPO_PACKAGE_VERSION}\n" +
8
+ "Section: Caresharing Tools\n" +
9
+ "Priority: optional\n" +
10
+ "Architecture: all\n" +
11
+ "Depends: ruby, git-core, curl, g++\n" +
12
+ "Maintainer: Caresharing Framework Team <framework@caresharing.eu>\n" +
13
+ "Description: Popo utilities\n" +
14
+ " Popo allows you to easily deploy and configure Caresharing applications"
15
+ end
16
+
17
+ def popo_puts(message)
18
+ puts "\e[33m#{message}\e[0;0m"
19
+ end
20
+
21
+ desc "Creates a debian package of popo"
22
+ task :deb do
23
+ popo_puts "Packaging popo version #{POPO_VERSION} as deb..."
24
+
25
+ system "mkdir -p #{POPO_PACKAGE_NAME}/usr/local/bin"
26
+ system "cp popo #{POPO_PACKAGE_NAME}/usr/local/bin"
27
+ system "cp -r ../../popo /tmp/.popo"
28
+ system "mv /tmp/.popo #{POPO_PACKAGE_NAME}/usr/local/bin"
29
+
30
+ # system "mkdir -p #{POPO_PACKAGE_NAME}/etc"
31
+ # system "cp popo_config.yml #{POPO_PACKAGE_NAME}/etc"
32
+
33
+ system "mkdir -p #{POPO_PACKAGE_NAME}/DEBIAN"
34
+ system "echo \"#{control_file}\" > #{POPO_PACKAGE_NAME}/DEBIAN/control"
35
+
36
+ system "dpkg-deb -b #{POPO_PACKAGE_NAME}"
37
+ system "rm -rf #{POPO_PACKAGE_NAME}"
38
+
39
+ popo_puts "Done!"
40
+ end
41
+
42
+ desc "Deploys debian package to remote deb repository"
43
+ task :deploy do
44
+ popo_puts "Copying deb package to remote server..."
45
+ system "scp #{POPO_PACKAGE_NAME}.deb root@styx.caresharing:/var/www/caresharing/"
46
+ popo_puts "Done!"
47
+
48
+ popo_puts "Generating index on deb repo..."
49
+ system "ssh root@styx.caresharing \"cd /var/www/caresharing; ./generate_index\""
50
+ popo_puts "Done!"
51
+ end
52
+
53
+ desc "Cleans up the working directory"
54
+ task :clean do
55
+ popo_puts "Cleaning up... "
56
+ system "rm #{POPO_PACKAGE_NAME}.deb"
57
+ popo_puts "Done!"
58
+ end
59
+
60
+ task :default => "deb"
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env ruby
2
+ require 'yaml'
3
+
4
+ ROOT_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..'))
5
+ BASH_PATH = `which bash`.strip
6
+ ENV_PATH = `which env`.strip
7
+
8
+ env_config_file = File.join(ROOT_PATH, 'config/envy.yml')
9
+
10
+ if File.exists? env_config_file
11
+ env_conf = YAML.load_file(env_config_file)
12
+ popo_path = env_conf['popo_path']
13
+ popo_target = env_conf['popo_target']
14
+ envyrc = "#{ROOT_PATH}/#{env_conf['envyrc_path']}"
15
+ else
16
+ puts "envyrc file not found. Byebye!"
17
+ exit
18
+ end
19
+
20
+ cmd = ARGV.join(' ')
21
+
22
+ finale = "#{ENV_PATH} popo_path=#{popo_path} popo_target=#{popo_target} #{BASH_PATH} -c 'source #{envyrc}; cd #{popo_path}; #{cmd}'"
23
+ system(finale)
24
+ exit $?.exitstatus
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # Let's unload system installed rvm and move path prefix to popo
4
+ unset $(env | awk -F= '/^rvm_/{print $1" "}')
5
+ export rvm_reload_flag=1
6
+ export rvm_prefix=$popo_path
7
+
8
+
9
+ # Now let's load rvm inside popo
10
+ source $rvm_prefix/rvm/scripts/rvm
11
+
12
+ # Load default rvm
13
+ rvm default 1>/dev/null 2>&1
14
+ unset PALMADE_GEMS_DIR
15
+ export PATH="$popo_path/rvm/bin:$popo_path/tools:$PATH"
16
+ export CABLING_PATH=$popo_path/.popo/cabling.yml
17
+ export CABLING_TARGET=$popo_target
18
+
19
+ # this section is for backup
20
+ #unset PALMADE_GEMS_DIR
21
+ #unset rvm_loaded_flag
22
+ #rvm_loaded_flag=1
23
+ #export PATH="$popo_path/rvm/bin:$popo_path/tools:$PATH"
24
+ #export rvm_prefix=$popo_path
25
+ #export rvm_path=$popo_path/rvm
26
+ #export rvm_scripts_path=$rvm_path/scripts
27
+ #export rvm_archives_path=$rvm_path/archives
28
+ #export rvm_src_path=$rvm_path/src
29
+ #export rvm_log_path=$rvm_path/log
30
+ #export rvm_bin_path=$rvm_path/bin
31
+ #export rvm_gems_path=$rvm_path/gems
32
+ #export rvm_hooks_path=$rvm_path/hooks
33
+ #export rvm_tmp_path=$rvm_path/tmp
34
+ #export rvm_gemsets_path=$rvm_path/gemsets
35
+ #export rvm_bin_path=$rvm_path/bin
36
+ #export rvm_patchsets_path=$rvm_path/patchsets
37
+ #export rvm_patches_path=$rvm_path/patches
38
+ #export rvm_gems_cache_path=$rvm_path/gems/cache
39
+ #export rvm_config_path=$rvm_path/config
40
+ #export rvm_rubies_path=$rvm_path/rubies
41
+ #export rvm_gems_path=$rvm_path/gems
42
+ #export rvm_repo_path=$rvm_path/repos
43
+ #unset rvm_loaded_flag
44
+ #source $rvm_scripts_path/rvm
45
+ #rvm default 1>/dev/null 2>&1
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env bash
2
+
3
+ if [[ -z "$popo_path" ]] ; then
4
+ echo "FAIL Please set the popo_path environment var"
5
+ exit -1
6
+ fi
7
+
8
+ if [[ -z "$popo_target" ]] ; then
9
+ echo "FAIL Please set the popo_target environment var"
10
+ exit -1
11
+ fi
12
+
13
+ SHIT="\[\033[33m\]"
14
+ NORMAL="\[\033[0;0m\]"
15
+ BASEPATH=`which basename`
16
+ BASENAME=`$BASEPATH $popo_path`
17
+
18
+ if [[ $PS1 != "" ]] ; then
19
+ if [[ -f /etc/bash.bashrc ]] ; then
20
+ source /etc/bash.bashrc
21
+ fi
22
+
23
+ if [[ -f $HOME/.bashrc ]] ; then
24
+ source $HOME/.bashrc
25
+ fi
26
+
27
+ if [[ $BASENAME != $popo_target ]] ; then
28
+ export PS1="$SHIT(popo $popo_target/$BASENAME) $NORMAL$PS1"
29
+ else
30
+ export PS1="$SHIT(popo $popo_target) $NORMAL$PS1"
31
+ fi
32
+ fi
33
+
34
+ # Let's unload system installed rvm and move path prefix to popo
35
+ unset $(env | awk -F= '/^rvm_/{print $1" "}')
36
+ export rvm_reload_flag=1
37
+ export rvm_prefix=$popo_path
38
+ export CABLING_PATH=$popo_path/.popo/cabling.yml
39
+ export CABLING_TARGET=$popo_target
40
+ source $rvm_prefix/rvm/scripts/rvm
41
+
42
+ # Load default rvm
43
+ rvm default 1>/dev/null 2>&1
44
+ unset PALMADE_GEMS_DIR
45
+ export PATH="$popo_path/rvm/bin:$popo_path/tools:$PATH"
46
+ export rvm_path=$popo_path/rvm
47
+ if [[ -z "$PS1" ]] ; then
48
+ rvm $*
49
+ else
50
+ echo ""
51
+ echo "Welcome to the popoed bash environment, where you can play with your very own popo."
52
+ echo ""
53
+ echo " popo path: $popo_path"
54
+ echo " popo target: $popo_target"
55
+ echo ""
56
+ echo "Remember to keep things clean and civil around here."
57
+ echo "To go back to your normal world, just hit exit."
58
+ echo ""
59
+ echo "But wait, you ask, who needs popo? Baahh, popo's for n00bs!"
60
+ echo ""
61
+ fi
@@ -0,0 +1 @@
1
+ # BETA target
@@ -0,0 +1 @@
1
+ # COMMON TARGET
@@ -0,0 +1 @@
1
+ # DEVELOPMENT TARGET
@@ -0,0 +1 @@
1
+ # PRODUCTION TARGET
@@ -0,0 +1 @@
1
+ # STAGING TARGET
@@ -0,0 +1 @@
1
+ # TEST TARGET
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: popo
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 1
9
+ version: 0.1.1
10
+ platform: ruby
11
+ authors:
12
+ - Jan Mendoza
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2012-01-01 00:00:00 +08:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: sequel
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: sqlite3
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :runtime
45
+ version_requirements: *id002
46
+ - !ruby/object:Gem::Dependency
47
+ name: cableguy
48
+ prerelease: false
49
+ requirement: &id003 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
56
+ version: "0"
57
+ type: :runtime
58
+ version_requirements: *id003
59
+ description: Ruby and rails repo tool
60
+ email:
61
+ - poymode@gmail.com
62
+ executables:
63
+ - envy
64
+ - popo
65
+ extensions: []
66
+
67
+ extra_rdoc_files: []
68
+
69
+ files:
70
+ - .gitignore
71
+ - Gemfile
72
+ - README
73
+ - Rakefile
74
+ - bin/envy
75
+ - bin/popo
76
+ - config/envy.yml.sample
77
+ - config/popo_config.yml.sample
78
+ - lib/hash.rb
79
+ - lib/popo.rb
80
+ - lib/popo/constants.rb
81
+ - lib/popo/database.rb
82
+ - lib/popo/git_utils.rb
83
+ - lib/popo/initializer.rb
84
+ - lib/popo/runner.rb
85
+ - lib/popo/rvm.rb
86
+ - lib/popo/sync.rb
87
+ - lib/popo/utils.rb
88
+ - lib/templates/envy.yml
89
+ - popo.gemspec
90
+ - script/Rakefile
91
+ - script/envy
92
+ - script/envyrc
93
+ - script/poporc
94
+ - targets/beta.rb
95
+ - targets/common.rb
96
+ - targets/development.rb
97
+ - targets/production.rb
98
+ - targets/staging.rb
99
+ - targets/test.rb
100
+ has_rdoc: true
101
+ homepage: ""
102
+ licenses: []
103
+
104
+ post_install_message:
105
+ rdoc_options: []
106
+
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ segments:
115
+ - 0
116
+ version: "0"
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ segments:
123
+ - 0
124
+ version: "0"
125
+ requirements: []
126
+
127
+ rubyforge_project: popo
128
+ rubygems_version: 1.3.7
129
+ signing_key:
130
+ specification_version: 3
131
+ summary: Popo ruby and rails repo tool
132
+ test_files: []
133
+