web_git 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/web_git.rb CHANGED
@@ -1,12 +1,207 @@
1
- require "web_git/engine"
2
- require "web_git/diff"
3
- require "diffy"
4
- require "jquery-rails"
5
- require "octicons_helper"
6
- require "tether-rails"
7
- require "turbolinks"
8
- require "git_clone_url"
1
+
2
+ require "web_git/version"
9
3
 
10
4
  module WebGit
11
- # Your code goes here...
5
+ require "active_support"
6
+ require "web_git/diff"
7
+ require "web_git/graph"
8
+ require "web_git/heroku"
9
+ require "web_git/string"
10
+ require "sinatra"
11
+ require "date"
12
+ require "git"
13
+ class Server < Sinatra::Base
14
+ enable :sessions
15
+
16
+ get '/log' do
17
+ graph = WebGit::Graph.new(git)
18
+ graph.to_hash.to_json
19
+ #sha = commit.sha.slice(0..7)
20
+ # commit_date = Date.parse commit.date
21
+ # strftime("%a, %d %b %Y, %H:%M %z") -> time_ago_in_words(commit_date)
22
+ # * 76eff73 - Wed, 11 Mar 2020 19:58:21 +0000 (13 days ago) (HEAD -> current_branch)
23
+ # | blease - Jelani Woods
24
+
25
+ # " * " + sha + " - " + commit_date + " (" + time_ago_in_words(commit_date) + ") " + "\n\t| " + commit.message
26
+ end
27
+
28
+ get "/" do
29
+ initialize_flash
30
+ clear_flash
31
+ # Update git index
32
+ git.status.changed.each do
33
+ git.diff.entries
34
+ end
35
+ status = git.status
36
+ # Just need the file names
37
+ @changed_files = status.changed.keys
38
+ @deleted_files = status.added.keys
39
+ @untracked_files = status.untracked.keys
40
+ @added_files = status.deleted.keys
41
+
42
+ @statuses = [
43
+ { name: "Changed Files:", file_list: @changed_files },
44
+ { name: "Untracked Files:", file_list: @untracked_files },
45
+ { name: "Deleted Files:", file_list: @deleted_files },
46
+ { name: "Added Files:", file_list: @added_files }
47
+ ]
48
+
49
+ @current_branch = git.current_branch
50
+ # g.branch(@current_branch).checkout # maybe?
51
+ # TODO use git gem for status
52
+ @status = `git status`
53
+ @diff = git.diff
54
+ @diff = Diff.diff_to_html(git.diff.to_s)
55
+ if git.log.count > 1
56
+ last_diff = git.diff("HEAD~1", "HEAD").to_s + "\n"
57
+ @last_diff_html = Diff.last_to_html(last_diff)
58
+ end
59
+ @last_diff_html = ""
60
+ @branches = git.branches.local.map(&:full)
61
+
62
+ logs = git.log
63
+ @last_commit_message = logs.first.message
64
+ @head = git.show.split("\n").first.split[1].slice(0..7)
65
+ @list = []
66
+ # (HEAD -> jw-non-sweet)
67
+ # TODO show where branches are on different remotes
68
+ @remotes = git.remotes.map {|remote| "#{remote.name}: #{remote.url}" }
69
+ # (origin/master, origin/jw-non-sweet, origin/HEAD)
70
+ # git.branches[:master].gcommit
71
+
72
+ graph = WebGit::Graph.new(git)
73
+ @graph_hash = graph.to_hash
74
+ @cli_graph_interactive = graph.cli_graph
75
+ @graph_branches = @graph_hash.sort do |branch_a, branch_b|
76
+ branch_b[:log].last[:date] <=> branch_a[:log].last[:date]
77
+ end
78
+
79
+ # TODO heroku stuff
80
+ @heroku_auth = WebGit::Heroku.whoami
81
+ erb :status
82
+ end
83
+
84
+ post "/commit" do
85
+ title = params[:title]
86
+ description = params[:description]
87
+
88
+ # TODO validate commit message
89
+ if title.nil? || title.gsub(" ", "").length == 0
90
+ session[:alert] = "You need to make a commit message."
91
+ redirect to("/")
92
+ end
93
+
94
+ unless description.nil?
95
+ title += "\n#{description}"
96
+ end
97
+
98
+ safe_git_action(:commit, args: title, notice: "Commit created successfully", alert: "Failed to create commit")
99
+ redirect to("/")
100
+ end
101
+
102
+ get "/stash" do
103
+ safe_git_action(:stash, notice: "Changes stashed.", alert: "Failed to stash changes")
104
+ redirect to("/")
105
+ end
106
+
107
+ post "/branch/checkout/new" do
108
+ # TODO validate branch name
109
+ name = params.fetch(:branch_name).downcase.gsub(" ", "_")
110
+ commit = params.fetch(:commit_hash)
111
+
112
+ safe_git_action(:checkout, args: name, notice: "Branch #{name}, created successfully.", alert: "Failed to create branch")
113
+ safe_git_action(:reset_hard, args: commit, alert: "Failed to checkout branch at #{commit}")
114
+ redirect to("/")
115
+ end
116
+
117
+ post "/branch/checkout" do
118
+ name = params.fetch(:branch_name).downcase.gsub(" ", "_")
119
+
120
+ safe_git_action(:checkout, args: name, notice: "Switched to branch: #{name} successfully.", alert: "Failed to switch branch")
121
+ redirect to("/")
122
+ end
123
+
124
+ # TODO make delete request somehow with the links
125
+ post "/branch/delete" do
126
+ name = params.fetch(:branch_name).downcase.gsub(" ", "_")
127
+
128
+ safe_git_action(:delete, args: name, notice: "Deleted branch: #{name} successfully.", alert: "Failed to delete branch")
129
+ redirect to("/")
130
+ end
131
+
132
+ post "/push" do
133
+ # TODO push to heroku eventually, multiple remotes
134
+
135
+ safe_git_action(:push, notice: "Pushed to GitHub successfully.", alert: "Failed to push")
136
+ redirect to("/")
137
+ end
138
+
139
+ post "/pull" do
140
+ safe_git_action(:pull, notice: "Pulled successfully.", alert: "Git Pull failed")
141
+ redirect to("/")
142
+ end
143
+
144
+ post "/heroku/login" do
145
+ email = params[:heroku_email]
146
+ password = params[:heroku_password]
147
+
148
+ begin
149
+ WebGit::Heroku.authenticate(email, password)
150
+ set_flash(:notice, "Successfully logged into Heroku.")
151
+ rescue => exception
152
+ set_flash(:alert, "There was a problem logging into Heroku. #{exception.message}")
153
+ end
154
+ redirect to("/")
155
+ end
156
+
157
+ protected
158
+
159
+ def git
160
+ working_dir = File.exist?(Dir.pwd + "/.git") ? Dir.pwd : Dir.pwd + "/.."
161
+ @git ||= Git.open(working_dir)
162
+ end
163
+
164
+ def safe_git_action(method, **options)
165
+ begin
166
+ case method
167
+ when :push
168
+ git.push('origin', git.current_branch)
169
+ when :pull
170
+ git.pull
171
+ when :stash
172
+ git.add(all: true)
173
+ stash_count = Git::Stashes.new(git).count
174
+ Git::Stash.new(git, "Stash #{stash_count}")
175
+ when :commit
176
+ git.add(all: true)
177
+ git.commit(options[:args])
178
+ when :checkout
179
+ git.branch(options[:args]).checkout
180
+ when :reset_hard
181
+ commit = git.gcommit(options[:args])
182
+ git.reset_hard(commit)
183
+ when :delete
184
+ git.branch(options[:args]).delete
185
+ end
186
+ set_flash(:notice, options[:notice])
187
+ rescue Git::GitExecuteError => exception
188
+ alert_message = "#{options[:alert]}: #{exception.message.split("\n").last}"
189
+ set_flash(:alert, alert_message)
190
+ end
191
+ end
192
+
193
+ def set_flash(name, message)
194
+ session[name] = message
195
+ end
196
+
197
+ def clear_flash
198
+ session[:alert] = nil
199
+ session[:notice] = nil
200
+ end
201
+
202
+ def initialize_flash
203
+ @alert = session[:alert]
204
+ @notice = session[:notice]
205
+ end
206
+ end
12
207
  end
