copernicium 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pushpull.rb +65 -70
- data/lib/ui.rb +23 -56
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd169e6af9efa888468a19d10ad6f35d24dbb73f
|
4
|
+
data.tar.gz: cd05372657960e8983bbffc8d8a0a754be1176a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 089e0411d8b921641843ce1e4baca1fb07f6f25f28cb31825d63c18f008c8205e29e9ff87cd0a58249b5d37d0d7b684f00060118d9b72f68002638a802edce13
|
7
|
+
data.tar.gz: 8bbadc0b3ca53af1fa3d65475081594732a101667e20cf06df03e159039ed1d22a3f1bea6c604f82d9d9201f9adae2b14e93f4be86d61e28e1a105d47fdd0c83
|
data/lib/pushpull.rb
CHANGED
@@ -9,25 +9,24 @@
|
|
9
9
|
# Clone - cn clone <user> <repo.host:/dir/of/repo>
|
10
10
|
# assumes that the user has ssh keys to the remote server setup
|
11
11
|
|
12
|
+
|
12
13
|
module Copernicium
|
13
14
|
include Workspace
|
14
15
|
module PushPull
|
15
|
-
# Fields in UIComm and what they are for me:
|
16
|
-
# @opts - user
|
17
|
-
# @repo - repo.host:/path/to/repo
|
18
|
-
# @repo - :/path/to/repo
|
19
|
-
# @rev - branch name
|
20
16
|
def PushPull.UICommandParser(comm)
|
21
17
|
# handle parsing out remote info
|
18
|
+
# @opts - user
|
19
|
+
# @repo - repo.host:/path/to/repo
|
20
|
+
# OR /path/to/repo
|
22
21
|
remote = comm.repo.split(':')
|
23
22
|
if remote.length == 2
|
24
23
|
@@host = remote[0]
|
25
24
|
@@path = remote[1]
|
26
25
|
elsif remote.length == 1
|
27
26
|
@@host = "cycle3.csug.rochester.edu"
|
28
|
-
@@path = remote
|
27
|
+
@@path = remote.first
|
29
28
|
else
|
30
|
-
raise 'Remote host information not given'.red
|
29
|
+
raise 'Remote host information not given.'.red
|
31
30
|
end
|
32
31
|
|
33
32
|
@@user = comm.opts
|
@@ -46,9 +45,12 @@ module Copernicium
|
|
46
45
|
end
|
47
46
|
|
48
47
|
# tell user to set up their ssh keys
|
49
|
-
def connection_failure(str = '')
|
48
|
+
def PushPull.connection_failure(str = '')
|
50
49
|
puts "Connection error while: ".red + str
|
51
50
|
puts "Make sure SSH keys are setup.".yel
|
51
|
+
puts "User: ".yel + @@user
|
52
|
+
puts "Host: ".yel + @@host
|
53
|
+
puts "Path: ".yel + @@path
|
52
54
|
false
|
53
55
|
end
|
54
56
|
|
@@ -57,25 +59,33 @@ module Copernicium
|
|
57
59
|
# Description:
|
58
60
|
# a net/ssh wrapper, if given a block will execute block on server,
|
59
61
|
# otherwise tests connection.
|
60
|
-
#
|
61
|
-
# remote: the remote server, formatted "my.server"
|
62
|
-
# user: the user to connect as
|
63
62
|
def PushPull.connect
|
64
63
|
begin
|
65
|
-
Net::SSH.start(@@host, @@user) { |
|
64
|
+
Net::SSH.start(@@host, @@user) { |ssh| yield ssh }
|
66
65
|
true
|
67
66
|
rescue
|
68
67
|
connection_failure 'trying to execute a command'
|
69
68
|
end
|
70
69
|
end
|
71
70
|
|
71
|
+
|
72
|
+
# Function: clone()
|
73
|
+
#
|
74
|
+
# Description:
|
75
|
+
# Grabs a repository from a remote server
|
76
|
+
def PushPull.clone
|
77
|
+
begin
|
78
|
+
PushPull.fetch
|
79
|
+
rescue
|
80
|
+
connection_failure 'trying to clone a repo'
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
|
72
85
|
# Function: transfer()
|
73
86
|
#
|
74
87
|
# Description:
|
75
88
|
# a net/scp wrapper to copy to server
|
76
|
-
#
|
77
|
-
# remote: the remote server and directory to pull from, formatted "my.server"
|
78
|
-
# user: the user to connect as
|
79
89
|
def PushPull.transfer
|
80
90
|
begin
|
81
91
|
Net::SCP.start(@@host, @@user) { |scp| yield scp }
|
@@ -85,22 +95,19 @@ module Copernicium
|
|
85
95
|
end
|
86
96
|
end
|
87
97
|
|
98
|
+
|
88
99
|
# Function: fetch()
|
89
100
|
#
|
90
101
|
# Description:
|
91
102
|
# a net/scp wrapper to copy from server, can take a block or do a one-off copy without one
|
92
103
|
#
|
93
|
-
# remote: the remote server and directory to push to, formatted "my.server:/the/location/we/want"
|
94
|
-
# dest: what we want of the branch, not needed for blocked calls
|
95
104
|
# local: where we want to put the file, not needed for blocked calls
|
96
|
-
# user: the user to connect as
|
97
105
|
def PushPull.fetch(local = Dir.pwd, &block)
|
98
106
|
if block.nil? # we are cloning a repo in this section of code
|
99
107
|
begin
|
100
108
|
Net::SCP.start(@@host, @@user) do |scp|
|
101
|
-
scp.download!
|
109
|
+
scp.download! @@path, local, :recursive => true
|
102
110
|
end
|
103
|
-
true
|
104
111
|
rescue # no ssh keys are setup, die
|
105
112
|
connection_failure 'trying to copy a file'
|
106
113
|
end
|
@@ -108,39 +115,41 @@ module Copernicium
|
|
108
115
|
else # fetch more than one file or folder
|
109
116
|
begin
|
110
117
|
Net::SCP.start(@@host, @@user) { |scp| yield scp }
|
111
|
-
true
|
112
118
|
rescue
|
113
119
|
connection_failure "trying to fetch files"
|
114
120
|
end
|
115
121
|
end
|
122
|
+
true
|
116
123
|
end
|
117
124
|
|
125
|
+
|
118
126
|
# Function: push()
|
119
127
|
#
|
120
128
|
# Description:
|
121
129
|
# pushes local changes on the current branch to a remote branch
|
122
|
-
#
|
123
|
-
# remote: the remote server and directory to push to, formatted "my.server:/the/location/we/want"
|
124
|
-
# branch: the branch that we are pushing to
|
125
|
-
# user: the user to connect as
|
126
130
|
def PushPull.push
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
131
|
+
begin
|
132
|
+
transfer do |ssh|
|
133
|
+
# uploading our history to remote
|
134
|
+
ssh.upload!("#{Dir.pwd}/.cn/history",
|
135
|
+
"#{@@path}/.cn/merging_#{@@user}")
|
136
|
+
|
137
|
+
# uploading our .cn info to remote
|
138
|
+
%w{revs snap}.each do |file|
|
139
|
+
ssh.upload!("#{Dir.pwd}/.cn/#{file}/",
|
140
|
+
"#{@@path}/.cn/#{file}/",
|
141
|
+
:recursive => true)
|
142
|
+
end
|
143
|
+
end # ssh
|
139
144
|
|
140
|
-
|
141
|
-
|
142
|
-
|
145
|
+
connect do |ssh|
|
146
|
+
ssh.exec! "cd #{@@path}"
|
147
|
+
puts ssh.exec! "cn update #{@@user}"
|
148
|
+
end
|
149
|
+
rescue
|
150
|
+
connection_failure "trying to push files"
|
143
151
|
end
|
152
|
+
true
|
144
153
|
end
|
145
154
|
|
146
155
|
|
@@ -149,40 +158,26 @@ module Copernicium
|
|
149
158
|
# Description:
|
150
159
|
# pulls remote changes to the current branch from remote branch
|
151
160
|
#
|
152
|
-
# remote: the remote server and directory to push to, formatted "my.server:/the/location/we/want"
|
153
|
-
# branch: the branch that we are pushing to
|
154
|
-
# user: the user to connect as
|
155
161
|
def PushPull.pull
|
156
|
-
fetch do |session|
|
157
|
-
# uploading our history to remote
|
158
|
-
session.download!("#{@@path}/.cn/merging_#{@@user}",
|
159
|
-
"#{Dir.pwd}/.cn/history")
|
160
|
-
|
161
|
-
# uploading our .cn info to remote
|
162
|
-
%w{revs snap}.each do |file|
|
163
|
-
session.download!("#{@@path}/.cn/#{file}",
|
164
|
-
"#{Dir.pwd}/.cn/#{file}",
|
165
|
-
:recursive => true)
|
166
|
-
end
|
167
|
-
end
|
168
|
-
system "cn update", @@user
|
169
|
-
puts "Remote #{@@repo} pulled.".grn
|
170
|
-
end
|
171
|
-
|
172
|
-
|
173
|
-
# Function: clone()
|
174
|
-
#
|
175
|
-
# Description:
|
176
|
-
# Grabs a repository from a remote server
|
177
|
-
#
|
178
|
-
# remote: the remote server and directory to push to, formatted "my.server:/the/location/we/want"
|
179
|
-
# user: the user to connect as
|
180
|
-
def PushPull.clone
|
181
162
|
begin
|
182
|
-
|
163
|
+
fetch do |session|
|
164
|
+
# uploading our history to remote
|
165
|
+
session.download!("#{@@path}/.cn/merging_#{@@user}",
|
166
|
+
"#{Dir.pwd}/.cn/history")
|
167
|
+
|
168
|
+
# uploading our .cn info to remote
|
169
|
+
%w{revs snap}.each do |file|
|
170
|
+
session.download!("#{@@path}/.cn/#{file}",
|
171
|
+
"#{Dir.pwd}/.cn/#{file}",
|
172
|
+
:recursive => true)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
system "cn update", @@user
|
176
|
+
puts "Remote pulled: ".grn + @@host + @@path
|
183
177
|
rescue
|
184
|
-
connection_failure
|
178
|
+
connection_failure "trying to pull files"
|
185
179
|
end
|
180
|
+
true
|
186
181
|
end
|
187
182
|
end
|
188
183
|
end
|
data/lib/ui.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# user interface module - parse and execute commands
|
2
2
|
# integrates all modules, central module
|
3
3
|
|
4
|
-
VERSION = "0.1.
|
4
|
+
VERSION = "0.1.3"
|
5
5
|
|
6
6
|
module Copernicium
|
7
7
|
# Communication object that will pass commands to backend modules
|
@@ -172,54 +172,34 @@ module Copernicium
|
|
172
172
|
end
|
173
173
|
end
|
174
174
|
|
175
|
-
def
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
if user.nil?
|
182
|
-
user = get "username for push"
|
183
|
-
# Make sure username is the first arg, since PushPull is expecting this.
|
184
|
-
args << user
|
185
|
-
end
|
186
|
-
|
187
|
-
remote = args[1]
|
188
|
-
remote = get "remote path to push to (format: <repo.host:/dir/of/repo>)" if remote.nil?
|
189
|
-
|
190
|
-
branchname = args[2]
|
191
|
-
branchname = get "remote branch to push to" if branchname.nil?
|
192
|
-
|
193
|
-
comm = UIComm.new(command: 'push', opts: args, repo: remote, rev: branchname)
|
194
|
-
# Do the push
|
175
|
+
def clone(args)
|
176
|
+
user = args.first
|
177
|
+
host = args.last
|
178
|
+
user = get "username for push" if user.nil?
|
179
|
+
host = get "host path (<host:/dir/of/repo>)" if host.nil? || user == host
|
180
|
+
comm = UIComm.new(command: 'clone', opts: user, repo: host)
|
195
181
|
PushPull.UICommandParser(comm)
|
182
|
+
return comm
|
183
|
+
end
|
196
184
|
|
197
|
-
|
185
|
+
def push(args)
|
186
|
+
user = args.first
|
187
|
+
host = args.last
|
188
|
+
user = get "username for push" if user.nil?
|
189
|
+
host = get "host path (<host:/dir/of/repo>)" if host.nil? || user == host
|
190
|
+
comm = UIComm.new(command: 'push', opts: user, repo: host)
|
191
|
+
PushPull.UICommandParser(comm)
|
192
|
+
return comm
|
198
193
|
end
|
199
194
|
|
200
195
|
def pull(args)
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
if user.nil?
|
207
|
-
user = get "username for pull"
|
208
|
-
# Make sure username is the first arg, since PushPull is expecting this.
|
209
|
-
args << user
|
210
|
-
end
|
211
|
-
|
212
|
-
remote = args[1]
|
213
|
-
remote = get "remote path to pull from (format: <repo.host:/dir/of/repo>)" if remote.nil?
|
214
|
-
|
215
|
-
branchname = args[2]
|
216
|
-
branchname = get "remote branch to pull from" if branchname.nil?
|
217
|
-
|
218
|
-
comm = UIComm.new(command: 'pull', opts: args, repo: remote, rev: branchname)
|
219
|
-
# Do the pull
|
196
|
+
user = args.first
|
197
|
+
host = args.last
|
198
|
+
user = get "username for push" if user.nil?
|
199
|
+
host = get "host path (<host:/dir/of/repo>)" if host.nil? || user == host
|
200
|
+
comm = UIComm.new(command: 'pull', opts: user, repo: host)
|
220
201
|
PushPull.UICommandParser(comm)
|
221
|
-
|
222
|
-
comm
|
202
|
+
return comm
|
223
203
|
end
|
224
204
|
|
225
205
|
# Take in a revision (snaptshot) id or branch
|
@@ -251,19 +231,6 @@ module Copernicium
|
|
251
231
|
ui
|
252
232
|
end
|
253
233
|
|
254
|
-
# usage: cn clone <user> <repo.host:/dir/of/repo>
|
255
|
-
def clone(args)
|
256
|
-
user = args.shift
|
257
|
-
user = get "username for clone" if user.nil?
|
258
|
-
|
259
|
-
repo = args.first
|
260
|
-
repo = get "url to clone (format: <repo.host:/dir/of/repo>)" if repo.nil?
|
261
|
-
|
262
|
-
comm = UIComm.new(command: 'clone', opts: user, repo: repo)
|
263
|
-
PushPull.UICommandParser(comm)
|
264
|
-
comm
|
265
|
-
end
|
266
|
-
|
267
234
|
def commit(args)
|
268
235
|
messflag = args.find_index('-m')
|
269
236
|
if messflag.nil?
|