githug 0.1.7 → 0.1.8

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/README.md CHANGED
@@ -38,6 +38,7 @@ If you want to suggest a level or make a level that has been suggested, check ou
38
38
  * A better way of returning from the solution block
39
39
  * A follow up to the level, more information on a specific command, etc.
40
40
  * More levels!
41
+ * [Windows support](https://github.com/Gazler/githug/wiki/Windows-Support)
41
42
 
42
43
  ##Writing Levels
43
44
 
data/levels/blame.rb CHANGED
@@ -6,13 +6,8 @@ setup do
6
6
  end
7
7
 
8
8
  solution do
9
-
10
- solved = false
11
-
12
9
  offender = repo.commit("97bdd0cccf9f4b8730f78cb53a81a74f205dbcc2").author.name
13
- solved = true if request("Who made the commit with the password?").downcase == offender.downcase
14
-
15
- solved
10
+ request("Who made the commit with the password?").downcase == offender.downcase
16
11
  end
17
12
 
18
13
  hint do
data/levels/branch_at.rb CHANGED
@@ -15,9 +15,7 @@ setup do
15
15
  end
16
16
 
17
17
  solution do
18
- solved = false
19
- solved = true if repo.branches.map(&:name).include?("test_branch") and (repo.commits("test_branch").last.message == "Updating file1")
20
- solved
18
+ repo.branches.map(&:name).include?("test_branch") and (repo.commits("test_branch").last.message == "Updating file1")
21
19
  end
22
20
 
23
21
  hint do
data/levels/merge.rb CHANGED
@@ -2,13 +2,13 @@ difficulty 2
2
2
  description "We have a file in the branch 'feature'; Let's merge it to the master branch"
3
3
 
4
4
  setup do
5
- init_from_level
5
+ init_from_level
6
6
  end
7
7
 
8
8
  solution do
9
- `ls`.strip().split() == ["file1", "file2"]
9
+ `ls`.strip().split() == ["file1", "file2"]
10
10
  end
11
11
 
12
12
  hint do
13
- puts "You want to research the `git merge` command"
13
+ puts "You want to research the `git merge` command"
14
14
  end
data/levels/pull.rb ADDED
@@ -0,0 +1,16 @@
1
+ difficulty 2
2
+
3
+ description "You need to pull changes from your origin repository."
4
+
5
+ setup do
6
+ repo.init
7
+ repo.remote_add("origin", "https://github.com/pull-this/thing-to-pull")
8
+ end
9
+
10
+ solution do
11
+ repo.commits.last.id_abbrev == "1797a7c"
12
+ end
13
+
14
+ hint do
15
+ puts "Check out the remote repositories and research `git pull`."
16
+ end
data/levels/rename.rb CHANGED
@@ -3,16 +3,16 @@ difficulty 3
3
3
  description "We have a file called oldfile.txt. We want to rename it to newfile.txt and stage this change."
4
4
 
5
5
  setup do
6
- repo.init
7
- FileUtils.touch("oldfile.txt")
8
- repo.add("oldfile.txt")
9
- repo.commit_all("Commited oldfile.txt")
6
+ repo.init
7
+ FileUtils.touch("oldfile.txt")
8
+ repo.add("oldfile.txt")
9
+ repo.commit_all("Commited oldfile.txt")
10
10
  end
11
11
 
12
12
  solution do
13
- repo.status["oldfile.txt"].type == "D" && repo.status["newfile.txt"].type == "A" && repo.status["oldfile.txt"].stage.nil?
13
+ repo.status["oldfile.txt"].type == "D" && repo.status["newfile.txt"].type == "A" && repo.status["oldfile.txt"].stage.nil?
14
14
  end
15
15
 
16
16
  hint do
17
- puts "Take a look at `git mv`"
17
+ puts "Take a look at `git mv`"
18
18
  end
@@ -1,22 +1,22 @@
1
1
  difficulty 3
2
- description "Correct the typos in the message of your last commit."
2
+ description "Correct the typo in the message of your first commit."
3
3
 
4
4
  setup do
5
5
  repo.init
6
6
 
7
- FileUtils.touch "README"
8
- repo.add "README"
9
- repo.commit_all "Adding README"
10
-
11
7
  FileUtils.touch "file1"
12
8
  repo.add "file1"
13
- repo.commit_all "A fresh commmit"
9
+ repo.commit_all "First commmit"
10
+
11
+ FileUtils.touch "file2"
12
+ repo.add "file2"
13
+ repo.commit_all "Second commit"
14
14
  end
15
15
 
16
16
  solution do
17
- repo.commits.first.message == "A fresh commit"
17
+ repo.commits[1].message == "First commit"
18
18
  end
19
19
 
20
20
  hint do
21
- puts "Take a look the -i flag of the rebase command"
21
+ puts "Take a look the -i flag of the rebase command."
22
22
  end
@@ -0,0 +1,29 @@
1
+ difficulty 4
2
+
3
+ description "You've made changes within a single file that belong to two different features, but niether of the changes are yet staged. Stage and commit only the changes belonging to the first feature."
4
+
5
+ setup do
6
+ repo.init
7
+ File.open("feature.rb", "w") do |file|
8
+ file.puts("this is the class of my feature")
9
+ end
10
+
11
+ repo.add("feature.rb")
12
+ repo.commit_all("Added initial feature file")
13
+
14
+ File.open("feature.rb", "a") do |file|
15
+ file.puts("This change belongs to the first feature")
16
+ end
17
+
18
+ File.open("feature.rb", "a") do |file|
19
+ file.puts("This change belongs to the second feature")
20
+ end
21
+ end
22
+
23
+ solution do
24
+ `git diff --staged` =~ /\+This change belongs to the first feature/ && `git diff` =~ /\+This change belongs to the second feature/
25
+ end
26
+
27
+ hint do
28
+ puts "Read about the -p flag which can be passed to the 'add' command; man git-add. After that have a look the options available while using 'add -p' mode to manupulate hunks."
29
+ end
data/lib/githug/level.rb CHANGED
@@ -5,8 +5,8 @@ module Githug
5
5
  LEVELS = [nil, "init", "add", "commit", "config", "clone",
6
6
  "clone_to_folder", "ignore", "status", "rm", "rm_cached", "rename",
7
7
  "log", "tag", "commit_ammend", "reset", "checkout_file", "remote",
8
- "remote_url", "remote_add", "diff", "blame", "branch", "checkout",
9
- "branch_at", "merge", "rename_commit", "squash", "contribute"]
8
+ "remote_url", "pull", "remote_add", "diff", "blame", "branch", "checkout",
9
+ "branch_at", "merge", "rename_commit", "squash", "stage_lines", "contribute"]
10
10
 