data/web_git.gemspec CHANGED
@@ -2,18 +2,18 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: web_git 0.0.4 ruby lib
5
+ # stub: web_git 0.1.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "web_git".freeze
9
- s.version = "0.0.4"
9
+ s.version = "0.1.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Raghu Betina".freeze, "Jelani Woods".freeze]
14
- s.date = "2019-08-27"
15
- s.description = "WebGit is a Rails Engine that provides an in-browser visual interface to a simple but effective Git workflow. For educational purposes.".freeze
16
- s.email = "raghu@firstdraft.com".freeze
14
+ s.date = "2022-03-30"
15
+ s.description = "WebGit is an embeddable Sinatra app that provides an in-browser visual interface to a simple but effective Git workflow. For educational purposes.".freeze
16
+ s.email = ["raghu@firstdraft.com".freeze, "jelani@firstdraft.com".freeze]
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE.txt",
19
19
  "README.markdown"
@@ -28,93 +28,47 @@ Gem::Specification.new do |s|
28
28
  "README.markdown",
29
29
  "Rakefile",
30
30
  "VERSION",
31
- "ansi2html.sh",
32
- "app/assets/javascripts/web_git/application.js",
33
- "app/assets/javascripts/web_git/bootstrap.min.js",
34
- "app/assets/javascripts/web_git/popper.min.js",
35
- "app/assets/stylesheets/web_git/application.scss",
36
- "app/assets/stylesheets/web_git/bootstrap.min.css",
37
- "app/assets/stylesheets/web_git/font-awesome.min.css",
38
- "app/assets/stylesheets/web_git/octicons.css",
39
- "app/controllers/web_git/application_controller.rb",
40
- "app/controllers/web_git/branches_controller.rb",
41
- "app/controllers/web_git/commands_controller.rb",
42
- "app/controllers/web_git/commits_controller.rb",
43
- "app/views/layouts/web_git/application.html.erb",
44
- "app/views/web_git/commands/status.html.erb",
45
- "config/routes.rb",
31
+ "lib/generators/web_git/install_generator.rb",
32
+ "lib/scripts/heroku_login.exp",
33
+ "lib/views/status.erb",
46
34
  "lib/web_git.rb",
