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.
- data/.gitignore +8 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/README.md +90 -0
- data/Rakefile +1 -0
- data/bin/githug +4 -0
- data/githug.gemspec +27 -0
- data/levels/add.rb +17 -0
- data/levels/blame.rb +20 -0
- data/levels/blame/.githug/COMMIT_EDITMSG +1 -0
- data/levels/blame/.githug/HEAD +1 -0
- data/levels/blame/.githug/config +5 -0
- data/levels/blame/.githug/description +1 -0
- data/levels/blame/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/blame/.githug/hooks/commit-msg.sample +24 -0
- data/levels/blame/.githug/hooks/post-commit.sample +8 -0
- data/levels/blame/.githug/hooks/post-receive.sample +15 -0
- data/levels/blame/.githug/hooks/post-update.sample +8 -0
- data/levels/blame/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/blame/.githug/hooks/pre-commit.sample +46 -0
- data/levels/blame/.githug/hooks/pre-rebase.sample +169 -0
- data/levels/blame/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/blame/.githug/hooks/update.sample +128 -0
- data/levels/blame/.githug/index +0 -0
- data/levels/blame/.githug/info/exclude +6 -0
- data/levels/blame/.githug/logs/HEAD +5 -0
- data/levels/blame/.githug/logs/refs/heads/master +5 -0
- data/levels/blame/.githug/objects/00/d6bf5341b263ccaf32e7973be55126eb30a343 +0 -0
- data/levels/blame/.githug/objects/05/07c26fed4d111a8344763be9af68af90f0ecf2 +0 -0
- data/levels/blame/.githug/objects/09/4094808dc6dc336c93c8602190a9e5f7bd6a11 +2 -0
- data/levels/blame/.githug/objects/21/15d78864000292628872941b14521f90187eed +0 -0
- data/levels/blame/.githug/objects/31/11dda1f5b08d50ac44b99acabfa54f1e6e72b0 +2 -0
- data/levels/blame/.githug/objects/50/8db115ba34a0e4e8667653aebe0265bb4f7e80 +0 -0
- data/levels/blame/.githug/objects/5e/8863df752e3b7f2150df7c78f12bef6f1ff00e +0 -0
- data/levels/blame/.githug/objects/67/788a4b90180c7588d7bd0ad8032957b0f429ba +0 -0
- data/levels/blame/.githug/objects/70/d00535a3a25b0ac1736dd3d306d6271e5427ed +0 -0
- data/levels/blame/.githug/objects/97/bdd0cccf9f4b8730f78cb53a81a74f205dbcc2 +1 -0
- data/levels/blame/.githug/objects/ab/08819ba3ffaeba17d4f870dc3a458a904519f4 +0 -0
- data/levels/blame/.githug/objects/be/96fe46de646f6a5c728f90cc884aef96fa1d6f +0 -0
- data/levels/blame/.githug/objects/cd/9c6b9ab1a6f56cccc69b6aa661f1d67ba5fb46 +0 -0
- data/levels/blame/.githug/objects/dd/df1d8ebd60eec169c15a5b23cb49a58d2ed5a0 +4 -0
- data/levels/blame/.githug/objects/ff/d39c2dbfd94bdbca06d48686e0cbda642f3de7 +1 -0
- data/levels/blame/.githug/refs/heads/master +1 -0
- data/levels/blame/config.rb +16 -0
- data/levels/clone.rb +10 -0
- data/levels/clone_to_folder.rb +10 -0
- data/levels/commit.rb +17 -0
- data/levels/config.rb +28 -0
- data/levels/contribute.rb +25 -0
- data/levels/diff.rb +16 -0
- data/levels/diff/.githug/COMMIT_EDITMSG +1 -0
- data/levels/diff/.githug/HEAD +1 -0
- data/levels/diff/.githug/config +5 -0
- data/levels/diff/.githug/description +1 -0
- data/levels/diff/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/diff/.githug/hooks/commit-msg.sample +24 -0
- data/levels/diff/.githug/hooks/post-commit.sample +8 -0
- data/levels/diff/.githug/hooks/post-receive.sample +15 -0
- data/levels/diff/.githug/hooks/post-update.sample +8 -0
- data/levels/diff/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/diff/.githug/hooks/pre-commit.sample +46 -0
- data/levels/diff/.githug/hooks/pre-rebase.sample +169 -0
- data/levels/diff/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/diff/.githug/hooks/update.sample +128 -0
- data/levels/diff/.githug/index +0 -0
- data/levels/diff/.githug/info/exclude +6 -0
- data/levels/diff/.githug/logs/HEAD +1 -0
- data/levels/diff/.githug/logs/refs/heads/master +1 -0
- data/levels/diff/.githug/objects/1b/6582364621c92707b587409cedbc4f77fc0cee +0 -0
- data/levels/diff/.githug/objects/4f/703ca9bd25781b6758eeb3c42ed5348610ba6d +2 -0
- data/levels/diff/.githug/objects/dc/aa55e97af34402e84d5336da37abcccc23cba6 +3 -0
- data/levels/diff/.githug/refs/heads/master +1 -0
- data/levels/diff/app.rb +42 -0
- data/levels/init.rb +10 -0
- data/levels/status.rb +26 -0
- data/lib/githug.rb +11 -0
- data/lib/githug/cli.rb +68 -0
- data/lib/githug/game.rb +40 -0
- data/lib/githug/level.rb +83 -0
- data/lib/githug/profile.rb +41 -0
- data/lib/githug/repository.rb +42 -0
- data/lib/githug/ui.rb +73 -0
- data/lib/githug/version.rb +3 -0
- data/spec/githug/cli_spec.rb +80 -0
- data/spec/githug/game_spec.rb +56 -0
- data/spec/githug/level_spec.rb +131 -0
- data/spec/githug/profile_spec.rb +36 -0
- data/spec/githug/repository_spec.rb +98 -0
- data/spec/githug/ui_spec.rb +84 -0
- data/spec/spec_helper.rb +1 -0
- 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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|
+
|