ro_commands 0.0.1 → 0.0.2
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/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
|