47
35
  "lib/web_git/diff.rb",
48
- "lib/web_git/engine.rb",
36
+ "lib/web_git/exceptions.rb",
37
+ "lib/web_git/graph.rb",
38
+ "lib/web_git/heroku.rb",
39
+ "lib/web_git/string.rb",
49
40
  "lib/web_git/version.rb",
50
41
  "web_git.gemspec"
51
42
  ]
52
43
  s.homepage = "http://github.com/firstdraft/web_git".freeze
53
44
  s.licenses = ["MIT".freeze]
54
- s.rubygems_version = "3.0.3".freeze
45
+ s.rubygems_version = "3.1.6".freeze
55
46
  s.summary = "An in-browser Git GUI for your Rails project".freeze
56
47
 
57
48
  if s.respond_to? :specification_version then
58
49
  s.specification_version = 4
50
+ end
59
51
 
60
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
61
- s.add_runtime_dependency(%q<diffy>.freeze, [">= 0"])
62
- s.add_runtime_dependency(%q<tzinfo-data>.freeze, [">= 0"])
63
- s.add_runtime_dependency(%q<tether-rails>.freeze, [">= 0"])
64
- s.add_runtime_dependency(%q<octicons_helper>.freeze, [">= 0"])
65
- s.add_runtime_dependency(%q<turbolinks>.freeze, ["~> 5"])
66
- s.add_runtime_dependency(%q<jquery-rails>.freeze, [">= 0"])
67
- s.add_runtime_dependency(%q<git_clone_url>.freeze, [">= 0"])
68
- s.add_runtime_dependency(%q<yard>.freeze, [">= 0.9.20"])
69
- s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
70
- s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
71
- s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.1.0"])
72
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
73
- s.add_development_dependency(%q<pry>.freeze, ["~> 0"])
74
- s.add_development_dependency(%q<pry-byebug>.freeze, ["~> 3"])
75
- s.add_development_dependency(%q<pry-doc>.freeze, ["~> 0"])
76
- s.add_development_dependency(%q<pry-remote>.freeze, ["~> 0"])
77
- s.add_development_dependency(%q<pry-rescue>.freeze, ["~> 1"])
78
- s.add_development_dependency(%q<pry-stack_explorer>.freeze, ["~> 0"])
79
- else
80
- s.add_dependency(%q<diffy>.freeze, [">= 0"])
81
- s.add_dependency(%q<tzinfo-data>.freeze, [">= 0"])
82
- s.add_dependency(%q<tether-rails>.freeze, [">= 0"])
83
- s.add_dependency(%q<octicons_helper>.freeze, [">= 0"])
84
- s.add_dependency(%q<turbolinks>.freeze, ["~> 5"])
85
- s.add_dependency(%q<jquery-rails>.freeze, [">= 0"])
86
- s.add_dependency(%q<git_clone_url>.freeze, [">= 0"])
87
- s.add_dependency(%q<yard>.freeze, [">= 0.9.20"])
88
- s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
89
- s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
90
- s.add_dependency(%q<juwelier>.freeze, ["~> 2.1.0"])
91
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
92
- s.add_dependency(%q<pry>.freeze, ["~> 0"])
93
- s.add_dependency(%q<pry-byebug>.freeze, ["~> 3"])
94
- s.add_dependency(%q<pry-doc>.freeze, ["~> 0"])
95
- s.add_dependency(%q<pry-remote>.freeze, ["~> 0"])
96
- s.add_dependency(%q<pry-rescue>.freeze, ["~> 1"])
97
- s.add_dependency(%q<pry-stack_explorer>.freeze, ["~> 0"])
98
- end
52
+ if s.respond_to? :add_runtime_dependency then
53
+ s.add_runtime_dependency(%q<actionview>.freeze, [">= 0"])
54
+ s.add_runtime_dependency(%q<ansispan>.freeze, [">= 0"])
55
+ s.add_runtime_dependency(%q<diffy>.freeze, [">= 0"])
56
+ s.add_runtime_dependency(%q<git>.freeze, [">= 0"])
57
+ s.add_runtime_dependency(%q<sinatra>.freeze, [">= 0"])
58
+ s.add_runtime_dependency(%q<tzinfo-data>.freeze, [">= 0"])
59
+ s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.1.0"])
60
+ s.add_development_dependency(%q<rdoc>.freeze, [">= 6.3.1"])
61
+ s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
99
62
  else
