flooose-gemedit 0.10.3 → 0.11.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.
@@ -1,6 +1,7 @@
1
- $:.unshift File.dirname(__FILE__)
1
+ #$:.unshift File.dirname(__FILE__)
2
2
  require 'gemedit/edit_command'
3
+ require 'gemedit/git_options'
4
+ require 'gemedit/system_commands'
3
5
 
4
6
  module Gemedit
5
-
6
7
  end
@@ -50,10 +50,6 @@ class Gem::Commands::EditCommand < Gem::Command
50
50
  "GEMNAME name of gem to open in your favorite editor"
51
51
  end
52
52
 
53
- def git?
54
- system("which git")
55
- end
56
-
57
53
  def defaults_str # :nodoc:
58
54
  "--version '#{OPTIONS[:version]}' --editor #{OPTIONS[:editor]} --no-dry-run"
59
55
  end
@@ -84,13 +80,20 @@ class Gem::Commands::EditCommand < Gem::Command
84
80
  paths.each do |path|
85
81
  path.gsub!(/"/, '')
86
82
  Dir.chdir("#{path}") do
87
- unless File.exists?('.git')
83
+ if File.exists?('.git')
84
+ if(git_status.empty?)
85
+ alert(notify_of_clean_repo, "Press 'Enter' to continue")
86
+ else
87
+ alert(warn_of_unclean_repo)
88
+ while(carry_out_choice(choose_from_list('Which action would you like to pursue?: ', choices)))
89
+ #alert_warning(warn_of_unclean_repo, "Press 'Enter' to continue")
90
+ end
91
+ end
92
+ else
88
93
  say "Initializing empty git repository in #{path}" if Gem.configuration.verbose
89
94
  system('git init')
90
95
  say "Creating initial commit" if Gem.configuration.verbose
91
96
  system("git add . && git commit -m 'Gemedit generated commit'")
92
- else
93
- say "There seems to already be a git repository for this gem. Not initializing"
94
97
  end
95
98
  end
96
99
  end
@@ -0,0 +1,68 @@
1
+ class Gem::Commands::EditCommand < Gem::Command
2
+ def git?
3
+ system("which git")
4
+ end
5
+
6
+ def git_status
7
+ `git status -s`
8
+ end
9
+
10
+ def git_status_full
11
+ `git status`
12
+ end
13
+
14
+ def git_init
15
+ system('git init')
16
+ end
17
+
18
+ def notify_of_clean_repo
19
+ <<-eos
20
+ \e[32mThere seems to already be a git repository for this gem.
21
+ Since there are no staged or unstaged comments, this just
22
+ serves as a heads-up.\e[0m
23
+ eos
24
+
25
+ #p method(:say)
26
+ end
27
+
28
+ def warn_of_unclean_repo
29
+ warning = <<-eos
30
+ \e[31mThere seems to be an existing git repository for this gem
31
+ and there are also staged and/or unstaged changes. Since
32
+ I will not overwrite existing git repositories and since changes
33
+ to files in this gem will be hard to track, you may want to
34
+ consider addressing this before actually editing the gem.\e[0m
35
+ eos
36
+ end
37
+
38
+ def carry_out_choice(choice)
39
+ case choice[0]
40
+ when /View status*/ then puts git_status_full; true
41
+ when /Permanantly remove*/ then
42
+ `rm -rf .git`
43
+ git_init
44
+ git_commit('Gemedit generated commit')
45
+ false
46
+ when /Perform a commit and edit gem anyway*/ then
47
+ git_commit
48
+ false
49
+ when /Skip commit and edit gem anyway*/ then
50
+ false
51
+ when /Get out of here*/ then
52
+ Process.exit!(0)
53
+ end
54
+ end
55
+
56
+ def choices
57
+ ['View status',
58
+ 'Permanantly remove repository (currently is effectively the same as option 3)',
59
+ 'Perform a commit and edit gem anyway',
60
+ 'Skip commit and edit gem anyway',
61
+ 'Get out of here']
62
+ end
63
+
64
+ protected
65
+ def git_commit(commit_message="Automated commit message from Gemedit")
66
+ `git add . && git commit -m "#{commit_message}"`
67
+ end
68
+ end
@@ -0,0 +1,7 @@
1
+ class Gem::Commands::EditCommand < Gem::Command
2
+ def cd(directory)
3
+ end
4
+
5
+ def which(command)
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Gemedit #:nodoc:
2
- VERSION = "0.10.3"
2
+ VERSION = "0.11.0"
3
3
  end
@@ -1,4 +1,5 @@
1
1
  require 'rubygems/command_manager'
2
2
 
3
3
  require 'gemedit'
4
+
4
5
  Gem::CommandManager.instance.register_command :edit
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flooose-gemedit
3
3
  version: !ruby/object:Gem::Version
4
- hash: 49
4
+ hash: 51
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 10
9
- - 3
10
- version: 0.10.3
8
+ - 11
9
+ - 0
10
+ version: 0.11.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - !binary |
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2010-10-19 00:00:00 +02:00
20
+ date: 2010-11-09 00:00:00 +01:00
21
21
  default_executable:
22
22
  dependencies: []
23
23
 
@@ -32,6 +32,8 @@ extra_rdoc_files: []
32
32
  files:
33
33
  - lib/gemedit.rb
34
34
  - lib/gemedit/edit_command.rb
35
+ - lib/gemedit/git_options.rb
36
+ - lib/gemedit/system_commands.rb
35
37
  - lib/gemedit/version.rb
36
38
  - lib/rubygems_plugin.rb
37
39
  has_rdoc: true