githug 0.0.9

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.
Files changed (91) hide show
  1. data/.gitignore +8 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +4 -0
  4. data/README.md +90 -0
  5. data/Rakefile +1 -0
  6. data/bin/githug +4 -0
  7. data/githug.gemspec +27 -0
  8. data/levels/add.rb +17 -0
  9. data/levels/blame.rb +20 -0
  10. data/levels/blame/.githug/COMMIT_EDITMSG +1 -0
  11. data/levels/blame/.githug/HEAD +1 -0
  12. data/levels/blame/.githug/config +5 -0
  13. data/levels/blame/.githug/description +1 -0
  14. data/levels/blame/.githug/hooks/applypatch-msg.sample +15 -0
  15. data/levels/blame/.githug/hooks/commit-msg.sample +24 -0
  16. data/levels/blame/.githug/hooks/post-commit.sample +8 -0
  17. data/levels/blame/.githug/hooks/post-receive.sample +15 -0
  18. data/levels/blame/.githug/hooks/post-update.sample +8 -0
  19. data/levels/blame/.githug/hooks/pre-applypatch.sample +14 -0
  20. data/levels/blame/.githug/hooks/pre-commit.sample +46 -0
  21. data/levels/blame/.githug/hooks/pre-rebase.sample +169 -0
  22. data/levels/blame/.githug/hooks/prepare-commit-msg.sample +36 -0
  23. data/levels/blame/.githug/hooks/update.sample +128 -0
  24. data/levels/blame/.githug/index +0 -0
  25. data/levels/blame/.githug/info/exclude +6 -0
  26. data/levels/blame/.githug/logs/HEAD +5 -0
  27. data/levels/blame/.githug/logs/refs/heads/master +5 -0
  28. data/levels/blame/.githug/objects/00/d6bf5341b263ccaf32e7973be55126eb30a343 +0 -0
  29. data/levels/blame/.githug/objects/05/07c26fed4d111a8344763be9af68af90f0ecf2 +0 -0
  30. data/levels/blame/.githug/objects/09/4094808dc6dc336c93c8602190a9e5f7bd6a11 +2 -0
  31. data/levels/blame/.githug/objects/21/15d78864000292628872941b14521f90187eed +0 -0
  32. data/levels/blame/.githug/objects/31/11dda1f5b08d50ac44b99acabfa54f1e6e72b0 +2 -0
  33. data/levels/blame/.githug/objects/50/8db115ba34a0e4e8667653aebe0265bb4f7e80 +0 -0
  34. data/levels/blame/.githug/objects/5e/8863df752e3b7f2150df7c78f12bef6f1ff00e +0 -0
  35. data/levels/blame/.githug/objects/67/788a4b90180c7588d7bd0ad8032957b0f429ba +0 -0
  36. data/levels/blame/.githug/objects/70/d00535a3a25b0ac1736dd3d306d6271e5427ed +0 -0
  37. data/levels/blame/.githug/objects/97/bdd0cccf9f4b8730f78cb53a81a74f205dbcc2 +1 -0
  38. data/levels/blame/.githug/objects/ab/08819ba3ffaeba17d4f870dc3a458a904519f4 +0 -0
  39. data/levels/blame/.githug/objects/be/96fe46de646f6a5c728f90cc884aef96fa1d6f +0 -0
  40. data/levels/blame/.githug/objects/cd/9c6b9ab1a6f56cccc69b6aa661f1d67ba5fb46 +0 -0
  41. data/levels/blame/.githug/objects/dd/df1d8ebd60eec169c15a5b23cb49a58d2ed5a0 +4 -0
  42. data/levels/blame/.githug/objects/ff/d39c2dbfd94bdbca06d48686e0cbda642f3de7 +1 -0
  43. data/levels/blame/.githug/refs/heads/master +1 -0
  44. data/levels/blame/config.rb +16 -0
  45. data/levels/clone.rb +10 -0
  46. data/levels/clone_to_folder.rb +10 -0
  47. data/levels/commit.rb +17 -0
  48. data/levels/config.rb +28 -0
  49. data/levels/contribute.rb +25 -0
  50. data/levels/diff.rb +16 -0
  51. data/levels/diff/.githug/COMMIT_EDITMSG +1 -0
  52. data/levels/diff/.githug/HEAD +1 -0
  53. data/levels/diff/.githug/config +5 -0
  54. data/levels/diff/.githug/description +1 -0
  55. data/levels/diff/.githug/hooks/applypatch-msg.sample +15 -0
  56. data/levels/diff/.githug/hooks/commit-msg.sample +24 -0
  57. data/levels/diff/.githug/hooks/post-commit.sample +8 -0
  58. data/levels/diff/.githug/hooks/post-receive.sample +15 -0
  59. data/levels/diff/.githug/hooks/post-update.sample +8 -0
  60. data/levels/diff/.githug/hooks/pre-applypatch.sample +14 -0
  61. data/levels/diff/.githug/hooks/pre-commit.sample +46 -0
  62. data/levels/diff/.githug/hooks/pre-rebase.sample +169 -0
  63. data/levels/diff/.githug/hooks/prepare-commit-msg.sample +36 -0
  64. data/levels/diff/.githug/hooks/update.sample +128 -0
  65. data/levels/diff/.githug/index +0 -0
  66. data/levels/diff/.githug/info/exclude +6 -0
  67. data/levels/diff/.githug/logs/HEAD +1 -0
  68. data/levels/diff/.githug/logs/refs/heads/master +1 -0
  69. data/levels/diff/.githug/objects/1b/6582364621c92707b587409cedbc4f77fc0cee +0 -0
  70. data/levels/diff/.githug/objects/4f/703ca9bd25781b6758eeb3c42ed5348610ba6d +2 -0
  71. data/levels/diff/.githug/objects/dc/aa55e97af34402e84d5336da37abcccc23cba6 +3 -0
  72. data/levels/diff/.githug/refs/heads/master +1 -0
  73. data/levels/diff/app.rb +42 -0
  74. data/levels/init.rb +10 -0
  75. data/levels/status.rb +26 -0
  76. data/lib/githug.rb +11 -0
  77. data/lib/githug/cli.rb +68 -0
  78. data/lib/githug/game.rb +40 -0
  79. data/lib/githug/level.rb +83 -0
  80. data/lib/githug/profile.rb +41 -0
  81. data/lib/githug/repository.rb +42 -0
  82. data/lib/githug/ui.rb +73 -0
  83. data/lib/githug/version.rb +3 -0
  84. data/spec/githug/cli_spec.rb +80 -0
  85. data/spec/githug/game_spec.rb +56 -0
  86. data/spec/githug/level_spec.rb +131 -0
  87. data/spec/githug/profile_spec.rb +36 -0
  88. data/spec/githug/repository_spec.rb +98 -0
  89. data/spec/githug/ui_spec.rb +84 -0
  90. data/spec/spec_helper.rb +1 -0
  91. metadata +178 -0
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe Githug::Game do
4
+
5
+ before(:each) do
6
+ @profile = mock
7
+ Githug::Profile.stub(:new).and_return(@profile)
8
+ @game = Githug::Game.new
9
+ @profile.stub(:level).and_return(1)
10
+ @profile.stub(:save)
11
+ @level = mock
12
+ @level.stub(:full_description)
13
+ @level.stub(:setup_level)
14
+ Githug::UI.stub(:puts)
15
+ Githug::Level.stub(:load).and_return(@level)
16
+ end
17
+
18
+ it "should have a profile" do
19
+ @game.profile.should eql(@profile)
20
+ end
21
+
22
+ it "should show a description if the level is 0" do
23
+ @level.should_not_receive(:solve)
24
+ @profile.stub(:level).and_return(0)
25
+ @profile.should_receive(:save)
26
+ Githug::UI.should_receive(:puts).with("Welcome to Githug")
27
+ @profile.should_receive(:level=).with(1)
28
+ @game.play_level
29
+ end
30
+
31
+ it "should echo congratulations if the level is solved" do
32
+ @level.stub(:solve).and_return(true)
33
+ @profile.should_receive(:level=).with(2)
34
+ Githug::UI.should_receive(:success).with("Congratulations, you have solved the level")
35
+ @game.play_level
36
+ end
37
+
38
+ it "should echo congratulations if the level is solved" do
39
+ @level.stub(:solve).and_return(false)
40
+ Githug::UI.should_receive(:error).with("Sorry, this solution is not quite right!")
41
+ @game.play_level
42
+ end
43
+
44
+ it "should output the description of the next level" do
45
+ @level.should_receive(:full_description)
46
+ @profile.stub(:level=)
47
+ @game.level_bump
48
+ end
49
+
50
+ it "should call setup_level for the next level" do
51
+ @level.should_receive(:setup_level)
52
+ @profile.stub(:level=)
53
+ @game.level_bump
54
+ end
55
+
56
+ end
@@ -0,0 +1,131 @@
1
+ require 'spec_helper'
2
+ require 'grit'
3
+
4
+ describe Githug::Level do
5
+
6
+ before(:each) do
7
+ @file = <<-eof
8
+ difficulty 1
9
+ description "A test description"
10
+ setup do
11
+ "test"
12
+ end
13
+ solution do
14
+ Grit::Repo.new("githug/notadir")
15
+ end
16
+
17
+ hint do
18
+ puts "this is a hint"
19
+ end
20
+ eof
21
+ File.stub(:exists?).and_return(true)
22
+ File.stub(:read).and_return(@file)
23
+ @level = Githug::Level.load(1)
24
+ @repo = mock
25
+ @repo.stub(:reset)
26
+ Githug::Repository.stub(:new).and_return(@repo)
27
+ Githug::UI.stub(:puts)
28
+ Githug::UI.stub(:print)
29
+ end
30
+
31
+ it "should mixin UI" do
32
+ Githug::Level.ancestors.should include(Githug::UI)
33
+ end
34
+
35
+
36
+ describe "load" do
37
+
38
+ it "should load the level" do
39
+ File.stub(:dirname).and_return("")
40
+ File.should_receive(:read).with('/../../levels/init.rb').and_return(@file)
41
+ level = Githug::Level.load(1)
42
+ level.instance_variable_get("@difficulty").should eql(1)
43
+ level.instance_variable_get("@description").should eql("A test description")
44
+ end
45
+
46
+ it "should return false if the level does not exist" do
47
+ File.stub(:exists?).and_return(false)
48
+ Githug::Level.load(1).should eql(false)
49
+ end
50
+
51
+ end
52
+
53
+
54
+ describe "solve" do
55
+
56
+ it "should solve the problem" do
57
+ @level.solve.should eql(false)
58
+ end
59
+
60
+ it "should return true if the requirements have been met" do
61
+ Grit::Repo.stub(:new).and_return(true)
62
+ @level.solve.should eql(true)
63
+ end
64
+
65
+ end
66
+
67
+
68
+ describe "full_description" do
69
+
70
+ it "should display a full description" do
71
+ Githug::UI.stub(:puts)
72
+ Githug::UI.should_receive(:puts).with("Level: 1")
73
+ Githug::UI.should_receive(:puts).with("Difficulty: *")
74
+ Githug::UI.should_receive(:puts).with("A test description")
75
+ @level.full_description
76
+ end
77
+
78
+ end
79
+
80
+ describe "setup" do
81
+
82
+ it "should call setup" do
83
+ @level.setup_level.should eql("test")
84
+ end
85
+
86
+ it "should not call the setup if none exists" do
87
+ @level.instance_variable_set("@setup", nil)
88
+ lambda {@level.setup_level}.should_not raise_error(NoMethodError)
89
+ end
90
+
91
+ end
92
+
93
+
94
+ describe "repo" do
95
+
96
+ it "should initialize a repository when repo is called" do
97
+ @level.repo.should equal(@repo)
98
+ Githug::Repository.should_not_receive(:new)
99
+ @level.repo.should equal(@repo)
100
+ end
101
+
102
+ it "should call reset on setup_level" do
103
+ @repo.should_receive(:reset)
104
+ @level.setup_level
105
+ end
106
+
107
+ end
108
+
109
+ describe "hint" do
110
+ it "should display a hint" do
111
+ @level.should_receive(:puts).with("this is a hint")
112
+ @level.show_hint
113
+ end
114
+
115
+ it "should not call the hint if none exist" do
116
+ @level.instance_variable_set("@hint", nil)
117
+ lambda {@level.show_hint}.should_not raise_error(NoMethodError)
118
+ end
119
+ end
120
+
121
+ describe "init_from_level" do
122
+ it "should copy the files from the level folder" do
123
+ FileUtils.should_receive(:cp_r).with("#{@level.level_path}/.", ".")
124
+ FileUtils.should_receive(:mv).with(".githug", ".git")
125
+ @level.init_from_level
126
+ end
127
+ end
128
+
129
+
130
+
131
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe Githug::Profile do
4
+
5
+ before(:each) do
6
+ end
7
+
8
+ it "should load the profile" do
9
+ settings = {:level => 1}
10
+ File.should_receive(:exists?).with(Githug::Profile::PROFILE_FILE).and_return(true)
11
+ File.should_receive(:open).with(Githug::Profile::PROFILE_FILE).and_return("settings")
12
+ YAML.should_receive(:load).with("settings").and_return(settings)
13
+ Githug::Profile.should_receive(:new).with(settings)
14
+ Githug::Profile.load
15
+ end
16
+
17
+ it "should load the defaults if the file does not exist" do
18
+ defaults = {:level => 0}
19
+ Githug::Profile.should_receive(:new).with(defaults)
20
+ Githug::Profile.load
21
+ end
22
+
23
+ it "should allow method acces to getters and setters" do
24
+ profile = Githug::Profile.load
25
+ profile.level.should eql(0)
26
+ profile.level = 1
27
+ profile.level.should eql(1)
28
+ end
29
+
30
+ it "should save the file" do
31
+ profile = Githug::Profile.load
32
+ File.should_receive(:open).with(Githug::Profile::PROFILE_FILE, "w")
33
+ profile.save
34
+ end
35
+
36
+ end
@@ -0,0 +1,98 @@
1
+ require 'spec_helper'
2
+
3
+ describe Githug::Repository do
4
+
5
+ before(:each) do
6
+ @grit = mock
7
+ Grit::Repo.stub(:new).and_return(@grit)
8
+ @repository = Githug::Repository.new
9
+ end
10
+
11
+ describe "initialize" do
12
+
13
+ it "should call grit on initialize" do
14
+ Grit::Repo.should_receive(:new).with(".").and_return(@grit)
15
+ repo = Githug::Repository.new
16
+ repo.grit.should equal(@grit)
17
+ end
18
+
19
+ it "should contain a nil grit if the repo is invalid" do
20
+ Grit::Repo.should_receive(:new).and_raise(Grit::InvalidGitRepositoryError)
21
+ repo = Githug::Repository.new
22
+ repo.grit.should equal(nil)
23
+ end
24
+
25
+ it "should initialize with a location" do
26
+ Grit::Repo.should_receive(:new).with("test").and_return(@grit)
27
+ repo = Githug::Repository.new("test")
28
+ end
29
+
30
+ end
31
+
32
+ describe "reset" do
33
+
34
+ before(:each) do
35
+ FileUtils.stub(:rm_rf)
36
+ end
37
+
38
+ it "should do nothing if the current directory isn't git_hug" do
39
+ Dir.stub(:pwd).and_return("/tmp/foo")
40
+ FileUtils.should_not_receive(:rm_rf)
41
+ @repository.reset
42
+ end
43
+
44
+ it "should remove all the files except .gitignore and .profile.yml" do
45
+ Dir.stub(:pwd).and_return("/tmp/git_hug")
46
+ Dir.stub(:entries).and_return([".profile.yml", ".gitignore", "..", ".", "README", ".git"])
47
+ FileUtils.should_receive(:rm_rf).with("README")
48
+ FileUtils.should_receive(:rm_rf).with(".git")
49
+ @repository.reset
50
+ end
51
+ end
52
+
53
+ describe "valid?" do
54
+ it "should be valid if grit exists" do
55
+ @repository.should be_valid
56
+ end
57
+
58
+ it "should not be valid if grit does not exist" do
59
+ @repository.instance_variable_set("@grit", nil)
60
+ @repository.should_not be_valid
61
+ end
62
+ end
63
+
64
+ describe "init" do
65
+ before(:each) do
66
+ @repo = mock
67
+ Grit::Repo.should_receive(:init).with(".").and_return(@repo)
68
+ end
69
+
70
+ it "should initialize an empty repository and add .gitignore" do
71
+ @repo.should_receive(:add).with(".gitignore")
72
+ @repo.should_receive(:commit).with("added .gitignore")
73
+ @repository.init
74
+ end
75
+
76
+ it "should not add and commit gitignore if prompted" do
77
+ @repo.should_not_receive(:add).with(".gitignore")
78
+ @repo.should_not_receive(:add).with(".profile.yml")
79
+ @repo.should_not_receive(:commit).with("added .gitignore")
80
+ @repository.init(false)
81
+ end
82
+ end
83
+
84
+ describe "method_missing" do
85
+ it "should deletegate to grit if the method exists" do
86
+ @grit.should_receive(:respond_to?).with(:valid_method).and_return(true)
87
+ @grit.should_receive(:valid_method)
88
+ @repository.valid_method
89
+ end
90
+
91
+ it "should not deletegate to grit if the method does not exist" do
92
+ @grit.should_receive(:respond_to?).with(:invalid_method).and_return(false)
93
+ lambda { @repository.invalid_method }.should raise_error(NoMethodError)
94
+ end
95
+ end
96
+
97
+
98
+ end
@@ -0,0 +1,84 @@
1
+ require 'spec_helper'
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Githug::UI do
6
+
7
+ before(:each) do
8
+ @ui = Githug::UI
9
+ @out = StringIO.new
10
+ @in = StringIO.new
11
+ @ui.out_stream = @out
12
+ @ui.in_stream = @in
13
+ end
14
+
15
+ it "should put to the stream" do
16
+ @ui.puts("hello")
17
+ @out.string.should eql("hello\n")
18
+ end
19
+
20
+ it "should print an empty line with no arguments" do
21
+ @ui.puts
22
+ @out.string.should eql("\n")
23
+ end
24
+
25
+ it "should print without a new line" do
26
+ @ui.print("hello")
27
+ @out.string.should eql("hello")
28
+ end
29
+
30
+ it "should fetch gets from input stream" do
31
+ @in.puts "bar"
32
+ @in.rewind
33
+ @ui.gets.should == "bar\n"
34
+ end
35
+
36
+ it "should make a line" do
37
+ @ui.line
38
+ @out.string.should eql("*"*80+"\n")
39
+ end
40
+
41
+ it "should make a wordbox" do
42
+ word_box = <<-eof
43
+ ********************************************************************************
44
+ * Githug *
45
+ ********************************************************************************
46
+ eof
47
+ @ui.word_box("Githug")
48
+ @out.string.should eql(word_box)
49
+ end
50
+
51
+
52
+ it "should request text input" do
53
+ @in.puts "bar"
54
+ @in.rewind
55
+ @ui.request("foo").should == "bar"
56
+ @out.string.should == "foo "
57
+ end
58
+
59
+ it "should ask for yes/no and return true when yes" do
60
+ @ui.should_receive(:request).with('foo? [yn] ').and_return('y')
61
+ @ui.ask("foo?").should be_true
62
+ end
63
+
64
+ it "should ask for yes/no and return false when no" do
65
+ @ui.stub(:request).and_return('n')
66
+ @ui.ask("foo?").should be_false
67
+ end
68
+
69
+ it "should ask for yes/no and return false for any input" do
70
+ @ui.stub(:request).and_return('aklhasdf')
71
+ @ui.ask("foo?").should be_false
72
+ end
73
+
74
+ it "should print out a success message in green" do
75
+ @ui.success("success")
76
+ @out.string.should eql("\033[32msuccess\033[0m\n")
77
+ end
78
+
79
+ it "should print out a error message in red" do
80
+ @ui.error("error")
81
+ @out.string.should eql("\033[31merror\033[0m\n")
82
+ end
83
+
84
+ end
@@ -0,0 +1 @@
1
+ require './lib/githug.rb'
metadata ADDED
@@ -0,0 +1,178 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: githug
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.9
6
+ platform: ruby
7
+ authors:
8
+ - Gary Rennie
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2012-03-14 00:00:00 +00:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rspec
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 2.8.0
25
+ type: :development
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: grit
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: 2.4.1
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: thor
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 0.14.6
47
+ type: :runtime
48
+ version_requirements: *id003
49
+ description: An interactive way to learn git.
50
+ email:
51
+ - webmaster@gazler.com
52
+ executables:
53
+ - githug
54
+ extensions: []
55
+
56
+ extra_rdoc_files: []
57
+
58
+ files:
59
+ - .gitignore
60
+ - .rspec
61
+ - Gemfile
62
+ - README.md
63
+ - Rakefile
64
+ - bin/githug
65
+ - githug.gemspec
66
+ - levels/add.rb
67
+ - levels/blame.rb
68
+ - levels/blame/.githug/COMMIT_EDITMSG
69
+ - levels/blame/.githug/HEAD
70
+ - levels/blame/.githug/config
71
+ - levels/blame/.githug/description
72
+ - levels/blame/.githug/hooks/applypatch-msg.sample
73
+ - levels/blame/.githug/hooks/commit-msg.sample
74
+ - levels/blame/.githug/hooks/post-commit.sample
75
+ - levels/blame/.githug/hooks/post-receive.sample
76
+ - levels/blame/.githug/hooks/post-update.sample
77
+ - levels/blame/.githug/hooks/pre-applypatch.sample
78
+ - levels/blame/.githug/hooks/pre-commit.sample
79
+ - levels/blame/.githug/hooks/pre-rebase.sample
80
+ - levels/blame/.githug/hooks/prepare-commit-msg.sample
81
+ - levels/blame/.githug/hooks/update.sample
82
+ - levels/blame/.githug/index
83
+ - levels/blame/.githug/info/exclude
84
+ - levels/blame/.githug/logs/HEAD
85
+ - levels/blame/.githug/logs/refs/heads/master
86
+ - levels/blame/.githug/objects/00/d6bf5341b263ccaf32e7973be55126eb30a343
87
+ - levels/blame/.githug/objects/05/07c26fed4d111a8344763be9af68af90f0ecf2
88
+ - levels/blame/.githug/objects/09/4094808dc6dc336c93c8602190a9e5f7bd6a11
89
+ - levels/blame/.githug/objects/21/15d78864000292628872941b14521f90187eed
90
+ - levels/blame/.githug/objects/31/11dda1f5b08d50ac44b99acabfa54f1e6e72b0
91
+ - levels/blame/.githug/objects/50/8db115ba34a0e4e8667653aebe0265bb4f7e80
92
+ - levels/blame/.githug/objects/5e/8863df752e3b7f2150df7c78f12bef6f1ff00e
93
+ - levels/blame/.githug/objects/67/788a4b90180c7588d7bd0ad8032957b0f429ba
94
+ - levels/blame/.githug/objects/70/d00535a3a25b0ac1736dd3d306d6271e5427ed
95
+ - levels/blame/.githug/objects/97/bdd0cccf9f4b8730f78cb53a81a74f205dbcc2
96
+ - levels/blame/.githug/objects/ab/08819ba3ffaeba17d4f870dc3a458a904519f4
97
+ - levels/blame/.githug/objects/be/96fe46de646f6a5c728f90cc884aef96fa1d6f
98
+ - levels/blame/.githug/objects/cd/9c6b9ab1a6f56cccc69b6aa661f1d67ba5fb46
99
+ - levels/blame/.githug/objects/dd/df1d8ebd60eec169c15a5b23cb49a58d2ed5a0
100
+ - levels/blame/.githug/objects/ff/d39c2dbfd94bdbca06d48686e0cbda642f3de7
101
+ - levels/blame/.githug/refs/heads/master
102
+ - levels/blame/config.rb
103
+ - levels/clone.rb
104
+ - levels/clone_to_folder.rb
105
+ - levels/commit.rb
106
+ - levels/config.rb
107
+ - levels/contribute.rb
108
+ - levels/diff.rb
109
+ - levels/diff/.githug/COMMIT_EDITMSG
110
+ - levels/diff/.githug/HEAD
111
+ - levels/diff/.githug/config
112
+ - levels/diff/.githug/description
113
+ - levels/diff/.githug/hooks/applypatch-msg.sample
114
+ - levels/diff/.githug/hooks/commit-msg.sample
115
+ - levels/diff/.githug/hooks/post-commit.sample
116
+ - levels/diff/.githug/hooks/post-receive.sample
117
+ - levels/diff/.githug/hooks/post-update.sample
118
+ - levels/diff/.githug/hooks/pre-applypatch.sample
119
+ - levels/diff/.githug/hooks/pre-commit.sample
120
+ - levels/diff/.githug/hooks/pre-rebase.sample
121
+ - levels/diff/.githug/hooks/prepare-commit-msg.sample
122
+ - levels/diff/.githug/hooks/update.sample
123
+ - levels/diff/.githug/index
124
+ - levels/diff/.githug/info/exclude
125
+ - levels/diff/.githug/logs/HEAD
126
+ - levels/diff/.githug/logs/refs/heads/master
127
+ - levels/diff/.githug/objects/1b/6582364621c92707b587409cedbc4f77fc0cee
128
+ - levels/diff/.githug/objects/4f/703ca9bd25781b6758eeb3c42ed5348610ba6d
129
+ - levels/diff/.githug/objects/dc/aa55e97af34402e84d5336da37abcccc23cba6
130
+ - levels/diff/.githug/refs/heads/master
131
+ - levels/diff/app.rb
132
+ - levels/init.rb
133
+ - levels/status.rb
134
+ - lib/githug.rb
135
+ - lib/githug/cli.rb
136
+ - lib/githug/game.rb
137
+ - lib/githug/level.rb
138
+ - lib/githug/profile.rb
139
+ - lib/githug/repository.rb
140
+ - lib/githug/ui.rb
141
+ - lib/githug/version.rb
142
+ - spec/githug/cli_spec.rb
143
+ - spec/githug/game_spec.rb
144
+ - spec/githug/level_spec.rb
145
+ - spec/githug/profile_spec.rb
146
+ - spec/githug/repository_spec.rb
147
+ - spec/githug/ui_spec.rb
148
+ - spec/spec_helper.rb
149
+ has_rdoc: true
150
+ homepage: ""
151
+ licenses: []
152
+
153
+ post_install_message:
154
+ rdoc_options: []
155
+
156
+ require_paths:
157
+ - lib
158
+ required_ruby_version: !ruby/object:Gem::Requirement
159
+ none: false
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: "0"
164
+ required_rubygems_version: !ruby/object:Gem::Requirement
165
+ none: false
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: "0"
170
+ requirements: []
171
+
172
+ rubyforge_project: githug
173
+ rubygems_version: 1.5.2
174
+ signing_key:
175
+ specification_version: 3
176
+ summary: An interactive way to learn git.
177
+ test_files: []
178
+