publicity 0.0.2 → 0.0.3
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.
- data/lib/publicity/prompt.rb +27 -25
- data/lib/publicity/version.rb +1 -1
- metadata +2 -2
data/lib/publicity/prompt.rb
CHANGED
@@ -65,6 +65,7 @@ EOS
|
|
65
65
|
# will get cleaned up after the begin block.
|
66
66
|
tmpdir = Dir.mktmpdir(nil, '/tmp')
|
67
67
|
begin
|
68
|
+
# Determine the credential helper we'll be using
|
68
69
|
if @auth_type === 'basic'
|
69
70
|
# If the user is using basic auth, we'll need to put their credentials
|
70
71
|
# somewhere Git can access.
|
@@ -85,7 +86,7 @@ EOS
|
|
85
86
|
dir = "#{tmpdir}/#{remote_repo[:name]}.git"
|
86
87
|
|
87
88
|
# Clone the original repo
|
88
|
-
`git clone #{remote_repo.clone_url} #{dir} 1> /dev/null`
|
89
|
+
`git clone --bare #{remote_repo.clone_url} #{dir} 1> /dev/null`
|
89
90
|
|
90
91
|
puts "Finished cloning."
|
91
92
|
|
@@ -93,11 +94,11 @@ EOS
|
|
93
94
|
local_repo = Rugged::Repository.new(dir)
|
94
95
|
|
95
96
|
# Get a list of all the branches, and filter out irrelevant branches
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
97
|
+
branches = []
|
98
|
+
regex = /(#{Regexp.quote(@username)}|master|.*2013)/
|
99
|
+
Rugged::Branch.each(local_repo) do |branch|
|
100
|
+
branches.push(branch) if branch.name =~ regex
|
101
|
+
end
|
101
102
|
|
102
103
|
# Ask the user which branch they want to keep; we'll end up deleting
|
103
104
|
# all other branches. Skip over this prompt if the repo only has a
|
@@ -109,27 +110,25 @@ way, anyone who looks at your repository will see your code right away, rather
|
|
109
110
|
than the repository's boilerplate code.
|
110
111
|
|
111
112
|
EOS
|
112
|
-
if branches.
|
113
|
-
|
114
|
-
puts "Only found branch `#{
|
113
|
+
if branches.any? { |b| b.name == 'master' } and branches.length === 1
|
114
|
+
branch = branches[0]
|
115
|
+
puts "Only found branch `#{branch.name}`. Using that one."
|
115
116
|
else
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
q.validate = lambda { |p| p =~ /^(?!\s*$).+/ and branches.include?(p) }
|
124
|
-
q.responses[:not_valid] = "Sorry, that's an invalid branch name. Please enter the name of the branch you'd like to keep: "
|
117
|
+
branch = choose do |menu|
|
118
|
+
menu.index = :number
|
119
|
+
menu.select_by = :index
|
120
|
+
menu.prompt = "Please enter the number of the branch you'd like to keep: "
|
121
|
+
menu.choices(*branches.map { |item| item.name }) do |selection|
|
122
|
+
branches.detect { |b| b.name == selection }
|
123
|
+
end
|
125
124
|
end
|
126
125
|
end
|
127
126
|
|
128
127
|
# Replace the master branch with the user's branch. This ensures that
|
129
128
|
# anyone viewing the repo on GitHub is first presented with the user's
|
130
129
|
# code, not some empty boilerplate project.
|
131
|
-
if not
|
132
|
-
|
130
|
+
if not branch.name =~ /^master$/
|
131
|
+
branch.move('master')
|
133
132
|
end
|
134
133
|
|
135
134
|
# Delete all remote branches
|
@@ -140,7 +139,7 @@ EOS
|
|
140
139
|
end
|
141
140
|
|
142
141
|
# Generate a readme and commit it to the repository.
|
143
|
-
create_readme!(local_repo, project)
|
142
|
+
create_readme!(local_repo, project, remote_repo[:name])
|
144
143
|
|
145
144
|
# Rename the source repo on GitHub to make way for the (nicenamed) new
|
146
145
|
# repository.
|
@@ -274,26 +273,29 @@ EOS
|
|
274
273
|
result
|
275
274
|
end
|
276
275
|
|
277
|
-
def create_readme!(repo, data)
|
276
|
+
def create_readme!(repo, data, remote_repo_name)
|
278
277
|
text = <<EOS
|
279
|
-
##{
|
278
|
+
##{remote_repo_name}
|
280
279
|
|
281
280
|
This is a copy of the work I did on a private repo, originally a project from
|
282
281
|
the [Hack Reactor](http://hackreactor.com) curriculum. This project was worked
|
283
282
|
on with a pair, and as such is representative of the kind of problems that I've
|
284
283
|
tackled, but not of my solo work.
|
285
284
|
|
286
|
-
For a better perspective on my own work, please see #{data[:name]}(#{data[:url]}).
|
285
|
+
For a better perspective on my own work, please see [#{data[:name]}](#{data[:url]}).
|
287
286
|
EOS
|
288
287
|
|
289
288
|
oid = repo.write(text, :blob)
|
290
289
|
index = repo.index
|
290
|
+
# Read the current tree into the index. This prevents us from overwriting
|
291
|
+
# the current index (and thus replacing the entire current tree)
|
292
|
+
index.read_tree(repo.lookup(repo.head.target).tree)
|
291
293
|
index.add(:path => "README.md", :oid => oid, :mode => 0100644)
|
292
294
|
|
293
295
|
author = { :email => "accounts@hackreactor.com", :name => 'Hack Reactor', :time => Time.now }
|
294
296
|
|
295
297
|
Rugged::Commit.create(repo,
|
296
|
-
:tree => repo.lookup(
|
298
|
+
:tree => repo.lookup(index.write_tree),
|
297
299
|
:author => author,
|
298
300
|
:committer => author,
|
299
301
|
:message => "Add a readme (automated commit)",
|
data/lib/publicity/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: publicity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|