63
+ s.add_dependency(%q<actionview>.freeze, [">= 0"])
64
+ s.add_dependency(%q<ansispan>.freeze, [">= 0"])
100
65
  s.add_dependency(%q<diffy>.freeze, [">= 0"])
66
+ s.add_dependency(%q<git>.freeze, [">= 0"])
67
+ s.add_dependency(%q<sinatra>.freeze, [">= 0"])
101
68
  s.add_dependency(%q<tzinfo-data>.freeze, [">= 0"])
102
- s.add_dependency(%q<tether-rails>.freeze, [">= 0"])
103
- s.add_dependency(%q<octicons_helper>.freeze, [">= 0"])
104
- s.add_dependency(%q<turbolinks>.freeze, ["~> 5"])
105
- s.add_dependency(%q<jquery-rails>.freeze, [">= 0"])
106
- s.add_dependency(%q<git_clone_url>.freeze, [">= 0"])
107
- s.add_dependency(%q<yard>.freeze, [">= 0.9.20"])
108
- s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
109
- s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
110
69
  s.add_dependency(%q<juwelier>.freeze, ["~> 2.1.0"])
111
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
112
- s.add_dependency(%q<pry>.freeze, ["~> 0"])
113
- s.add_dependency(%q<pry-byebug>.freeze, ["~> 3"])
114
- s.add_dependency(%q<pry-doc>.freeze, ["~> 0"])
115
- s.add_dependency(%q<pry-remote>.freeze, ["~> 0"])
116
- s.add_dependency(%q<pry-rescue>.freeze, ["~> 1"])
117
- s.add_dependency(%q<pry-stack_explorer>.freeze, ["~> 0"])
70
+ s.add_dependency(%q<rdoc>.freeze, [">= 6.3.1"])
71
+ s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
118
72
  end
119
73
  end
120
74
 
