projmgr 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/{NEWS.md → NEWS.markdown} +3 -0
- data/{README.md → README.markdown} +0 -0
- data/{TODO.md → TODO.markdown} +2 -4
- data/bin/projmgr +92 -104
- data/lib/projmgr.rb +1 -1
- data/projmgr.gemspec +2 -4
- metadata +10 -21
data/{NEWS.md → NEWS.markdown}
RENAMED
File without changes
|
data/{TODO.md → TODO.markdown}
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
# TODO
|
2
2
|
|
3
|
-
## 0.0.
|
3
|
+
## 0.0.8 (March 25, 2011)
|
4
4
|
- Add a detect option, to find projects in a directory not managed
|
5
5
|
- Add support for other SCM's
|
6
6
|
- CVS
|
@@ -9,6 +9,4 @@
|
|
9
9
|
- Git Class
|
10
10
|
- Svn Class
|
11
11
|
- Application class
|
12
|
-
- Cvs Class
|
13
|
-
- Remove Choice and switch to option parser. Choice seems to be abandoned and has issues with ruby 1.9.x
|
14
|
-
|
12
|
+
- Cvs Class
|
data/bin/projmgr
CHANGED
@@ -19,7 +19,7 @@ $stdout.sync = true
|
|
19
19
|
$stderr.sync = true
|
20
20
|
|
21
21
|
require 'rubygems'
|
22
|
-
require '
|
22
|
+
require 'optparse'
|
23
23
|
require 'yaml'
|
24
24
|
|
25
25
|
require 'projmgr'
|
@@ -29,7 +29,7 @@ module ProjMgr
|
|
29
29
|
# ProjMgr Application class
|
30
30
|
#
|
31
31
|
# @author Jacob Hammack <jacob.hammack@hammackj.com>
|
32
|
-
class
|
32
|
+
class Application
|
33
33
|
|
34
34
|
# Creates a ProjMgr instance
|
35
35
|
#
|
@@ -40,127 +40,115 @@ module ProjMgr
|
|
40
40
|
# Main class for the ProjMgr command line tool
|
41
41
|
#
|
42
42
|
def main
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
long '--check_local_changes'
|
53
|
-
desc 'Checks local changes in configured scm repositories'
|
43
|
+
@options = {}
|
44
|
+
|
45
|
+
opt = OptionParser.new do |opt|
|
46
|
+
opt.banner = "#{APP_NAME} v#{VERSION}\nJacob Hammack\nhttp://www.hammackj.com\n\n"
|
47
|
+
opt.banner << "Usage: #{APP_NAME} <options>"
|
48
|
+
opt.separator('')
|
49
|
+
|
50
|
+
opt.on('-c','--check-local-changes','Checks for local changes in configured SCM repositories') do |option|
|
51
|
+
@options[:check] = option
|
54
52
|
end
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
long '--update'
|
59
|
-
desc 'Updates each configured scm repository'
|
53
|
+
|
54
|
+
opt.on('-u','--update-repos','Updates each configured SCM repositories') do |option|
|
55
|
+
@options[:update] = option
|
60
56
|
end
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
desc "Checks out each repo if nothing exists at the 'path' variable"
|
57
|
+
|
58
|
+
opt.on('--checkout-repos','Checks out each of the configured repositories') do |option|
|
59
|
+
@options[:checkout] = option
|
65
60
|
end
|
66
|
-
|
67
|
-
option :create_config do
|
68
|
-
long '--create-config'
|
69
|
-
desc 'Creates a skeleton config file to use'
|
70
|
-
action do
|
71
|
-
if File.exists?(File.expand_path(CONFIG_FILE)) == false
|
72
|
-
File.open(File.expand_path(CONFIG_FILE), 'w+') do |f|
|
73
|
-
3.times do
|
74
|
-
f.write("projectname: \n name: \n path: \n type: \n url: \n\n")
|
75
|
-
end
|
76
|
-
end
|
77
61
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
62
|
+
opt.on('--create-config','Creates a skeleton configuration file to be used') do |option|
|
63
|
+
if File.exists?(File.expand_path(CONFIG_FILE)) == false
|
64
|
+
File.open(File.expand_path(CONFIG_FILE), 'w+') do |f|
|
65
|
+
3.times do
|
66
|
+
f.write("projectname: \n name: \n path: \n type: \n url: \n\n")
|
67
|
+
end
|
83
68
|
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
separator ''
|
88
|
-
separator 'Other Options'
|
89
69
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
option :version do
|
97
|
-
short '-v'
|
98
|
-
long '--version'
|
99
|
-
desc 'Show version'
|
100
|
-
action do
|
101
|
-
puts "#{APP_NAME} - v#{VERSION}"
|
70
|
+
puts "[*] An empty #{CONFIG_FILE} has been created. Please edit and fill in the correct values."
|
71
|
+
exit
|
72
|
+
else
|
73
|
+
puts "[!] #{CONFIG_FILE} already exists. Please delete it if you wish to re-create it."
|
102
74
|
exit
|
103
75
|
end
|
104
76
|
end
|
105
|
-
|
106
|
-
|
77
|
+
|
78
|
+
opt.separator ''
|
79
|
+
opt.separator 'Other Options'
|
80
|
+
|
81
|
+
opt.on_tail('-v', '--version', "Shows application version information") do
|
82
|
+
puts "#{APP_NAME} - v#{VERSION}"
|
83
|
+
exit
|
107
84
|
end
|
108
85
|
|
109
|
-
|
110
|
-
puts
|
111
|
-
end
|
112
|
-
|
113
|
-
if File.exists?(File.expand_path(CONFIG_FILE))
|
114
|
-
@repos = YAML.load_file File.expand_path(CONFIG_FILE)
|
115
|
-
else
|
116
|
-
puts "[!] #{CONFIG_FILE} does not exist. Please run projmgr --create-config, to create it."
|
86
|
+
opt.on_tail("-?", "--help", "Show this message") do
|
87
|
+
puts opt.to_s + "\n"
|
117
88
|
exit
|
118
89
|
end
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
90
|
+
|
91
|
+
opt.separator ''
|
92
|
+
end
|
93
|
+
|
94
|
+
if ARGV.length != 0
|
95
|
+
opt.parse!
|
96
|
+
else
|
97
|
+
puts opt.to_s + "\n"
|
98
|
+
exit
|
99
|
+
end
|
100
|
+
|
101
|
+
if File.exists?(File.expand_path(CONFIG_FILE))
|
102
|
+
@repos = YAML.load_file File.expand_path(CONFIG_FILE)
|
103
|
+
else
|
104
|
+
puts "[!] #{CONFIG_FILE} does not exist. Please run projmgr --create-config, to create it."
|
105
|
+
exit
|
106
|
+
end
|
107
|
+
|
108
|
+
begin
|
109
|
+
@threads = Array.new
|
110
|
+
@repos.each_key do |key|
|
111
|
+
t = Thread.new do
|
112
|
+
if @repos[key]['type'] == "svn"
|
113
|
+
repo = Svn.new @repos[key]['name'], @repos[key]['path'], @root, @repos[key]['url']
|
114
|
+
elsif @repos[key]['type'] == "git"
|
115
|
+
repo = Git.new @repos[key]['name'], @repos[key]['path'], @root, @repos[key]['url']
|
116
|
+
#elsif @repos[key]['type'] == "cvs"
|
117
|
+
# repo = Cvs.new @repos[key]['name'], @repos[key]['path'], @repos[key]['root'], @repos[key]['url']
|
118
|
+
end
|
119
|
+
|
120
|
+
if repo == nil
|
121
|
+
print "[!] #{key} is a malformed entry please correct it.\n"
|
122
|
+
next
|
123
|
+
end
|
124
|
+
|
125
|
+
if @options[:check] != nil
|
126
|
+
status = repo.has_local_changes?
|
127
|
+
|
128
|
+
if status[0] == true
|
129
|
+
print "[!] #{@repos[key]['name']} has local changes\n"
|
130
|
+
#else
|
131
|
+
# print "[!] #{@repos[key]['name']} #{status[1]}\n"
|
149
132
|
end
|
133
|
+
elsif @options[:update] != nil
|
134
|
+
print "[*] Updating #{@repos[key]['name']}...\n #{repo.update}\n"
|
135
|
+
elsif @options[:checkout] != nil
|
136
|
+
print "[*] Checking out #{@repos[key]['name']}...#{repo.checkout}\n"
|
150
137
|
end
|
151
|
-
@threads << t
|
152
|
-
end
|
153
|
-
|
154
|
-
@threads.each do |t|
|
155
|
-
t.join
|
156
138
|
end
|
157
|
-
|
158
|
-
|
159
|
-
|
139
|
+
@threads << t
|
140
|
+
end
|
141
|
+
|
142
|
+
@threads.each do |t|
|
143
|
+
t.join
|
160
144
|
end
|
145
|
+
rescue Exception => e
|
146
|
+
puts "[!] Caught Exception, if you feel this is a error please report it at http://github.com/hammackj/projmgr/issues\n"
|
147
|
+
puts "#{e.inspect}\n #{e.backtrace}"
|
161
148
|
end
|
162
149
|
end
|
150
|
+
end
|
163
151
|
end
|
164
152
|
|
165
|
-
app = ProjMgr::
|
153
|
+
app = ProjMgr::Application.new
|
166
154
|
app.main
|
data/lib/projmgr.rb
CHANGED
data/projmgr.gemspec
CHANGED
@@ -24,12 +24,10 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.required_rubygems_version = ">= 1.3.6"
|
25
25
|
s.rubyforge_project = ProjMgr::APP_NAME
|
26
26
|
|
27
|
-
s.add_development_dependency("rspec", ">= 2.
|
27
|
+
s.add_development_dependency("rspec", ">= 2.5.0")
|
28
28
|
s.add_development_dependency("rcov", ">= 0.9.9")
|
29
29
|
|
30
30
|
s.has_rdoc = 'yard'
|
31
|
-
s.extra_rdoc_files = ["README.
|
32
|
-
|
33
|
-
s.add_dependency('choice', '>= 0.1.4')
|
31
|
+
s.extra_rdoc_files = ["README.markdown", "LICENSE", "NEWS.markdown", "TODO.markdown"]
|
34
32
|
|
35
33
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: projmgr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.7
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jacob Hammack
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-02-
|
13
|
+
date: 2011-02-24 00:00:00 -06:00
|
14
14
|
default_executable: projmgr
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
requirements:
|
22
22
|
- - ">="
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: 2.
|
24
|
+
version: 2.5.0
|
25
25
|
type: :development
|
26
26
|
version_requirements: *id001
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -35,17 +35,6 @@ dependencies:
|
|
35
35
|
version: 0.9.9
|
36
36
|
type: :development
|
37
37
|
version_requirements: *id002
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: choice
|
40
|
-
prerelease: false
|
41
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
|
-
requirements:
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 0.1.4
|
47
|
-
type: :runtime
|
48
|
-
version_requirements: *id003
|
49
38
|
description: projmgr is a source code managment tool for automating project managment
|
50
39
|
email: jacob.hammack@hammackj.com
|
51
40
|
executables:
|
@@ -53,16 +42,16 @@ executables:
|
|
53
42
|
extensions: []
|
54
43
|
|
55
44
|
extra_rdoc_files:
|
56
|
-
- README.
|
45
|
+
- README.markdown
|
57
46
|
- LICENSE
|
58
|
-
- NEWS.
|
59
|
-
- TODO.
|
47
|
+
- NEWS.markdown
|
48
|
+
- TODO.markdown
|
60
49
|
files:
|
61
50
|
- LICENSE
|
62
|
-
- NEWS.
|
51
|
+
- NEWS.markdown
|
63
52
|
- Rakefile
|
64
|
-
- README.
|
65
|
-
- TODO.
|
53
|
+
- README.markdown
|
54
|
+
- TODO.markdown
|
66
55
|
- lib/projmgr/cvs.rb
|
67
56
|
- lib/projmgr/git.rb
|
68
57
|
- lib/projmgr/scm.rb
|
@@ -70,7 +59,7 @@ files:
|
|
70
59
|
- lib/projmgr.rb
|
71
60
|
- projmgr.gemspec
|
72
61
|
- bin/projmgr
|
73
|
-
has_rdoc:
|
62
|
+
has_rdoc: true
|
74
63
|
homepage: http://github.com/hammackj/projmgr/
|
75
64
|
licenses:
|
76
65
|
- BSD
|