This repository has been archived by the owner on Jun 28, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 9
/
readme.rb
84 lines (78 loc) · 1.88 KB
/
readme.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
module Readme
def self.method_missing(method, *args, &block)
if block_given?
VAR.default "README_#{method}", &block
elsif method =~ /.*=$/
VAR["README_#{method}".chop] = args.join
else
VAR["README_#{method}"]
end
end
def self.clear(name)
VAR.delete "README_#{name}"
end
def self.source(str=nil)
VAR["README_source"] ||= ''
if str.nil?
VAR["README_source"]
else
VAR["README_source"] += str
end
end
def self.patch(str=nil)
VAR["README_patch"] ||= ''
if str.nil?
VAR["README_patch"]
else
VAR["README_patch"] += str
end
end
def self.diffconfig
diff = `cd #{workdir 'linux'} && scripts/diffconfig .config.defconfig .config`
added = []
changed = []
deleted = []
diff.each_line do |line|
m = line.match(/ (\w+) (\S+) \-> (\S+)/)
if m
if m[2] == 'n'
added << "#{m[1]}=#{m[3]}"
elsif m[3] == 'n'
deleted << "#{m[1]}=#{m[2]}"
else
changed << "#{line.strip}"
end
else
m = line.match(/([\+\-])(\w+) (\w)/)
raise "can't parse diffconfig line: #{line}" unless m
if m[1] == '+'
unless m[3] == 'n'
added << "#{m[2]}=#{m[3]}"
end
else
deleted << "#{m[2]}=#{m[3]}" unless m[3] == 'n'
end
end
end
added.sort!
changed.sort!
deleted.sort!
str = ''
unless added.empty?
str << "\n\nAdded:\n"
str << "```text\n#{added.join("\n")}\n```\n"
end
unless changed.empty?
str << "\n\nChanged:\n"
str << "```text\n#{changed.join("\n")}\n```\n"
end
unless deleted.empty?
str << "\n\nDeleted:\n"
str << "```text\n#{deleted.join("\n")}\n```\n"
end
str
end
def self.write
File.open(workdir('out/README.md'), 'w') { |file| file.write VAR['README_all'] }
end
end