metadata CHANGED
@@ -1,18 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: web_git
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raghu Betina
8
8
  - Jelani Woods
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-08-27 00:00:00.000000000 Z
12
+ date: 2022-03-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: diffy
15
+ name: actionview
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ">="
@@ -26,7 +26,7 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: tzinfo-data
29
+ name: ansispan
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
@@ -40,7 +40,7 @@ dependencies:
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: tether-rails
43
+ name: diffy
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
@@ -54,7 +54,7 @@ dependencies:
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
- name: octicons_helper
57
+ name: git
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - ">="
@@ -68,21 +68,7 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
- name: turbolinks
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '5'
77
- type: :runtime
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '5'
84
- - !ruby/object:Gem::Dependency
85
- name: jquery-rails
71
+ name: sinatra
86
72
  requirement: !ruby/object:Gem::Requirement
87
73
  requirements:
88
74
  - - ">="
@@ -96,7 +82,7 @@ dependencies:
96
82
  - !ruby/object:Gem::Version
97
83
  version: '0'
98
84
  - !ruby/object:Gem::Dependency
99
- name: git_clone_url
85
+ name: tzinfo-data
100
86
  requirement: !ruby/object:Gem::Requirement
101
87
  requirements:
102
88
  - - ">="
@@ -109,48 +95,6 @@ dependencies:
109
95
  - - ">="
110
96
  - !ruby/object:Gem::Version
111
97
  version: '0'
112
- - !ruby/object:Gem::Dependency
113
- name: yard
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: 0.9.20
119
- type: :runtime
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: 0.9.20
126
- - !ruby/object:Gem::Dependency
127
- name: rspec
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: 3.5.0
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: 3.5.0
140
- - !ruby/object:Gem::Dependency
141
- name: rdoc
142
- requirement: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - "~>"
145
- - !ruby/object:Gem::Version
146
- version: '3.12'
147
- type: :development
148
- prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - "~>"
152
- - !ruby/object:Gem::Version
153
- version: '3.12'
154
98
  - !ruby/object:Gem::Dependency
155
99
  name: juwelier
156
100
  requirement: !ruby/object:Gem::Requirement
@@ -166,106 +110,38 @@ dependencies:
166
110
  - !ruby/object:Gem::Version
167
111
  version: 2.1.0
168
112
  - !ruby/object:Gem::Dependency
169
- name: simplecov
113
+ name: rdoc
170
114
  requirement: !ruby/object:Gem::Requirement
171
115
  requirements:
172
116
  - - ">="
173
117
  - !ruby/object:Gem::Version
174
- version: '0'
118
+ version: 6.3.1
175
119
  type: :development
176
120
  prerelease: false
177
121
  version_requirements: !ruby/object:Gem::Requirement
178
122
  requirements:
179
123
  - - ">="
180
124
  - !ruby/object:Gem::Version
181
- version: '0'
125
+ version: 6.3.1
182
126
  - !ruby/object:Gem::Dependency
183
- name: pry
184
- requirement: !ruby/object:Gem::Requirement
185
- requirements:
186
- - - "~>"
187
- - !ruby/object:Gem::Version
188
- version: '0'
189
- type: :development
190
- prerelease: false
191
- version_requirements: !ruby/object:Gem::Requirement
192
- requirements:
193
- - - "~>"
194
- - !ruby/object:Gem::Version
195
- version: '0'
196
- - !ruby/object:Gem::Dependency
197
- name: pry-byebug
198
- requirement: !ruby/object:Gem::Requirement
199
- requirements:
200
- - - "~>"
201
- - !ruby/object:Gem::Version
202
- version: '3'
203
- type: :development
204
- prerelease: false
205
- version_requirements: !ruby/object:Gem::Requirement
206
- requirements:
207
- - - "~>"
208
- - !ruby/object:Gem::Version
209
- version: '3'
210
- - !ruby/object:Gem::Dependency
211
- name: pry-doc
212
- requirement: !ruby/object:Gem::Requirement
213
- requirements:
214
- - - "~>"
215
- - !ruby/object:Gem::Version
216
- version: '0'
217
- type: :development
218
- prerelease: false
219
- version_requirements: !ruby/object:Gem::Requirement
220
- requirements:
221
- - - "~>"
222
- - !ruby/object:Gem::Version
223
- version: '0'
224
- - !ruby/object:Gem::Dependency
225
- name: pry-remote
226
- requirement: !ruby/object:Gem::Requirement
227
- requirements:
228
- - - "~>"
229
- - !ruby/object:Gem::Version
230
- version: '0'
231
- type: :development
232
- prerelease: false
233
- version_requirements: !ruby/object:Gem::Requirement
234
- requirements:
235
- - - "~>"
236
- - !ruby/object:Gem::Version
237
- version: '0'
238
- - !ruby/object:Gem::Dependency
239
- name: pry-rescue
240
- requirement: !ruby/object:Gem::Requirement
241
- requirements:
242
- - - "~>"
243
- - !ruby/object:Gem::Version
244
- version: '1'
245
- type: :development
246
- prerelease: false
247
- version_requirements: !ruby/object:Gem::Requirement
248
- requirements:
249
- - - "~>"
250
- - !ruby/object:Gem::Version
251
- version: '1'
252
- - !ruby/object:Gem::Dependency
253
- name: pry-stack_explorer
127
+ name: rspec
254
128
  requirement: !ruby/object:Gem::Requirement
