project_group 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+
4
+
5
+ describe "ProjectGroup" do
6
+ it "smoke" do
7
+ 2.should == 2
8
+ end
9
+ end
data/spec/repo_spec.rb ADDED
@@ -0,0 +1,71 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+
4
+
5
+ describe "Repo" do
6
+ it "smoke" do
7
+ 2.should == 2
8
+ end
9
+
10
+ describe "basic" do
11
+ include_context "project"
12
+ project do
13
+ create "a.txt"
14
+ push
15
+ end
16
+
17
+ it 'changed files' do
18
+ proj.uncommitted_files.size.should == 0
19
+ end
20
+ end
21
+
22
+ describe "changed files" do
23
+ include_context "project"
24
+ project do
25
+ create "a.txt"
26
+ File.create "b.txt","zzz"
27
+ end
28
+
29
+ it 'changed files' do
30
+ proj.uncommitted_files.size.should == 1
31
+ end
32
+ end
33
+
34
+ describe "pushed" do
35
+ include_context "project"
36
+ project do
37
+ create "a.txt"
38
+ push
39
+ end
40
+
41
+ it 'pushed' do
42
+ proj.should_not be_needs_push
43
+ end
44
+ end
45
+
46
+ describe "not pushed" do
47
+ include_context "project"
48
+ project do
49
+ create "a.txt"
50
+ push
51
+ create "b.txt"
52
+ end
53
+
54
+ it 'pushed' do
55
+ proj.should be_needs_push
56
+ end
57
+ end
58
+
59
+ describe "not pushed - no origin/master" do
60
+ include_context "project"
61
+ project do
62
+ create "a.txt"
63
+ end
64
+
65
+ it 'pushed' do
66
+ proj.should be_needs_push
67
+ end
68
+ end
69
+
70
+
71
+ end
@@ -0,0 +1,22 @@
1
+ require 'rubygems'
2
+ require 'spork'
3
+
4
+ Spork.prefork do
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+ require 'rspec'
8
+ require 'project_group'
9
+
10
+ # Requires supporting files with custom matchers and macros, etc,
11
+ # in ./support/ and its subdirectories.
12
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
13
+
14
+ RSpec.configure do |config|
15
+ config.fail_fast = false
16
+ end
17
+ end
18
+
19
+ Spork.each_run do
20
+ load File.dirname(__FILE__) + "/../lib/project_group.rb"
21
+ end
22
+
@@ -0,0 +1,19 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe 'Sublime Project' do
4
+ let(:group) do
5
+ res = ProjectGroup::Group.new
6
+ res << "/code/orig/ezq"
7
+ res << "/code/orig/fat_secret"
8
+ res
9
+ end
10
+
11
+ let(:sublime_project) do
12
+ ProjectGroup::SublimeProject.new(:group => group)
13
+ end
14
+
15
+ it 'smoke' do
16
+ str = sublime_project.to_json
17
+ File.create "/code/orig/project_group/ezq.sublime-project",str
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ module ProjectGroup
2
+ class << self
3
+ def ec(cmd)
4
+ raise 'foo'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,162 @@
1
+ class MakeInitial
2
+ def tmp_dir
3
+ File.expand_path(File.dirname(__FILE__) + "/../../tmp")
4
+ end
5
+ def projects_dir
6
+ "#{tmp_dir}/projects"
7
+ end
8
+ def origin_dir
9
+ "#{tmp_dir}/origin"
10
+ end
11
+ def with_projects(&b)
12
+ ec "rm -rf #{tmp_dir}" if FileTest.exists?(tmp_dir)
13
+ ec "mkdir -p #{projects_dir}"
14
+ ec "mkdir #{origin_dir}"
15
+ ec "mkdir #{tmp_dir}/configs"
16
+ ec "mkdir #{tmp_dir}/tmp1"
17
+ Dir.chdir(projects_dir,&b)
18
+ end
19
+ def ec(cmd)
20
+ #puts cmd
21
+ res = `#{cmd} 2>&1`
22
+ #puts res
23
+ res
24
+ end
25
+ def git(cmd)
26
+ ec "git #{cmd}"
27
+ end
28
+
29
+ def project(name,&b)
30
+ Dir.chdir(origin_dir) do
31
+ ec "mkdir #{name}.git"
32
+ Dir.chdir("#{name}.git") do
33
+ git "init --bare"
34
+ end
35
+ end
36
+ ec "mkdir #{name}"
37
+ Dir.chdir(name) do
38
+ ec "git init"
39
+ git "remote add origin file://#{tmp_dir}/origin/#{name}.git"
40
+ yield
41
+ end
42
+ end
43
+
44
+ def push
45
+ git "push origin master"
46
+ end
47
+
48
+ def create(file,body="abc")
49
+ File.create file,body
50
+ git "add #{file}"
51
+ git "commit -m #{file}"
52
+ end
53
+
54
+ def innerx
55
+ project "foo" do
56
+ create "a.txt"
57
+ end
58
+
59
+ project "bar" do
60
+ create "a.txt"
61
+ File.create "b.txt","zzz"
62
+ end
63
+ end
64
+
65
+ def make(&b)
66
+ with_projects do
67
+ instance_eval(&b) if b
68
+ end
69
+ end
70
+
71
+ def run(&b)
72
+ Dir.chdir(projects_dir) do
73
+ instance_eval(&b)
74
+ end
75
+ end
76
+
77
+ class << self
78
+ def make(&b)
79
+ res = new
80
+ res.make(&b)
81
+ end
82
+ def run(&b)
83
+ res = new
84
+ res.run(&b)
85
+ end
86
+ def tmp_dir
87
+ new.tmp_dir
88
+ end
89
+ end
90
+ end
91
+
92
+ shared_context "project" do
93
+ class << self
94
+ fattr(:project_blocks) { {} }
95
+ def project(name=nil,&b)
96
+ name ||= rand(100000000000).to_s
97
+ self.project_blocks[name] = b
98
+ end
99
+
100
+ def setup_projects
101
+ MakeInitial.make
102
+ project_blocks.each do |name,b|
103
+ MakeInitial.run do
104
+ project(name) do
105
+ instance_eval(&b)
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+
112
+ let(:names) { self.class.project_blocks.keys }
113
+ let(:name) { names.first }
114
+
115
+ before(:all) do
116
+ self.class.setup_projects
117
+ end
118
+
119
+ def make_project(name)
120
+ dir = File.expand_path(File.dirname(__FILE__) + "/../../tmp/projects/#{name}")
121
+ ProjectGroup::Single.new(:path => dir)
122
+ end
123
+
124
+ let(:proj) do
125
+ make_project(name)
126
+ end
127
+ let(:singles) do
128
+ names.map { |x| make_project(x) }
129
+ end
130
+
131
+ let(:group) do
132
+ ProjectGroup::Group.new(:singles => singles)
133
+ end
134
+
135
+ end
136
+
137
+ def make_initial_old
138
+ dir = File.expand_path(File.dirname(__FILE__) + "/../tmp")
139
+
140
+
141
+ Dir.chdir(dir) do
142
+ `rm -rf projects` if FileTest.exists?("projects")
143
+ `mkdir projects`
144
+ Dir.chdir("projects") do
145
+ `mkdir foo`
146
+ Dir.chdir('foo') do
147
+ `git init`
148
+ File.create "a.txt","abc"
149
+ `git add a.txt`
150
+ `git commit -m a.txt`
151
+ end
152
+ `mkdir bar`
153
+ Dir.chdir('bar') do
154
+ `git init`
155
+ File.create "a.txt","abc"
156
+ `git add a.txt`
157
+ `git commit -m a.txt`
158
+ `echo z > b.txt`
159
+ end
160
+ end
161
+ end
162
+ end
metadata ADDED
@@ -0,0 +1,255 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: project_group
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Mike Harris
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mharris_ext
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: andand
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: grit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.8.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 2.8.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rdoc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '3.12'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '3.12'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '1.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: jeweler
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 1.8.7
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 1.8.7
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: guard-rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: guard-spork
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ! '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ! '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rb-fsevent
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ~>
158
+ - !ruby/object:Gem::Version
159
+ version: '0.9'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ~>
165
+ - !ruby/object:Gem::Version
166
+ version: '0.9'
167
+ - !ruby/object:Gem::Dependency
168
+ name: lre
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ! '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rr
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ! '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ! '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ description: project_group
196
+ email: mharris717@gmail.com
197
+ executables:
198
+ - proj
199
+ extensions: []
200
+ extra_rdoc_files:
201
+ - LICENSE.txt
202
+ - README.rdoc
203
+ files:
204
+ - .document
205
+ - .rspec
206
+ - Gemfile
207
+ - Gemfile.lock
208
+ - Guardfile
209
+ - LICENSE.txt
210
+ - README.rdoc
211
+ - Rakefile
212
+ - VERSION
213
+ - bin/proj
214
+ - lib/project_group.rb
215
+ - lib/project_group/command.rb
216
+ - lib/project_group/config.rb
217
+ - lib/project_group/group.rb
218
+ - lib/project_group/repo.rb
219
+ - lib/project_group/single.rb
220
+ - lib/project_group/sublime_project.rb
221
+ - project_group.gemspec
222
+ - spec/command_spec.rb
223
+ - spec/config_spec.rb
224
+ - spec/group_spec.rb
225
+ - spec/project_group_spec.rb
226
+ - spec/repo_spec.rb
227
+ - spec/spec_helper.rb
228
+ - spec/sublime_project_spec.rb
229
+ - spec/support/ec.rb
230
+ - spec/support/make_initial.rb
231
+ homepage: http://github.com/mharris717/project_group
232
+ licenses:
233
+ - MIT
234
+ metadata: {}
235
+ post_install_message:
236
+ rdoc_options: []
237
+ require_paths:
238
+ - lib
239
+ required_ruby_version: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ! '>='
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ required_rubygems_version: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - ! '>='
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ requirements: []
250
+ rubyforge_project:
251
+ rubygems_version: 2.0.7
252
+ signing_key:
253
+ specification_version: 4
254
+ summary: project_group
255
+ test_files: []