11
11
  attr_accessor :level_no, :level_path
12
12
 
@@ -1,3 +1,3 @@
1
1
  module Githug
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: githug
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.7
5
+ version: 0.1.8
6
6
  platform: ruby
7
7
  authors:
8
8
  - Gary Rennie
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-03-20 00:00:00 +00:00
13
+ date: 2012-03-22 00:00:00 +00:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -177,6 +177,7 @@ files:
177
177
  - levels/merge/.githug/refs/heads/feature
178
178
  - levels/merge/.githug/refs/heads/master
179
179
  - levels/merge/file1
180
+ - levels/pull.rb
180
181
  - levels/remote.rb
181
182
  - levels/remote_add.rb
182
183
  - levels/remote_url.rb
@@ -186,13 +187,13 @@ files:
186
187
  - levels/rm.rb
187
188
  - levels/rm_cached.rb
188
189
  - levels/squash.rb
190
+ - levels/stage_lines.rb
189
191
  - levels/status.rb
190
192
  - levels/tag.rb
191
193
  - lib/githug.rb
192
194
  - lib/githug/cli.rb
193
195
  - lib/githug/game.rb
194
196
  - lib/githug/level.rb
195
- - lib/githug/level.rb.orig
196
197
  - lib/githug/profile.rb
197
198
  - lib/githug/repository.rb
198
199
  - lib/githug/ui.rb
@@ -1,120 +0,0 @@
1
- module Githug
2
- class Level
3
- include UI
4
-
5
- LEVELS = [nil, "init", "add", "commit", "config", "clone",
6
- "clone_to_folder", "ignore", "status", "rm", "rm_cached", "rename",
7
- <<<<<<< HEAD
8
- "log", "tag", "commit_ammend", "reset", "checkout_file", "remote",
9
- "remote_url", "remote_add", "diff", "blame", "branch", "checkout",
10
- =======
11
- "log", "commit_ammend", "reset", "checkout_file", "remote",
12
- "remote_url", "remote_add", "diff", "blame", "branch", "checkout", "branch_at",
13
- >>>>>>> manojlds/master
14
- "merge", "squash", "contribute"]
15
-
16
- attr_accessor :level_no, :level_path
17
-
18
- class << self
19
-
20
- def load(level_name)
21
- path = "#{File.dirname(__FILE__)}/../../levels/#{level_name}.rb"
22
- setup(path)
23
- end
24
-
25
- def load_from_file(path)
26
- setup(path)
27
- end
28
-
29
- def setup(path)
30
- level_name = File.basename(path, File.extname(path))
31
- #Remove .rb extension, WTB a better way to do this
32
- level_path = path[0..-4]
33
- level = new
34
- return false unless File.exists?(path)
35
- level.instance_eval(File.read(path))
36
- level.level_no = LEVELS.index(level_name) || 1
37
- level.level_path = level_path
38
- level
39
- end
40
-
41
- end
42
-
43
- def init_from_level
44
- FileUtils.cp_r("#{level_path}/.", ".")
45
- FileUtils.mv(".githug", ".git")
46
- end
47
-
48
- def difficulty(num)
49
- @difficulty = num
50
- end
51
-
52
- def description(description)
53
- @description = description
54
- end
55
-
56
- def solution(&block)
57
- @solution = block
58
- end
59
-
60
- def setup(&block)
61
- @setup = block
62
- end
63
-
64
- def hint(&hint)
65
- @hint = hint
66
- end
67
-
68
- def hints(hints)
69
- @hints = hints
70
- end
71
-
72
- def full_description
73
- UI.puts
74
- UI.puts "Level: #{level_no}"
75
- UI.puts "Difficulty: #{"*"*@difficulty}"
76
- UI.puts
77
- UI.puts @description
78
- UI.puts
79
- end
80
-
81
- def setup_level
82
- repo.reset
83
- @setup.call if @setup
84
- end
85
-
86
- def repo(location = "")
87
- @repo ||= Repository.new(location)
88
- end
89
-
90
- def solve
91
- @solution.call
92
- rescue
93
- false
94
- end
95
-
96
- def test
97
- @solution.call
98
- end
99
-
100
- def show_hint
101
- UI.word_box("Githug")
102
- profile = Profile.load
103
- current_hint_index = profile.current_hint_index
104
- if @hints
105
- puts @hints[current_hint_index]
106
- if current_hint_index < @hints.size - 1
107
- profile.current_hint_index += 1
108
- profile.save
109
- else
110
- profile.current_hint_index = 0
111
- profile.save
112
- end
113
- elsif @hint
114
- @hint.call
115
- else
116
- UI.puts("No hints available for this level")
117
- end
118
- end
119
- end
120
- end