ro_commands 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +54 -0
- data/bin/ro +32 -0
- data/bin/ro_client +6 -0
- data/bin/ro_server +8 -0
- data/config/rorc.rb +2 -0
- data/lib/bash_builder.rb +92 -0
- data/lib/bash_builder_helper.rb +34 -0
- data/lib/bash_debug.rb +55 -0
- data/lib/bash_templates/git.sh +10 -0
- data/lib/bash_templates/gitflow.sh +0 -0
- data/lib/bash_templates/misc.sh +66 -0
- data/lib/bash_templates/rails.sh +0 -0
- data/lib/bash_templates/rubymine_idea.sh +5 -0
- data/lib/bash_templates/shortcuts.sh +1 -0
- data/lib/builder_templates/completions.erb +18 -0
- data/lib/builder_templates/git_flow.erb +3 -0
- data/lib/builder_templates/rails.erb +3 -0
- data/lib/builder_templates/set_envs.erb +9 -0
- data/lib/drb/client.rb +22 -0
- data/lib/drb/server.rb +33 -0
- data/lib/git_flow_builder_helper.rb +34 -0
- data/lib/methods.rb +19 -0
- data/lib/rails_builder_helper.rb +41 -0
- data/lib/ro_commands.rb +34 -0
- data/lib/ro_commands/base.rb +95 -0
- data/lib/ro_commands/core_ext/hash.rb +5 -0
- data/lib/ro_commands/core_ext/string.rb +14 -0
- data/lib/ro_commands/core_ext/symbol.rb +0 -0
- data/lib/ro_commands/core_ext/thor.rb +71 -0
- data/lib/ro_commands/dsl/file.rb +25 -0
- data/lib/ro_commands/file_actions.rb +128 -0
- data/lib/ro_commands/generate.rb +32 -0
- data/lib/ro_commands/generators/base_generator.rb +68 -0
- data/lib/ro_commands/generators/ex.rb +56 -0
- data/lib/ro_commands/generators/lib.rb +25 -0
- data/lib/ro_commands/generators/spec_file.rb +74 -0
- data/lib/ro_commands/generators/templates/ex.erb +30 -0
- data/lib/ro_commands/generators/templates/spec.erb +2 -0
- data/lib/ro_commands/git.rb +89 -0
- data/lib/ro_commands/git_flow.rb +111 -0
- data/lib/ro_commands/helpers/all.rb +8 -0
- data/lib/ro_commands/helpers/all_files.rb +21 -0
- data/lib/ro_commands/helpers/bash.rb +33 -0
- data/lib/ro_commands/helpers/out.rb +29 -0
- data/lib/ro_commands/hook.rb +102 -0
- data/lib/ro_commands/info.rb +55 -0
- data/lib/ro_commands/misc.rb +77 -0
- data/lib/ro_commands/navigate.rb +56 -0
- data/lib/ro_commands/processes.rb +12 -0
- data/lib/ro_commands/rails.rb +210 -0
- data/lib/ro_commands/refactor.rb +78 -0
- data/lib/ro_commands/ro_helper.rb +76 -0
- data/lib/ro_commands/ro_procs.rb +106 -0
- data/lib/ro_commands/rubymine.rb +17 -0
- data/lib/ro_commands/shortcuts.rb +67 -0
- data/lib/ro_commands/try.rb +11 -0
- data/lib/ro_commands/version.rb +3 -0
- data/lib/ro_commands/zeus.rb +18 -0
- data/lib/ro_commands/zeus_templates/custom_plan.rb +18 -0
- data/lib/ro_commands/zeus_templates/zeus.json +24 -0
- data/lib/ro_helper.rb +25 -0
- data/lib/shortcuts.rb +43 -0
- data/lib/spec_element.rb +24 -0
- data/lib/spec_element/describe.rb.erb +9 -0
- data/lib/tasks/roro_commands_tasks.rake +4 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +29 -0
- data/test/dummy/config/environments/production.rb +80 -0
- data/test/dummy/config/environments/test.rb +36 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +12 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +56 -0
- data/test/dummy/public/404.html +58 -0
- data/test/dummy/public/422.html +58 -0
- data/test/dummy/public/500.html +57 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/roro_commands_test.rb +7 -0
- data/test/test_helper.rb +15 -0
- metadata +235 -0
@@ -0,0 +1,78 @@
|
|
1
|
+
module RoCommands
|
2
|
+
class Refactor < Base
|
3
|
+
desc 'rename', ''
|
4
|
+
|
5
|
+
def rename(from, to)
|
6
|
+
_rename(from, to)
|
7
|
+
_rename(from.camelize, to.camelize)
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def _rename(from, to)
|
13
|
+
return if from == to
|
14
|
+
if from.is_a?(String) and to.is_a?(String)
|
15
|
+
fs =find('.')
|
16
|
+
fs.each do |f|
|
17
|
+
if test(?f, f)
|
18
|
+
sub_file(f, from, to)
|
19
|
+
else
|
20
|
+
sub_dir(f, from, to)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def sub_dir(f, from, to)
|
29
|
+
parent, basename = parent_basename(f)
|
30
|
+
sub_basename(parent, basename, from, to)
|
31
|
+
end
|
32
|
+
|
33
|
+
def sub_file(f, from, to)
|
34
|
+
parent, basename, ctn = parent_basename_ctn(f)
|
35
|
+
if basename.match from
|
36
|
+
basename = sub_basename(parent, basename, from, to)
|
37
|
+
end
|
38
|
+
|
39
|
+
begin
|
40
|
+
r = ctn[/\b#{from}\b/]
|
41
|
+
rescue => e
|
42
|
+
puts "Unknown content in #{f}"
|
43
|
+
puts e
|
44
|
+
end
|
45
|
+
|
46
|
+
if r
|
47
|
+
puts "substitute in #{basename}, from #{from} to #{to}"
|
48
|
+
new_ctn = ctn.gsub whole_match(from), ''
|
49
|
+
File.write File.join(parent, basename), new_ctn
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def sub_basename(parent, basename, from, to)
|
54
|
+
new_name = basename.gsub(from, to)
|
55
|
+
puts "rename from #{basename} to #{new_name}"
|
56
|
+
FileUtils.mv(File.join(parent, basename), File.join(parent, new_name))
|
57
|
+
basename = new_name
|
58
|
+
end
|
59
|
+
|
60
|
+
def whole_match(from)
|
61
|
+
/\b#{from}\b/
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def parent_basename_ctn(file)
|
67
|
+
parent, basename = parent_basename(file)
|
68
|
+
ctn = File.read file
|
69
|
+
return parent, basename, ctn
|
70
|
+
end
|
71
|
+
|
72
|
+
def parent_basename(file)
|
73
|
+
parent = File.dirname file
|
74
|
+
basename = File.basename file
|
75
|
+
return parent, basename
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# gotchas: please use extend ::RoCommands::RoHelper, make sure module first extend 'method_added' method
|
2
|
+
# example:
|
3
|
+
#
|
4
|
+
#module TryHelper
|
5
|
+
# extend ::RoCommands::RoHelper
|
6
|
+
# class << self
|
7
|
+
# def _template_in_self
|
8
|
+
#
|
9
|
+
# end
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# def _template_in_normal
|
13
|
+
#
|
14
|
+
# end
|
15
|
+
#end
|
16
|
+
|
17
|
+
module RoCommands
|
18
|
+
module RoHelper
|
19
|
+
|
20
|
+
class << self
|
21
|
+
def included(base)
|
22
|
+
base.extend(ClassMethods)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
module ClassMethods
|
27
|
+
|
28
|
+
def meth_feature
|
29
|
+
%r{^_}
|
30
|
+
end
|
31
|
+
|
32
|
+
def meths
|
33
|
+
@meths.uniq! if @meths.respond_to?(:uniq!)
|
34
|
+
@meths ||= []
|
35
|
+
end
|
36
|
+
|
37
|
+
def method_added(meth)
|
38
|
+
super
|
39
|
+
#puts "method:#{meth}"
|
40
|
+
def_meth(meth)
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
def singleton_method_added(meth)
|
45
|
+
super
|
46
|
+
#puts "singleton_method:#{meth}"
|
47
|
+
def_meth(meth, 'singleton')
|
48
|
+
end
|
49
|
+
|
50
|
+
def def_meth(meth, meth_type=nil)
|
51
|
+
meth = meth.to_s
|
52
|
+
if defined?(meth_feature) and meth.match(meth_feature)
|
53
|
+
if meth.match(%r{_})
|
54
|
+
new_method = meth.to_s.sub(%r{_}, "")
|
55
|
+
|
56
|
+
if meth_type == 'singleton'
|
57
|
+
define_singleton_method new_method.to_sym do |*args|
|
58
|
+
before_each if defined? before_each
|
59
|
+
send(meth.to_sym, *args)
|
60
|
+
after_each if defined? after_each
|
61
|
+
end
|
62
|
+
else
|
63
|
+
define_method new_method.to_sym do |*args|
|
64
|
+
before_each if defined? before_each
|
65
|
+
send(meth.to_sym, *args)
|
66
|
+
after_each if defined? after_each
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
@@ -0,0 +1,106 @@
|
|
1
|
+
module RoCommands
|
2
|
+
class RoProcs < Base
|
3
|
+
attr_accessor :rps
|
4
|
+
|
5
|
+
desc 'grep_and_return_pids', ''
|
6
|
+
|
7
|
+
desc 'pids keywords', 'get pids with keywords'
|
8
|
+
|
9
|
+
def pids(*keywords)
|
10
|
+
rps_with keywords
|
11
|
+
pids = procs.map do |rp|
|
12
|
+
rp.instance_variable_get(:@pid)
|
13
|
+
end
|
14
|
+
create_table
|
15
|
+
puts pids
|
16
|
+
pids
|
17
|
+
end
|
18
|
+
|
19
|
+
desc 'grep', ''
|
20
|
+
|
21
|
+
def grep(*keywords)
|
22
|
+
rps_with(keywords)
|
23
|
+
create_table
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
class RoProc
|
29
|
+
|
30
|
+
def to_s
|
31
|
+
row = []
|
32
|
+
[:@user, :@pid, :@pmem, :@pcpu, :@command].each do |iv|
|
33
|
+
row << ("%-10s" % self.instance_variable_get(iv))
|
34
|
+
end
|
35
|
+
row.join
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
def create_table
|
42
|
+
r = %w(user pid pmem pcpu command).map do |heading|
|
43
|
+
"%-10s"%heading
|
44
|
+
end.join
|
45
|
+
puts r
|
46
|
+
puts procs.sort_by { |p| p.instance_variable_get "@#{sort}".to_sym }
|
47
|
+
puts r
|
48
|
+
end
|
49
|
+
|
50
|
+
def procs
|
51
|
+
@procs ||= []
|
52
|
+
end
|
53
|
+
|
54
|
+
def sort
|
55
|
+
@sort ||= "pcpu"
|
56
|
+
end
|
57
|
+
|
58
|
+
def rps_with(keywords)
|
59
|
+
parse
|
60
|
+
if keywords
|
61
|
+
keywords.each do |keyword|
|
62
|
+
search(keyword)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
def search(keyword)
|
69
|
+
r = Regexp.new keyword
|
70
|
+
procs.each do |rp|
|
71
|
+
command= rp.instance_variable_get(:@command)
|
72
|
+
|
73
|
+
unless command[r]
|
74
|
+
procs - [rp]
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def parse
|
80
|
+
attrs = %w(user pid pmem pcpu command)
|
81
|
+
ps ||= `ps -eo #{attrs.join(",")}`
|
82
|
+
_ps = ps.split("\n")
|
83
|
+
attr_names = _ps.shift.split(/\s+/)
|
84
|
+
_ps.each do |p|
|
85
|
+
rp = RoProc.new
|
86
|
+
p[/\/\w+/]
|
87
|
+
attr_values = p.scan(/[^\s]+/)
|
88
|
+
attr_names[0..3].each_with_index do |attr_name, index|
|
89
|
+
command = attr_values[index]
|
90
|
+
attr_name = attr_name.gsub(/%/, 'p').downcase
|
91
|
+
rp.instance_variable_set "@#{attr_name}".to_sym, attr_values[index]
|
92
|
+
end
|
93
|
+
|
94
|
+
command_value = get_command_value attr_values
|
95
|
+
rp.instance_variable_set :@command, command_value
|
96
|
+
|
97
|
+
procs << rp
|
98
|
+
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def get_command_value(attr_values)
|
103
|
+
r = attr_values[4..-1].join(" ")
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module RoCommands
|
2
|
+
class Rubymine < Base
|
3
|
+
desc 'open', 'open one project'
|
4
|
+
def open(project_name = '.')
|
5
|
+
puts "opening #{project_name}"
|
6
|
+
bash "rubymine #{project_name}"
|
7
|
+
end
|
8
|
+
|
9
|
+
desc 'open_multi_projects', 'open multi projects'
|
10
|
+
def open_multi_projects(*project_names)
|
11
|
+
project_names.each do |name|
|
12
|
+
open(name)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module RoCommands
|
2
|
+
class Shortcuts < Base
|
3
|
+
|
4
|
+
desc usage("work"), ''
|
5
|
+
|
6
|
+
def work
|
7
|
+
action("zeus start")
|
8
|
+
bx "rake sunspot:solr:run"
|
9
|
+
bx "spork"
|
10
|
+
bx "guard"
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def bx(cmd)
|
16
|
+
action "bundle exec #{cmd}"
|
17
|
+
end
|
18
|
+
|
19
|
+
def action(cmd, postpone=0.012)
|
20
|
+
a_action(cmd)
|
21
|
+
change_tab_name(cmd)
|
22
|
+
new_tab
|
23
|
+
sleep postpone
|
24
|
+
end
|
25
|
+
|
26
|
+
def a_action(name)
|
27
|
+
type name
|
28
|
+
enter
|
29
|
+
end
|
30
|
+
|
31
|
+
def change_tab_name(name)
|
32
|
+
key 'f2'
|
33
|
+
type name
|
34
|
+
enter
|
35
|
+
end
|
36
|
+
|
37
|
+
def enter
|
38
|
+
key 'KP_Enter'
|
39
|
+
end
|
40
|
+
|
41
|
+
def new_tab
|
42
|
+
bash 'xdotool key ctrl+t'
|
43
|
+
end
|
44
|
+
|
45
|
+
def key(name)
|
46
|
+
if name.match(%r{(f|F)\d{1,2}})
|
47
|
+
name.capitalize!
|
48
|
+
end
|
49
|
+
bash "xdotool key #{name}"
|
50
|
+
end
|
51
|
+
|
52
|
+
def translate(name)
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
def dict
|
57
|
+
{
|
58
|
+
enter: "KP_Enter"
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
def type(str)
|
63
|
+
bash "xdotool type '#{str}'"
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "find"
|
2
|
+
require "fileutils"
|
3
|
+
module RoCommands
|
4
|
+
class Zeus < Base
|
5
|
+
desc usage("init"), ""
|
6
|
+
|
7
|
+
def init
|
8
|
+
Find.find(File.expand_path("../zeus_templates", __FILE__)) do |f|
|
9
|
+
if test(?f, f)
|
10
|
+
to = File.basename f
|
11
|
+
puts "FileUtils.cp #{f}, #{to}"
|
12
|
+
FileUtils.cp f, to
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'zeus/rails'
|
2
|
+
require "ro_commands/rails"
|
3
|
+
|
4
|
+
class CustomPlan < Zeus::Rails
|
5
|
+
|
6
|
+
def rails
|
7
|
+
RoCommands::Rails.start
|
8
|
+
end
|
9
|
+
# def my_custom_command
|
10
|
+
# # see https://github.com/burke/zeus/blob/master/docs/ruby/modifying.md
|
11
|
+
# end
|
12
|
+
|
13
|
+
def git_flow
|
14
|
+
RoCommands::GitFlow.start
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
Zeus.plan = CustomPlan.new
|
@@ -0,0 +1,24 @@
|
|
1
|
+
{
|
2
|
+
"command": "ruby -rubygems -r./custom_plan -eZeus.go",
|
3
|
+
|
4
|
+
"plan": {
|
5
|
+
"boot": {
|
6
|
+
"default_bundle": {
|
7
|
+
"development_environment": {
|
8
|
+
"rails":["rails"],
|
9
|
+
"git_flow":["git_flow"],
|
10
|
+
"prerake": {"rake": []},
|
11
|
+
"console": ["c"],
|
12
|
+
"server": ["s"],
|
13
|
+
"generate": ["g"],
|
14
|
+
"destroy": ["d"],
|
15
|
+
"dbconsole": []
|
16
|
+
},
|
17
|
+
"test_environment": {
|
18
|
+
"cucumber_environment": {"cucumber": []},
|
19
|
+
"test_helper": {"test": ["rspec", "testrb"]}
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
data/lib/ro_helper.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
module RoHelper
|
2
|
+
class Cmd
|
3
|
+
attr_accessor :shortcut, :cmd, :suggestion
|
4
|
+
|
5
|
+
def initialize(shortcut, cmd, suggestion=nil)
|
6
|
+
@shortcut = shortcut
|
7
|
+
@cmd = cmd
|
8
|
+
@suggestion = suggestion
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def cmd(*args)
|
13
|
+
cmds << Cmd.new(*args)
|
14
|
+
end
|
15
|
+
|
16
|
+
def cmds
|
17
|
+
@cmds.flatten! if @cmds.respond_to?(:flatten!)
|
18
|
+
@cmds.uniq! if @cmds.respond_to?(:uniq!)
|
19
|
+
@cmds ||= []
|
20
|
+
end
|
21
|
+
|
22
|
+
def cmd_objs
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|