drain 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +6 -2
- data/.travis.yml +10 -0
- data/.yardopts +6 -1
- data/Gemfile +7 -0
- data/LICENSE.txt +1 -1
- data/README.md +11 -5
- data/Rakefile +7 -12
- data/drain.gemspec +15 -5
- data/gemspec.yml +4 -3
- data/lib/dr.rb +1 -0
- data/lib/{drain → dr}/base.rb +0 -0
- data/lib/{drain → dr}/base/bool.rb +0 -0
- data/lib/dr/base/converter.rb +33 -0
- data/lib/{drain → dr}/base/encoding.rb +0 -0
- data/lib/dr/base/eruby.rb +284 -0
- data/lib/{drain → dr}/base/functional.rb +2 -2
- data/lib/dr/base/graph.rb +378 -0
- data/lib/dr/base/utils.rb +28 -0
- data/lib/dr/parse.rb +1 -0
- data/lib/dr/parse/simple_parser.rb +70 -0
- data/lib/{drain → dr}/parse/time_parse.rb +0 -0
- data/lib/dr/ruby_ext.rb +1 -0
- data/lib/dr/ruby_ext/core_ext.rb +7 -0
- data/lib/{drain/ruby_ext/core_ext.rb → dr/ruby_ext/core_modules.rb} +67 -27
- data/lib/{drain → dr}/ruby_ext/meta_ext.rb +57 -30
- data/lib/dr/tools.rb +1 -0
- data/lib/{drain → dr}/tools/gtk.rb +0 -0
- data/lib/dr/version.rb +4 -0
- data/lib/drain.rb +2 -1
- data/test/helper.rb +12 -1
- data/test/test_converter.rb +42 -0
- data/test/test_core_ext.rb +116 -0
- data/test/test_graph.rb +126 -0
- data/test/test_meta.rb +65 -0
- data/test/test_simple_parser.rb +41 -0
- metadata +45 -21
- data/.document +0 -3
- data/lib/drain/base/eruby.rb +0 -28
- data/lib/drain/base/graph.rb +0 -213
- data/lib/drain/parse.rb +0 -5
- data/lib/drain/parse/simple_parser.rb +0 -61
- data/lib/drain/ruby_ext.rb +0 -5
- data/lib/drain/tools.rb +0 -5
- data/lib/drain/tools/git.rb +0 -116
- data/lib/drain/version.rb +0 -4
data/lib/drain/parse.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
module DR
|
2
|
-
#utilities to parse some strings into name values
|
3
|
-
module SimpleParser
|
4
|
-
extend self
|
5
|
-
|
6
|
-
#takes a string 'name:value' and return name and value
|
7
|
-
#can specify a default value; if the default is true we match
|
8
|
-
#no-name as name:false
|
9
|
-
def parse_namevalue(nameval, sep: ':', default: nil)
|
10
|
-
name,*val=nameval.split(sep)
|
11
|
-
if val.empty?
|
12
|
-
if default == true
|
13
|
-
#special case where if name begins by no- we return false
|
14
|
-
if name =~ /^no-(.*)$/
|
15
|
-
return $1, false
|
16
|
-
else
|
17
|
-
return name, true
|
18
|
-
end
|
19
|
-
else
|
20
|
-
return name, default
|
21
|
-
end
|
22
|
-
else
|
23
|
-
value=val.join(sep)
|
24
|
-
return name,value
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
#takes a string as "name:value!option1=ploum!option2=plam,name2:value2!!globalopt=plim,globalopt2=plam"
|
29
|
-
#and return the hash
|
30
|
-
#{values: {name: value, name2: value2},
|
31
|
-
# localopt: {name: {option1:ploum,option2:plam}},
|
32
|
-
# globalopt: {globalopt: plim, globalopt2: plam},
|
33
|
-
# opt: {name: {option1:ploum,option2:plam,globalopt: plim, globalopt2: plam}, name2:{{globalopt: plim, globalopt2: plam}}}
|
34
|
-
def parse_string(s)
|
35
|
-
r={values: {}, local_opts: {}, global_opts: {}, opts: {}}
|
36
|
-
args,*globopts=s.split('!!')
|
37
|
-
globopts.map {|g| g.split(',')}.flatten.each do |g|
|
38
|
-
name,value=parse_namevalue(g, sep: '=', default: true)
|
39
|
-
r[:global_opts][name]=value
|
40
|
-
end
|
41
|
-
args.split(',').each do |arg|
|
42
|
-
arg,*localopts=arg.split('!')
|
43
|
-
name,value=parse_namevalue(arg)
|
44
|
-
r[:values][name]=value
|
45
|
-
r[:local_opts][name]={}
|
46
|
-
localopts.each do |o|
|
47
|
-
oname,ovalue=parse_namevalue(o, sep: '=', default: true)
|
48
|
-
r[:local_opts][name][oname]=ovalue
|
49
|
-
end
|
50
|
-
r[:local_opts].each do |name,hash|
|
51
|
-
r[:opts][name]=r[:local_opts][name].dup
|
52
|
-
r[:global_opts].each do |k,v|
|
53
|
-
r[:opts][name][k]||=v
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
return r
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
61
|
-
end
|
data/lib/drain/ruby_ext.rb
DELETED
data/lib/drain/tools.rb
DELETED
data/lib/drain/tools/git.rb
DELETED
@@ -1,116 +0,0 @@
|
|
1
|
-
require 'shellwords'
|
2
|
-
require 'dr/base/bool'
|
3
|
-
|
4
|
-
module DR
|
5
|
-
#git functions helper
|
6
|
-
module Git
|
7
|
-
extend(self)
|
8
|
-
def git?(quiet:false)
|
9
|
-
launch="git rev-parse"
|
10
|
-
launch=launch + " 2>/dev/null" if quiet
|
11
|
-
system launch
|
12
|
-
return Bool.to_bool($?)
|
13
|
-
end
|
14
|
-
def gitdir?
|
15
|
-
return Bool.to_bool(%x/git rev-parse --is-inside-git-dir/)
|
16
|
-
end
|
17
|
-
def worktree?
|
18
|
-
return Bool.to_bool(%x/git rev-parse --is-inside-work-tree/)
|
19
|
-
end
|
20
|
-
def bare?
|
21
|
-
return Bool.to_bool(%x/git rev-parse --is-bare-repository/)
|
22
|
-
end
|
23
|
-
|
24
|
-
def toplevel
|
25
|
-
return %x/git rev-parse --show-toplevel/.chomp
|
26
|
-
end
|
27
|
-
def prefix
|
28
|
-
return %x/git rev-parse --show-prefix/.chomp
|
29
|
-
end
|
30
|
-
def gitdir
|
31
|
-
return %x/git rev-parse --git-dir/.chomp
|
32
|
-
end
|
33
|
-
|
34
|
-
def cd_to_toplevel(&block)
|
35
|
-
dir=%x/git rev-parse --show-cdup/.chomp
|
36
|
-
Dir.chdir(dir,&block) unless dir.empty?
|
37
|
-
end
|
38
|
-
|
39
|
-
def get_current_branch(always=true)
|
40
|
-
branchname= %x/git symbolic-ref -q --short HEAD/.chomp!
|
41
|
-
branchname ||= %x/git rev-parse --verify HEAD/.chomp! if always
|
42
|
-
return branchname
|
43
|
-
end
|
44
|
-
|
45
|
-
def name_branch(branch="HEAD", method: "name", always: true)
|
46
|
-
case method
|
47
|
-
when "sha1"
|
48
|
-
describe=%x"git rev-parse --short #{branch.shellescape}".chomp!
|
49
|
-
when "describe"
|
50
|
-
describe=%x"git describe #{branch.shellescape}".chomp!
|
51
|
-
when "contains"
|
52
|
-
describe=%x"git describe --contains #{branch.shellescape}".chomp!
|
53
|
-
when "match"
|
54
|
-
describe=%x"git describe --tags --exact-match #{branch.shellescape}".chomp!
|
55
|
-
when "topic"
|
56
|
-
describe=%x"git describe --all #{branch.shellescape}".chomp!
|
57
|
-
when "branch"
|
58
|
-
describe=%x"git describe --contains --all #{branch.shellescape}".chomp!
|
59
|
-
when "topic-fb" #try --all, then --contains all
|
60
|
-
describe=%x"git describe --all #{branch.shellescape}".chomp!
|
61
|
-
describe=%x"git describe --contains --all #{branch.shellescape}".chomp! if describe.nil? or describe.empty?
|
62
|
-
when "branch" #try --contains all, then --all
|
63
|
-
describe=%x"git describe --contains --all #{branch.shellescape}".chomp!
|
64
|
-
describe=%x"git describe --all #{branch.shellescape}".chomp! if describe.nil? or describe.empty?
|
65
|
-
when "magic"
|
66
|
-
describe1=%x"git describe --contains --all #{branch.shellescape}".chomp!
|
67
|
-
describe2=%x"git describe --all #{branch.shellescape}".chomp!
|
68
|
-
describe= describe1.length < describe2.length ? describe1 : describe2
|
69
|
-
describe=describe1 if describe2.empty?
|
70
|
-
describe=describe2 if describe1.empty?
|
71
|
-
when "name"
|
72
|
-
describe=%x"git rev-parse --abbrev-ref --symbolic-full-name #{branch.shellescape}".chomp!
|
73
|
-
else
|
74
|
-
describe=%x/#{method}/.chomp! unless method.nil? or method.empty?
|
75
|
-
end
|
76
|
-
if (describe.nil? or describe.empty?) and always
|
77
|
-
describe=%x/git rev-parse --short #{branch.shellescape}/.chomp!
|
78
|
-
end
|
79
|
-
return describe
|
80
|
-
end
|
81
|
-
|
82
|
-
def branch_rebase?(branch=get_current_branch)
|
83
|
-
rb=%x/git config --bool branch.shellescape.#{branch.shellescape}.rebase/.chomp!
|
84
|
-
rb||=%x/git config --bool pull.rebase/.chomp!
|
85
|
-
end
|
86
|
-
def branch_remote(branch=get_current_branch)
|
87
|
-
rb=%x/git config --get branch.shellescape.#{branch.shellescape}.remote/.chomp!
|
88
|
-
rb||="origin"
|
89
|
-
end
|
90
|
-
def branch_upstream(branch=get_current_branch)
|
91
|
-
%x/git rev-parse --abbrev-ref --symbolic-full-name #{branch.shellescape}@{u}/.chomp!
|
92
|
-
end
|
93
|
-
|
94
|
-
#return all branches that have an upstream
|
95
|
-
#if branches=:all look throug all branches
|
96
|
-
def all_upstream_branches(branches)
|
97
|
-
upstreams=%x!git for-each-ref --format='%(upstream:short)' refs/heads/branch/!
|
98
|
-
end
|
99
|
-
|
100
|
-
def get_topic_branches(*branches, complete: :local)
|
101
|
-
if branches.length >= 2
|
102
|
-
return [branches[0], branches[1]]
|
103
|
-
elsif branches.length == 1
|
104
|
-
if complete == :local
|
105
|
-
return [get_current_branch, branches[0]]
|
106
|
-
elsif complete == :remote
|
107
|
-
return [branches[0], branch_upstream(branches[0])]
|
108
|
-
else
|
109
|
-
fail "complete keyword should be :local or :remote"
|
110
|
-
end
|
111
|
-
else
|
112
|
-
return [get_current_branch, branch_upstream]
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
data/lib/drain/version.rb
DELETED