oleg 0.4.0 → 0.5.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.
- checksums.yaml +4 -4
- data/lib/leg/commands/base_command.rb +8 -1
- data/lib/leg/commands/diff.rb +42 -0
- data/lib/leg/commands/undiff.rb +70 -0
- data/lib/leg/commands.rb +2 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e4f90f727a10550fe24d3d8a9f97c8c05dd38b5
|
4
|
+
data.tar.gz: 98368a97bdfb2e8bc5709ae44e14bb41b72f6f40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1aa44cfd06b459245ae6c0e76ab8da5e80c9d9d8927f6dc378e61f50dad04b18c9837c6d1ad44b911589f3c5c8e94b847e17edaf8062616a88466b16676cea45
|
7
|
+
data.tar.gz: f45af9fcada0e077125787f8c78fb84dbe405cd801950819b41479dae1da874bb7d26ea7c37dab5ac815424f7002884433092489cde45514c575c7d5eaa1830f
|
@@ -36,7 +36,7 @@ class Leg::Commands::BaseCommand
|
|
36
36
|
@steps ||= Dir[File.join(@config[:path], "*")].map do |f|
|
37
37
|
name = File.basename(f)
|
38
38
|
name if File.directory?(f) && name =~ /\A\d+(\.\d+)*(-\w+)*\z/
|
39
|
-
end.compact.sort_by { |s| s.split(".").map(&:to_i) }
|
39
|
+
end.compact.sort_by { |s| s.split(".").map(&:to_i) }.reject { |s| s.to_i.zero? }
|
40
40
|
end
|
41
41
|
|
42
42
|
def current_step
|
@@ -53,6 +53,13 @@ class Leg::Commands::BaseCommand
|
|
53
53
|
current_step || latest_step
|
54
54
|
end
|
55
55
|
|
56
|
+
def step_name(step)
|
57
|
+
parts = step.split('-')
|
58
|
+
if parts.length > 1
|
59
|
+
parts[1..-1].join('-')
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
56
63
|
def step_path(step)
|
57
64
|
File.join(@config[:path], step)
|
58
65
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class Leg::Commands::Diff < Leg::Commands::BaseCommand
|
2
|
+
def self.name
|
3
|
+
"diff"
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.summary
|
7
|
+
"Convert repo into a single file containing diffs for each step"
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
needs! :config
|
12
|
+
|
13
|
+
if !File.exist?(File.join(@config[:path], "repo"))
|
14
|
+
puts "Error: Not in repo mode!"
|
15
|
+
exit!
|
16
|
+
end
|
17
|
+
|
18
|
+
FileUtils.cd(File.join(@config[:path], "repo")) do
|
19
|
+
patches = `git format-patch --stdout -p --no-signature --root master`
|
20
|
+
File.open("../steps.diff", "w") do |f|
|
21
|
+
step_num = 1
|
22
|
+
patches.each_line do |line|
|
23
|
+
if line =~ /^(From|Date)/
|
24
|
+
# skip
|
25
|
+
elsif line =~ /^Subject: \[[^\]]*\] (.*)$/
|
26
|
+
f << "\n" unless step_num == 1
|
27
|
+
parts = $1.split('-')
|
28
|
+
if parts.length >= 2
|
29
|
+
f << "~~~ step: #{parts[1..-1].join('-')}\n"
|
30
|
+
else
|
31
|
+
f << "~~~ step\n"
|
32
|
+
end
|
33
|
+
step_num += 1
|
34
|
+
elsif line.chomp.length > 0
|
35
|
+
f << line
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
@@ -0,0 +1,70 @@
|
|
1
|
+
class Leg::Commands::Undiff < Leg::Commands::BaseCommand
|
2
|
+
def self.name
|
3
|
+
"undiff"
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.summary
|
7
|
+
"Conver steps.diff to step folders"
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
needs! :config
|
12
|
+
|
13
|
+
FileUtils.cd(@config[:path]) do
|
14
|
+
if !File.exist?("steps.diff")
|
15
|
+
puts "Error: steps.diff doesn't exist!"
|
16
|
+
exit!
|
17
|
+
end
|
18
|
+
|
19
|
+
if !steps.empty?
|
20
|
+
puts "Error: Step folders already exist!"
|
21
|
+
exit!
|
22
|
+
end
|
23
|
+
|
24
|
+
if File.exist?("repo")
|
25
|
+
puts "Error: In repo mode!"
|
26
|
+
exit!
|
27
|
+
end
|
28
|
+
|
29
|
+
File.open("steps.diff", "r") do |f|
|
30
|
+
step_num = 0
|
31
|
+
step_dir = nil
|
32
|
+
prev_dir = nil
|
33
|
+
cur_diff = nil
|
34
|
+
while line = f.gets
|
35
|
+
if line =~ /^~~~ step(: \w+(-\w+)*)?$/
|
36
|
+
if cur_diff
|
37
|
+
apply_diff(step_dir, cur_diff)
|
38
|
+
cur_diff = nil
|
39
|
+
end
|
40
|
+
|
41
|
+
step_num += 1
|
42
|
+
step_dir = step_num.to_s
|
43
|
+
step_dir += "-#{$1[2..-1]}" if $1
|
44
|
+
if step_num == 1
|
45
|
+
FileUtils.mkdir(step_dir)
|
46
|
+
else
|
47
|
+
FileUtils.cp_r(prev_dir, step_dir)
|
48
|
+
end
|
49
|
+
prev_dir = step_dir
|
50
|
+
elsif line =~ /^diff --git/
|
51
|
+
apply_diff(step_dir, cur_diff) if cur_diff
|
52
|
+
cur_diff = line
|
53
|
+
elsif cur_diff
|
54
|
+
cur_diff << line
|
55
|
+
end
|
56
|
+
end
|
57
|
+
apply_diff(step_dir, cur_diff) if cur_diff
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def apply_diff(dir, diff)
|
65
|
+
stdin = IO.popen("git --git-dir= apply --directory=#{dir} -", "w")
|
66
|
+
stdin.write diff
|
67
|
+
stdin.close
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
data/lib/leg/commands.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oleg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Ruten
|
@@ -36,9 +36,11 @@ files:
|
|
36
36
|
- lib/leg/cli.rb
|
37
37
|
- lib/leg/commands.rb
|
38
38
|
- lib/leg/commands/base_command.rb
|
39
|
+
- lib/leg/commands/diff.rb
|
39
40
|
- lib/leg/commands/help.rb
|
40
41
|
- lib/leg/commands/pieces.rb
|
41
42
|
- lib/leg/commands/repo.rb
|
43
|
+
- lib/leg/commands/undiff.rb
|
42
44
|
- lib/leg/commands/unrepo.rb
|
43
45
|
homepage: https://github.com/yjerem/leg
|
44
46
|
licenses:
|