ro_commands 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/bin/ro_client +1 -0
- data/bin/ro_server +1 -1
- data/config/rorc.rb +1 -0
- data/lib/bash_builder.rb +10 -7
- data/lib/bash_builder_helper.rb +25 -23
- data/lib/bash_templates/file.sh +1 -0
- data/lib/bash_templates/git.sh +1 -0
- data/lib/bash_templates/jekyll.sh +3 -0
- data/lib/bash_templates/misc.sh +6 -39
- data/lib/bash_templates/ruby.sh +1 -0
- data/lib/bash_templates/rubymine_idea.sh +41 -0
- data/lib/bash_templates/shortcuts.sh +1 -1
- data/lib/bash_templates/video.sh +4 -0
- data/lib/builder_templates/set_envs.erb +3 -2
- data/lib/drb/client.rb +14 -4
- data/lib/drb/server.rb +2 -1
- data/lib/git_flow_builder_helper.rb +24 -22
- data/lib/rails_builder_helper.rb +31 -28
- data/lib/ro_commands/base.rb +13 -2
- data/lib/ro_commands/core_ext/string.rb +4 -0
- data/lib/ro_commands/core_ext/thor.rb +0 -71
- data/lib/ro_commands/dsl/{file.rb → ro_file.rb} +3 -4
- data/lib/ro_commands/generators/spec_file.rb +24 -17
- data/lib/ro_commands/generators/templates/ex.erb +4 -0
- data/lib/ro_commands/generators/templates/spec.erb +3 -0
- data/lib/ro_commands/helpers/bash.rb +33 -7
- data/lib/ro_commands/helpers/out.rb +61 -2
- data/lib/ro_commands/info.rb +12 -8
- data/lib/ro_commands/navigate.rb +5 -1
- data/lib/ro_commands/rails.rb +1 -1
- data/lib/ro_commands/shortcuts.rb +82 -3
- data/lib/ro_commands/try.rb +8 -1
- data/lib/ro_commands/version.rb +1 -1
- data/lib/ro_commands/zeus_templates/custom_plan.rb +15 -7
- data/lib/ro_commands/zeus_templates/zeus.json +12 -5
- data/lib/set_envs_helper.rb +70 -0
- data/ro_commands.sh +839 -0
- metadata +66 -5
- data/lib/shortcuts.rb +0 -43
@@ -2,6 +2,8 @@ require 'fileutils'
|
|
2
2
|
require_relative "base_generator"
|
3
3
|
require "erb"
|
4
4
|
require "find"
|
5
|
+
require "ro_commands/core_ext/string"
|
6
|
+
require "active_support"
|
5
7
|
module RoCommands
|
6
8
|
module Generators
|
7
9
|
class SpecFile
|
@@ -29,34 +31,39 @@ module RoCommands
|
|
29
31
|
def get_df
|
30
32
|
if name
|
31
33
|
f = File.basename name
|
32
|
-
|
33
|
-
d = (r - [f]).join("/")
|
34
|
+
d = name.split("/").first
|
34
35
|
end
|
35
36
|
return d, f
|
36
37
|
end
|
37
38
|
|
39
|
+
def constant_name
|
40
|
+
if path
|
41
|
+
r = File.basename(path).gsub(%r{_spec\.rb}) do |m|
|
42
|
+
""
|
43
|
+
end
|
44
|
+
|
45
|
+
r.camelize
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
38
49
|
def path
|
39
50
|
d, f = get_df
|
40
51
|
#puts "d:#{d} line:#{__LINE__}"
|
41
52
|
if test(?d, 'lib')
|
42
|
-
|
53
|
+
lib_dirs = Find.find('lib').select do |file|
|
43
54
|
test(?d, file)
|
44
|
-
end.select do |dir|
|
45
|
-
basename = File.basename dir
|
46
|
-
|
47
|
-
#puts "basename:#{basename} line:#{__LINE__}"
|
48
|
-
basename.match(%r{^#{d.split("").join(".*")}})
|
49
|
-
end.first
|
50
|
-
|
51
|
-
#puts "dir_full_path:#{dir_full_path} line:#{__LINE__}"
|
52
|
-
|
53
|
-
files = Dir[File.join(dir_full_path, '**')].select do |file|
|
54
|
-
basename = File.basename file
|
55
|
-
test(?f, file) and basename.match(%r{^#{f}})
|
56
55
|
end
|
56
|
+
dir_full_path = lib_dirs.grep(%r{#{d.implicit}$}).first || 'lib'
|
57
|
+
files = Find.find(dir_full_path).select do |file|
|
58
|
+
if test(?f, file)
|
59
|
+
basename = File.basename file
|
60
|
+
basename.match(%r{^#{f.implicit}})
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
57
64
|
file = files.first.gsub(%r{\.rb}, "")
|
58
|
-
|
59
|
-
File.join(dir, dir_full_path, "#{
|
65
|
+
basename = File.basename(file)
|
66
|
+
File.join(dir, dir_full_path, "#{basename}_spec.rb")
|
60
67
|
end
|
61
68
|
end
|
62
69
|
|
@@ -1,17 +1,43 @@
|
|
1
1
|
require_relative "out"
|
2
|
+
require "open3"
|
2
3
|
module Bash
|
4
|
+
class << self
|
5
|
+
def status
|
6
|
+
@@status ||= nil
|
7
|
+
end
|
8
|
+
|
9
|
+
def out
|
10
|
+
@@out ||= nil
|
11
|
+
end
|
12
|
+
|
13
|
+
def err
|
14
|
+
@@err ||= nil
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
3
18
|
def _bash(cmd)
|
4
19
|
cmd = handle_path(cmd)
|
5
|
-
|
6
|
-
|
20
|
+
Out.out("Running: #{cmd}")
|
21
|
+
@@out, @@err, @@status = Open3.capture3(cmd)
|
22
|
+
Out.out @@out
|
23
|
+
Out.out @@err
|
24
|
+
@@status
|
7
25
|
end
|
8
26
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
27
|
+
# bash capture cmds result
|
28
|
+
def bashc(*cmds)
|
29
|
+
bash(*cmds)
|
30
|
+
if @@status.success?
|
31
|
+
@@out
|
13
32
|
else
|
14
|
-
|
33
|
+
@@err
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def handle_path(cmd)
|
38
|
+
path = %r{\w*/(\w|/|-)+}
|
39
|
+
r = cmd.gsub(path) do |m|
|
40
|
+
"\'#{m}\'"
|
15
41
|
end
|
16
42
|
end
|
17
43
|
|
@@ -1,11 +1,70 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
require "term/ansicolor"
|
1
3
|
class Out
|
2
4
|
class << self
|
3
|
-
|
5
|
+
include ::Term::ANSIColor
|
6
|
+
|
7
|
+
def out(msg, color=nil)
|
4
8
|
m = msg
|
5
|
-
|
9
|
+
if color
|
10
|
+
puts send(color.to_sym, m)
|
11
|
+
else
|
12
|
+
puts m
|
13
|
+
end
|
14
|
+
#write_tmp(m)
|
6
15
|
msgs << m
|
7
16
|
end
|
8
17
|
|
18
|
+
def write_tmp(ctn)
|
19
|
+
if save?
|
20
|
+
unless ctn.match(%r{^\s*$})
|
21
|
+
tmp_ctn = tmp
|
22
|
+
tmp_ctn << "At #{Time.now}"
|
23
|
+
tmp_ctn << ctn
|
24
|
+
File.write(tmp_path, tmp_ctn.join("\n"))
|
25
|
+
end
|
26
|
+
else
|
27
|
+
if test(?s, tmp_path) and test(?s, tmp_path) > 10_000
|
28
|
+
FileUtils.rm_f(tmp_path)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def save?
|
34
|
+
@save
|
35
|
+
end
|
36
|
+
|
37
|
+
def save_on
|
38
|
+
File.write(tmp_path, "save_on at #{Time.now}")
|
39
|
+
@save = true
|
40
|
+
end
|
41
|
+
|
42
|
+
def save_off
|
43
|
+
File.write(tmp_path, "save_on at #{Time.now}")
|
44
|
+
|
45
|
+
@save = false
|
46
|
+
end
|
47
|
+
|
48
|
+
def save
|
49
|
+
@save ||= false
|
50
|
+
end
|
51
|
+
|
52
|
+
def tmp_path
|
53
|
+
FileUtils.touch "/tmp/ro_out"
|
54
|
+
@tmp_path ||= "/tmp/ro_out"
|
55
|
+
end
|
56
|
+
|
57
|
+
def tmp
|
58
|
+
if test(?f, tmp_path)
|
59
|
+
File.readlines(tmp_path).delete_if do |l|
|
60
|
+
l.blank?
|
61
|
+
end
|
62
|
+
else
|
63
|
+
FileUtils.touch tmp_path
|
64
|
+
[]
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
9
68
|
def reset
|
10
69
|
@msgs = []
|
11
70
|
end
|
data/lib/ro_commands/info.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require_relative "dsl/
|
1
|
+
require_relative "dsl/ro_file"
|
2
2
|
module RoCommands
|
3
3
|
class Info < Base
|
4
|
-
include DSL::
|
4
|
+
include DSL::RoFile
|
5
5
|
|
6
6
|
class RoFile
|
7
7
|
def initialize(path, size)
|
@@ -18,13 +18,13 @@ module RoCommands
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def to_s
|
21
|
-
"size:#{size}, path:#{path}"
|
21
|
+
"size:#{(size/1024)}kb, path:#{path}"
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
desc 'file_size', ''
|
26
26
|
|
27
|
-
def
|
27
|
+
def list(path, recursive=false)
|
28
28
|
if recursive
|
29
29
|
find(path).each do |f|
|
30
30
|
files << RoFile.new(f, size(f))
|
@@ -33,15 +33,17 @@ module RoCommands
|
|
33
33
|
else
|
34
34
|
Dir[File.join(path, "**")].each do |f|
|
35
35
|
if dir?(f)
|
36
|
-
s = find(f).inject(0)
|
36
|
+
s = find(f).inject(0) do |total_size, file|
|
37
|
+
total_size += size(file).to_i
|
38
|
+
end
|
39
|
+
|
37
40
|
rf = RoFile.new(f, s)
|
38
41
|
else
|
39
42
|
rf = RoFile.new(f, size(f))
|
40
43
|
end
|
41
44
|
files << rf
|
42
45
|
end
|
43
|
-
|
44
|
-
puts files.sort_by(&:size)
|
46
|
+
puts files.compact.sort_by(&:size)
|
45
47
|
end
|
46
48
|
end
|
47
49
|
|
@@ -49,7 +51,9 @@ module RoCommands
|
|
49
51
|
private
|
50
52
|
|
51
53
|
def files
|
52
|
-
|
54
|
+
@files.flatten! if defined?(@files) and @files.respond_to?(:flatten!)
|
55
|
+
@files.uniq! if defined?(@files) and @files.respond_to?(:uniq!)
|
56
|
+
@files ||= []
|
53
57
|
end
|
54
58
|
end
|
55
59
|
end
|
data/lib/ro_commands/navigate.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
require "ro_commands/helpers/out"
|
2
|
+
require_relative "base"
|
3
|
+
require "config/rorc"
|
4
|
+
|
2
5
|
module RoCommands
|
3
6
|
class Navigate < Base
|
4
7
|
|
@@ -8,7 +11,8 @@ module RoCommands
|
|
8
11
|
Find.find(File.join(ENV['HOME'], 'Dropbox')) do |f|
|
9
12
|
if test(?d, f)
|
10
13
|
if File.basename(f).match /^#{name}/
|
11
|
-
|
14
|
+
Out.reset
|
15
|
+
Out.out f
|
12
16
|
return
|
13
17
|
end
|
14
18
|
end
|
data/lib/ro_commands/rails.rb
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
# this file shortcuts customized by me, so if you wanna use it, please specific your keymap, or download my rubymine settings in github
|
2
|
+
|
3
|
+
# default shortcuts
|
4
|
+
# guake:
|
5
|
+
# show/hide guake: f10
|
6
|
+
# new tab: ctrl+t
|
7
|
+
# close tab: ctrl+w
|
8
|
+
# rename tab: f10
|
9
|
+
|
10
|
+
# rubymine:
|
11
|
+
# move to opposite group: ctrl+alt+shift+p
|
12
|
+
# move to next splitter: ctrl+alt+shift+t
|
13
|
+
# Test: ctrl+shift+t
|
14
|
+
|
15
|
+
# ln -s $rubymine_path /usr/bin/rubymine
|
16
|
+
|
17
|
+
require "ro_commands/helpers/bash"
|
18
|
+
|
1
19
|
module RoCommands
|
2
20
|
class Shortcuts < Base
|
3
21
|
|
@@ -10,22 +28,83 @@ module RoCommands
|
|
10
28
|
bx "guard"
|
11
29
|
end
|
12
30
|
|
31
|
+
desc usage("lib_spec"), "show lib file in rubymine one splitter and show spec file in rubymine another splitter"
|
32
|
+
|
33
|
+
def lib_spec
|
34
|
+
hide_guake
|
35
|
+
push_to_opposite
|
36
|
+
next_splitter
|
37
|
+
sleep 0.1
|
38
|
+
switch_btw_lib_and_spec
|
39
|
+
end
|
40
|
+
|
41
|
+
desc usage("action"), ""
|
42
|
+
|
43
|
+
desc usage("open_ro_commands"), ""
|
44
|
+
|
45
|
+
def open_ro_commands
|
46
|
+
open_project("ro_commands")
|
47
|
+
end
|
48
|
+
|
49
|
+
desc usage("open_ro_support"), ""
|
50
|
+
|
51
|
+
def open_ro_support
|
52
|
+
open_project("ro_support")
|
53
|
+
end
|
54
|
+
|
13
55
|
private
|
14
56
|
|
57
|
+
def open_guard
|
58
|
+
cmd("bundle exec guard")
|
59
|
+
end
|
60
|
+
|
61
|
+
def open_project(name)
|
62
|
+
new_tab
|
63
|
+
cd_project(bashc "ro_client navigate get_project #{name}")
|
64
|
+
open_guard
|
65
|
+
new_tab
|
66
|
+
change_tab_name(name)
|
67
|
+
rubymine
|
68
|
+
end
|
69
|
+
|
70
|
+
def rubymine
|
71
|
+
cmd("rubymine .")
|
72
|
+
end
|
73
|
+
|
74
|
+
def cd_project(name)
|
75
|
+
cmd("cd #{name}")
|
76
|
+
end
|
77
|
+
|
78
|
+
def hide_guake
|
79
|
+
key "f10"
|
80
|
+
end
|
81
|
+
|
82
|
+
def switch_btw_lib_and_spec
|
83
|
+
key "ctrl+shift+t"
|
84
|
+
end
|
85
|
+
|
86
|
+
def push_to_opposite
|
87
|
+
key "ctrl+shift+alt+p"
|
88
|
+
end
|
89
|
+
|
90
|
+
def next_splitter
|
91
|
+
key "ctrl+shift+alt+t"
|
92
|
+
end
|
93
|
+
|
15
94
|
def bx(cmd)
|
16
95
|
action "bundle exec #{cmd}"
|
17
96
|
end
|
18
97
|
|
19
98
|
def action(cmd, postpone=0.012)
|
20
|
-
|
99
|
+
cmd(cmd, postpone)
|
21
100
|
change_tab_name(cmd)
|
22
101
|
new_tab
|
23
|
-
sleep postpone
|
24
102
|
end
|
25
103
|
|
26
|
-
def
|
104
|
+
def cmd(name, postpone=0.012)
|
27
105
|
type name
|
28
106
|
enter
|
107
|
+
sleep 0.012
|
29
108
|
end
|
30
109
|
|
31
110
|
def change_tab_name(name)
|
data/lib/ro_commands/try.rb
CHANGED
@@ -2,10 +2,17 @@ require_relative "base"
|
|
2
2
|
|
3
3
|
module RoCommands
|
4
4
|
class Try < Base
|
5
|
-
desc usage("
|
5
|
+
desc usage("try_meth"), ""
|
6
6
|
|
7
7
|
def try_meth(*args)
|
8
8
|
Out.out "puts try_meth args:#{args.flatten}"
|
9
|
+
Out.out "ENV['WORKING']:#{ENV['WORKING']} file:#{File.basename __FILE__} line:#{__LINE__}"
|
10
|
+
end
|
11
|
+
|
12
|
+
desc usage("pwd"), ""
|
13
|
+
|
14
|
+
def pwd
|
15
|
+
Out.out(Dir.pwd)
|
9
16
|
end
|
10
17
|
end
|
11
18
|
end
|
data/lib/ro_commands/version.rb
CHANGED
@@ -1,17 +1,25 @@
|
|
1
1
|
require 'zeus/rails'
|
2
|
+
require "active_support"
|
2
3
|
require "ro_commands/rails"
|
4
|
+
require "ro_commands/shortcuts"
|
5
|
+
require "ro_commands/generate"
|
3
6
|
|
4
7
|
class CustomPlan < Zeus::Rails
|
8
|
+
class << self
|
9
|
+
def invoke(name)
|
10
|
+
name = File.basename(file).gsub(%r{(.+)\.rb}) do |m|
|
11
|
+
""
|
12
|
+
end
|
5
13
|
|
6
|
-
|
7
|
-
|
14
|
+
klass = name.camelize
|
15
|
+
define_method(:"#{name}") do |*args|
|
16
|
+
RoCommands.const_get(klass.to_sym).start
|
17
|
+
end
|
18
|
+
end
|
8
19
|
end
|
9
|
-
# def my_custom_command
|
10
|
-
# # see https://github.com/burke/zeus/blob/master/docs/ruby/modifying.md
|
11
|
-
# end
|
12
20
|
|
13
|
-
|
14
|
-
|
21
|
+
%w(rails shortcuts generate).each do |name|
|
22
|
+
invoke name
|
15
23
|
end
|
16
24
|
end
|
17
25
|
|
@@ -5,9 +5,12 @@
|
|
5
5
|
"boot": {
|
6
6
|
"default_bundle": {
|
7
7
|
"development_environment": {
|
8
|
-
"rails":["rails"],
|
9
|
-
"
|
10
|
-
"
|
8
|
+
"rails": ["rails"],
|
9
|
+
"shortcuts": ["shortcuts"],
|
10
|
+
"generate": ["generate"],
|
11
|
+
"prerake": {
|
12
|
+
"rake": []
|
13
|
+
},
|
11
14
|
"console": ["c"],
|
12
15
|
"server": ["s"],
|
13
16
|
"generate": ["g"],
|
@@ -15,8 +18,12 @@
|
|
15
18
|
"dbconsole": []
|
16
19
|
},
|
17
20
|
"test_environment": {
|
18
|
-
"cucumber_environment": {
|
19
|
-
|
21
|
+
"cucumber_environment": {
|
22
|
+
"cucumber": []
|
23
|
+
},
|
24
|
+
"test_helper": {
|
25
|
+
"test": ["rspec", "testrb"]
|
26
|
+
}
|
20
27
|
}
|
21
28
|
}
|
22
29
|
}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require "active_support/concern"
|
2
|
+
require "find"
|
3
|
+
$root = File.expand_path("../../", __FILE__)
|
4
|
+
$lib = File.join($root, 'lib')
|
5
|
+
$LOAD_PATH.unshift $root
|
6
|
+
$LOAD_PATH.unshift $lib
|
7
|
+
require "ro_commands/helpers/bash"
|
8
|
+
|
9
|
+
module RoHelpers
|
10
|
+
|
11
|
+
module SetEnvsHelper
|
12
|
+
extend ActiveSupport::Concern
|
13
|
+
|
14
|
+
included do
|
15
|
+
end
|
16
|
+
|
17
|
+
module ClassMethods
|
18
|
+
include Bash
|
19
|
+
|
20
|
+
def bin_ruby
|
21
|
+
File.join(ENV['HOME'], ".rbenv/versions/", rb_ver, "/bin/ruby")
|
22
|
+
end
|
23
|
+
|
24
|
+
def bashrc
|
25
|
+
File.join(gem, 'ro_commands.sh')
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_bin(bin)
|
29
|
+
#Dir.chdir File.join($root)
|
30
|
+
#bash "rake install"
|
31
|
+
rbenv(bin)
|
32
|
+
end
|
33
|
+
|
34
|
+
def ro_client
|
35
|
+
get_bin("ro_client")
|
36
|
+
end
|
37
|
+
|
38
|
+
def ro_server
|
39
|
+
get_bin("ro_server")
|
40
|
+
end
|
41
|
+
|
42
|
+
def rbenv(bin)
|
43
|
+
File.join(gem, "/bin/#{bin}")
|
44
|
+
end
|
45
|
+
|
46
|
+
def gem
|
47
|
+
File.join(ENV['HOME'], ".rbenv/versions/", rb_ver, "lib/ruby/gems/#{RUBY_VERSION}/gems/", gem_ver)
|
48
|
+
end
|
49
|
+
|
50
|
+
def rb_ver
|
51
|
+
r = bashc("ruby -v").match(%r{\d.\d.\dp\d+})[0]
|
52
|
+
r.gsub(%r{p}) do |m|
|
53
|
+
"-p"
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
def rb_ver_num
|
59
|
+
if rb_ver
|
60
|
+
rb_ver.match(%r{\d+\.\d+\.\d+})[0]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def gem_ver
|
65
|
+
r = bashc("gem list ro_commands").match(%r{\((?<version>\d.\d.\d)\)})[:version]
|
66
|
+
"ro_commands-#{r}"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|