255
129
  requirements:
256
130
  - - "~>"
257
131
  - !ruby/object:Gem::Version
258
- version: '0'
132
+ version: 3.5.0
259
133
  type: :development
260
134
  prerelease: false
261
135
  version_requirements: !ruby/object:Gem::Requirement
262
136
  requirements:
263
137
  - - "~>"
264
138
  - !ruby/object:Gem::Version
265
- version: '0'
266
- description: WebGit is a Rails Engine that provides an in-browser visual interface
267
- to a simple but effective Git workflow. For educational purposes.
268
- email: raghu@firstdraft.com
139
+ version: 3.5.0
140
+ description: WebGit is an embeddable Sinatra app that provides an in-browser visual
141
+ interface to a simple but effective Git workflow. For educational purposes.
142
+ email:
143
+ - raghu@firstdraft.com
144
+ - jelani@firstdraft.com
269
145
  executables: []
270
146
  extensions: []
271
147
  extra_rdoc_files:
@@ -281,31 +157,22 @@ files:
281
157
  - README.markdown
282
158
  - Rakefile
283
159
  - VERSION
284
- - ansi2html.sh
285
- - app/assets/javascripts/web_git/application.js
286
- - app/assets/javascripts/web_git/bootstrap.min.js
287
- - app/assets/javascripts/web_git/popper.min.js
288
- - app/assets/stylesheets/web_git/application.scss
289
- - app/assets/stylesheets/web_git/bootstrap.min.css
290
- - app/assets/stylesheets/web_git/font-awesome.min.css
291
- - app/assets/stylesheets/web_git/octicons.css
292
- - app/controllers/web_git/application_controller.rb
293
- - app/controllers/web_git/branches_controller.rb
294
- - app/controllers/web_git/commands_controller.rb
295
- - app/controllers/web_git/commits_controller.rb
296
- - app/views/layouts/web_git/application.html.erb
297
- - app/views/web_git/commands/status.html.erb
298
- - config/routes.rb
160
+ - lib/generators/web_git/install_generator.rb
161
+ - lib/scripts/heroku_login.exp
162
+ - lib/views/status.erb
299
163
  - lib/web_git.rb
300
164
  - lib/web_git/diff.rb
301
- - lib/web_git/engine.rb
165
+ - lib/web_git/exceptions.rb
166
+ - lib/web_git/graph.rb
167
+ - lib/web_git/heroku.rb
168
+ - lib/web_git/string.rb
302
169
  - lib/web_git/version.rb
303
170
  - web_git.gemspec
304
171
  homepage: http://github.com/firstdraft/web_git
305
172
  licenses:
306
173
  - MIT
307
174
  metadata: {}
308
- post_install_message:
175
+ post_install_message:
309
176
  rdoc_options: []
310
177
  require_paths:
311
178
  - lib
@@ -320,9 +187,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
320
187
  - !ruby/object:Gem::Version
321
188
  version: '0'
322
189
  requirements: []
323
- rubyforge_project:
324
- rubygems_version: 2.7.8
325
- signing_key:
190
+ rubygems_version: 3.1.6
191
+ signing_key:
326
192
  specification_version: 4
327
193
  summary: An in-browser Git GUI for your Rails project
328
194
  test_files: []