web_git 0.0.4 → 0.1.0

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/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: []