ro_commands 0.0.1

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.
Files changed (102) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +54 -0
  5. data/bin/ro +32 -0
  6. data/bin/ro_client +6 -0
  7. data/bin/ro_server +8 -0
  8. data/config/rorc.rb +2 -0
  9. data/lib/bash_builder.rb +92 -0
  10. data/lib/bash_builder_helper.rb +34 -0
  11. data/lib/bash_debug.rb +55 -0
  12. data/lib/bash_templates/git.sh +10 -0
  13. data/lib/bash_templates/gitflow.sh +0 -0
  14. data/lib/bash_templates/misc.sh +66 -0
  15. data/lib/bash_templates/rails.sh +0 -0
  16. data/lib/bash_templates/rubymine_idea.sh +5 -0
  17. data/lib/bash_templates/shortcuts.sh +1 -0
  18. data/lib/builder_templates/completions.erb +18 -0
  19. data/lib/builder_templates/git_flow.erb +3 -0
  20. data/lib/builder_templates/rails.erb +3 -0
  21. data/lib/builder_templates/set_envs.erb +9 -0
  22. data/lib/drb/client.rb +22 -0
  23. data/lib/drb/server.rb +33 -0
  24. data/lib/git_flow_builder_helper.rb +34 -0
  25. data/lib/methods.rb +19 -0
  26. data/lib/rails_builder_helper.rb +41 -0
  27. data/lib/ro_commands.rb +34 -0
  28. data/lib/ro_commands/base.rb +95 -0
  29. data/lib/ro_commands/core_ext/hash.rb +5 -0
  30. data/lib/ro_commands/core_ext/string.rb +14 -0
  31. data/lib/ro_commands/core_ext/symbol.rb +0 -0
  32. data/lib/ro_commands/core_ext/thor.rb +71 -0
  33. data/lib/ro_commands/dsl/file.rb +25 -0
  34. data/lib/ro_commands/file_actions.rb +128 -0
  35. data/lib/ro_commands/generate.rb +32 -0
  36. data/lib/ro_commands/generators/base_generator.rb +68 -0
  37. data/lib/ro_commands/generators/ex.rb +56 -0
  38. data/lib/ro_commands/generators/lib.rb +25 -0
  39. data/lib/ro_commands/generators/spec_file.rb +74 -0
  40. data/lib/ro_commands/generators/templates/ex.erb +30 -0
  41. data/lib/ro_commands/generators/templates/spec.erb +2 -0
  42. data/lib/ro_commands/git.rb +89 -0
  43. data/lib/ro_commands/git_flow.rb +111 -0
  44. data/lib/ro_commands/helpers/all.rb +8 -0
  45. data/lib/ro_commands/helpers/all_files.rb +21 -0
  46. data/lib/ro_commands/helpers/bash.rb +33 -0
  47. data/lib/ro_commands/helpers/out.rb +29 -0
  48. data/lib/ro_commands/hook.rb +102 -0
  49. data/lib/ro_commands/info.rb +55 -0
  50. data/lib/ro_commands/misc.rb +77 -0
  51. data/lib/ro_commands/navigate.rb +56 -0
  52. data/lib/ro_commands/processes.rb +12 -0
  53. data/lib/ro_commands/rails.rb +210 -0
  54. data/lib/ro_commands/refactor.rb +78 -0
  55. data/lib/ro_commands/ro_helper.rb +76 -0
  56. data/lib/ro_commands/ro_procs.rb +106 -0
  57. data/lib/ro_commands/rubymine.rb +17 -0
  58. data/lib/ro_commands/shortcuts.rb +67 -0
  59. data/lib/ro_commands/try.rb +11 -0
  60. data/lib/ro_commands/version.rb +3 -0
  61. data/lib/ro_commands/zeus.rb +18 -0
  62. data/lib/ro_commands/zeus_templates/custom_plan.rb +18 -0
  63. data/lib/ro_commands/zeus_templates/zeus.json +24 -0
  64. data/lib/ro_helper.rb +25 -0
  65. data/lib/shortcuts.rb +43 -0
  66. data/lib/spec_element.rb +24 -0
  67. data/lib/spec_element/describe.rb.erb +9 -0
  68. data/lib/tasks/roro_commands_tasks.rake +4 -0
  69. data/test/dummy/README.rdoc +28 -0
  70. data/test/dummy/Rakefile +6 -0
  71. data/test/dummy/app/assets/javascripts/application.js +13 -0
  72. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  73. data/test/dummy/app/controllers/application_controller.rb +5 -0
  74. data/test/dummy/app/helpers/application_helper.rb +2 -0
  75. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  76. data/test/dummy/bin/bundle +3 -0
  77. data/test/dummy/bin/rails +4 -0
  78. data/test/dummy/bin/rake +4 -0
  79. data/test/dummy/config.ru +4 -0
  80. data/test/dummy/config/application.rb +23 -0
  81. data/test/dummy/config/boot.rb +5 -0
  82. data/test/dummy/config/database.yml +25 -0
  83. data/test/dummy/config/environment.rb +5 -0
  84. data/test/dummy/config/environments/development.rb +29 -0
  85. data/test/dummy/config/environments/production.rb +80 -0
  86. data/test/dummy/config/environments/test.rb +36 -0
  87. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  88. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  89. data/test/dummy/config/initializers/inflections.rb +16 -0
  90. data/test/dummy/config/initializers/mime_types.rb +5 -0
  91. data/test/dummy/config/initializers/secret_token.rb +12 -0
  92. data/test/dummy/config/initializers/session_store.rb +3 -0
  93. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  94. data/test/dummy/config/locales/en.yml +23 -0
  95. data/test/dummy/config/routes.rb +56 -0
  96. data/test/dummy/public/404.html +58 -0
  97. data/test/dummy/public/422.html +58 -0
  98. data/test/dummy/public/500.html +57 -0
  99. data/test/dummy/public/favicon.ico +0 -0
  100. data/test/roro_commands_test.rb +7 -0
  101. data/test/test_helper.rb +15 -0
  102. 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,11 @@
1
+ require_relative "base"
2
+
3
+ module RoCommands
4
+ class Try < Base
5
+ desc usage("try"), ""
6
+
7
+ def try_meth(*args)
8
+ Out.out "puts try_meth args:#{args.flatten}"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module RoroCommands
2
+ VERSION = "0.0.1"
3
+ 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