ro_commands 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,3 @@
1
+ <% git_flows.each do |o| %>
2
+ alias <%= o.shortcut %>='<%= o.cmd %>'
3
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <% rails_cmds.each do |r| %>
2
+ alias <%= r.shortcut %>='<%= r.cmd %>'
3
+ <% end %>
@@ -0,0 +1,9 @@
1
+ #!/bin/bash
2
+
3
+ lib="$HOME/Dropbox/utils/lib"
4
+ learn="$HOME/Dropbox/learn"
5
+ ruby_projects="$HOME/Dropbox/ruby-projects"
6
+ js_java_projects="$HOME/Dropbox/js-java-projects"
7
+ work_project="$ruby_projects/ro_partner"
8
+ ro="ro_client"
9
+
data/lib/drb/client.rb ADDED
@@ -0,0 +1,22 @@
1
+ require "drb"
2
+ require "ro_commands/helpers/all_files"
3
+ require "ro_commands/helpers/out"
4
+ require "ro_commands/core_ext/string"
5
+
6
+ item = ARGV.shift
7
+ meth = ARGV.shift
8
+ args = ARGV
9
+
10
+ DRb.start_service
11
+ file = RoCommands.file_map.keys.grep(%r{#{item}}).first
12
+
13
+ if file
14
+ port = RoCommands.file_map[file.to_sym]
15
+
16
+ #Out.out "starting #{File.basename(file.to_s).gsub(%r{\.rb}, "")}"
17
+ drb_obj = DRbObject.new_with_uri("druby://localhost:#{port}")
18
+ r = drb_obj.start(["drb_#{meth}", *args])
19
+ #Out.out "r:#{r} file:#{File.basename __FILE__} line:#{__LINE__}"
20
+ Out.out(r)
21
+ end
22
+
data/lib/drb/server.rb ADDED
@@ -0,0 +1,33 @@
1
+ require "drb"
2
+ require "ro_commands"
3
+ require "ro_commands/core_ext/thor"
4
+ require "ro_commands/core_ext/string"
5
+ require "ro_commands/helpers/all"
6
+ require "ro_commands/helpers/out"
7
+ require "drb"
8
+
9
+ Out.out "starting service"
10
+ DRb::DRbServer.make_config(verbose: true)
11
+ #Out.out "RoCommands.file_map:#{RoCommands.file_map} file:#{File.basename __FILE__} line:#{__LINE__}"
12
+ RoCommands.file_map.each do |file, port|
13
+ basename = File.basename(file.to_s).gsub(%r{\.rb}, "")
14
+ klass_name = basename.to_s.camelize
15
+
16
+ Out.out "#{RoCommands.const_get(klass_name.to_sym)} defining methods"
17
+ RoCommands.const_get(klass_name.to_sym).class_eval do
18
+ RoCommands.const_get(klass_name.to_sym).meths.each do |m|
19
+ desc usage("drb_#{m}"), ""
20
+ define_method("drb_#{m}".to_sym) do |*args|
21
+ Out.reset
22
+ send(m.to_sym, *args)
23
+ Out.out "Out.msgs:#{Out.msgs} file:#{File.basename __FILE__} line:#{__LINE__}"
24
+ handle_drb_out
25
+ end
26
+ end
27
+ end
28
+
29
+ url = "druby://localhost:#{port}"
30
+ puts "#{RoCommands.const_get(klass_name.to_sym)} at #{url}"
31
+ DRb.start_service(url, RoCommands.const_get(klass_name.to_sym))
32
+ end
33
+
@@ -0,0 +1,34 @@
1
+ require_relative "ro_helper"
2
+ module GitFlowBuilderHelper
3
+ class << self
4
+ def included(base)
5
+ base.extend(ClsMeths)
6
+ end
7
+ end
8
+
9
+ module ClsMeths
10
+
11
+ include ::RoHelper
12
+
13
+ class GitFlow < Cmd
14
+
15
+ end
16
+
17
+ def git_flows
18
+ cmd 'gfi', "git init && git flow init -f"
19
+
20
+ #git flow release
21
+ cmd 'fr', "git flow release"
22
+ cmd 'frf', "fr finish", "zeus git_flow get_releases"
23
+ cmd 'frp', "fr publish", "zeus git_flow get_releases"
24
+
25
+ #git flow feature
26
+ cmd 'ff', "git flow feature"
27
+ cmd 'frs', "git flow release start"
28
+ cmd 'ffs', "git flow feature start"
29
+ cmd 'fff', "ff finish", "zeus git_flow get_features"
30
+ cmd 'ffc', 'ff checkout', "zeus git flow get_features"
31
+ cmds
32
+ end
33
+ end
34
+ end
data/lib/methods.rb ADDED
@@ -0,0 +1,19 @@
1
+ class Methods
2
+ class << self
3
+ # get version like ubuntu version
4
+ # eg 13.10
5
+ def get_version
6
+ m = Time.now.to_s.match /(\d+)-(\d+)-(\d+)/
7
+ year, month, day = m[1], m[2], m[3]
8
+ year.gsub! '20', ''
9
+ "#{year}#{month}#{day}"
10
+ end
11
+
12
+ def change_current_version
13
+ Find.find(Dir.pwd).each do |path|
14
+ path.match Regexp "/version.rb"
15
+ File.read
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,41 @@
1
+ require_relative "ro_helper"
2
+ module RailsBuilderHelper
3
+ class << self
4
+ def included(base)
5
+ base.extend(ClsMeths)
6
+ end
7
+ end
8
+
9
+ module ClsMeths
10
+
11
+ include ::RoHelper
12
+
13
+ def rails_cmds
14
+ cmd 'z', 'zeus'
15
+ cmd 'zr', 'z rails'
16
+ cmd 'g', 'z g'
17
+ cmd 'd', 'z d'
18
+
19
+ # generate
20
+ cmd 'a', 'z g assets'
21
+ cmd 'c', 'zr controller'
22
+ cmd 'm', 'zr migration'
23
+ cmd 'mo', 'zr model'
24
+ cmd 's', 'zr scaffold'
25
+
26
+
27
+ # destroy
28
+ cmd 'da', 'd assets', 'zeus rails get_assets'
29
+ cmd 'dco', 'd controller', 'zeus rails get_controllers'
30
+ cmd 'dmo', 'd model', 'zeus rails get_models'
31
+ cmd 'dm', 'd migration', 'zeus rails get_migrations'
32
+ cmd 'ds', 'd scaffold', 'zeus rails get_scaffold'
33
+
34
+ # misc
35
+ cmd 'mi', 'z rake db:migrate'
36
+
37
+ cmd 'bx', "bundle exec"
38
+ cmds
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,34 @@
1
+ require 'find'
2
+
3
+ require File.expand_path('../methods', __FILE__)
4
+ $LOAD_PATH.unshift File.expand_path("../..", __FILE__)
5
+ require "config/rorc"
6
+
7
+ require 'erb'
8
+ require 'thor'
9
+ require 'fileutils'
10
+
11
+ $LOAD_PATH.unshift File.expand_path("../..", __FILE__)
12
+ $root = File.expand_path("../..", __FILE__)
13
+ $LOAD_PATH.unshift File.join($root, 'lib')
14
+
15
+ require 'ro_commands/base'
16
+
17
+ module RoCommands
18
+ def self.autoload_files_in(dir)
19
+ Dir[File.join File.expand_path("../#{dir}", __FILE__), "**"].each do |file|
20
+ if file[/\.rb$/]
21
+ module_name = File.basename(file).gsub(/\.rb/, '').camelize
22
+ autoload module_name.to_sym, file
23
+ autoload module_name.upcase, file
24
+ end
25
+ end
26
+ end
27
+
28
+ autoload :Element, "spec_elelment"
29
+
30
+ autoload_files_in "ro_commands/env"
31
+
32
+ autoload_files_in 'ro_commands'
33
+ autoload :Generator, 'ro_commands/generate'
34
+ end
@@ -0,0 +1,95 @@
1
+ require 'thor'
2
+ require 'find'
3
+
4
+ require "ro_commands/core_ext/string"
5
+ require "ro_commands/core_ext/hash"
6
+ require "ro_commands/helpers/out"
7
+ require "ro_commands/helpers/bash"
8
+
9
+ #Thor.class_eval do
10
+ #
11
+ # def self.desc(usage, description, options={})
12
+ # if options[:for]
13
+ # command = find_and_refresh_command(options[:for])
14
+ # command.usage = usage if usage
15
+ # command.description = description if description
16
+ # else
17
+ # @usage, @desc, @hide = "#{$ro_commands_argument} #{usage}", description, options[:hide] || false
18
+ # end
19
+ # end
20
+ #end
21
+
22
+ module RoCommands
23
+ class Base < Thor
24
+ protected
25
+ class << self
26
+
27
+ def method_added(method)
28
+ super
29
+ unless method.match(%r{drb_})
30
+ meths << method
31
+ end
32
+ end
33
+
34
+ def meths
35
+ @meths.flatten! if @meths.respond_to?(:flatten!)
36
+ @meths.uniq! if @meths.respond_to?(:uniq!)
37
+ @meths ||= []
38
+ end
39
+
40
+ def usage(meth_name)
41
+ "#{name.split("::")[-1].uncamelize} #{meth_name}"
42
+ end
43
+
44
+ def describe(action, item, shortcut_item)
45
+ "#{action} #{item}"
46
+ end
47
+ end
48
+
49
+ include ::Bash
50
+
51
+
52
+ def get_options(args)
53
+ h = {}
54
+ args.select do |a|
55
+ a.match ":"
56
+ end.each do |a|
57
+ r = a.chomp.match(%r{^(\w+)\:(\w+)$})
58
+ if r && r[1] && r[2]
59
+ h[r[1].to_sym] = r[2]
60
+ end
61
+ end
62
+ h
63
+ end
64
+
65
+ def parse_options(options, dict)
66
+ options.map do |k, v|
67
+ options[k] = dict[v.to_sym]
68
+ end
69
+ options
70
+ end
71
+
72
+ def implicit(keyword)
73
+ /^#{keyword.split("").join(".*")}.*/
74
+ end
75
+
76
+ def find(path)
77
+ Find.find(path).select { |f| test(?f, f) }
78
+ end
79
+
80
+ def to_boolean(str)
81
+ str == "true"
82
+ end
83
+
84
+ def convert_options(options)
85
+ opts = {}
86
+ r = options.split(":")
87
+ opts[:"#{r[0]}"] = to_boolean r[1]
88
+ opts
89
+ end
90
+
91
+ def handle_drb_out(result)
92
+ Out.msgs
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,5 @@
1
+ Hash.class_eval do
2
+ def get_key(value)
3
+ self.select { |k, v| v == value }.keys.first.to_s
4
+ end
5
+ end
@@ -0,0 +1,14 @@
1
+ String.class_eval do
2
+ def camelize
3
+ r = self.split(/\W|_/).map do |e|
4
+ e[0] = e[0].upcase
5
+ e
6
+ end
7
+
8
+ r.join
9
+ end
10
+
11
+ def uncamelize
12
+ self.split(/(?=[A-Z])/).join("_").downcase
13
+ end
14
+ end
File without changes
@@ -0,0 +1,71 @@
1
+ require "thor"
2
+ Thor::Shell::Basic.class_eval do
3
+ def say(message="", color=nil, force_new_line=(message.to_s !~ /( |\t)\Z/))
4
+ message = message.to_s
5
+
6
+ message = set_color(message, *color) if color && can_display_colors?
7
+
8
+ spaces = " " * padding
9
+
10
+ if force_new_line
11
+ stdout.puts(spaces + message)
12
+ else
13
+ stdout.print(spaces + message)
14
+ end
15
+
16
+ #puts "message:#{message} line:#{__LINE__}"
17
+ $ro_out << message
18
+ end
19
+
20
+ def print_table(array, options={})
21
+ return if array.empty?
22
+
23
+ formats, indent, colwidth = [], options[:indent].to_i, options[:colwidth]
24
+ options[:truncate] = terminal_width if options[:truncate] == true
25
+
26
+ formats << "%-#{colwidth + 2}s" if colwidth
27
+ start = colwidth ? 1 : 0
28
+
29
+ colcount = array.max{|a,b| a.size <=> b.size }.size
30
+
31
+ maximas = []
32
+
33
+ start.upto(colcount - 1) do |index|
34
+ maxima = array.map {|row| row[index] ? row[index].to_s.size : 0 }.max
35
+ maximas << maxima
36
+ if index == colcount - 1
37
+ # Don't output 2 trailing spaces when printing the last column
38
+ formats << "%-s"
39
+ else
40
+ formats << "%-#{maxima + 2}s"
41
+ end
42
+ end
43
+
44
+ formats[0] = formats[0].insert(0, " " * indent)
45
+ formats << "%s"
46
+
47
+ array.each do |row|
48
+ sentence = ""
49
+
50
+ row.each_with_index do |column, index|
51
+ maxima = maximas[index]
52
+
53
+ if column.is_a?(Numeric)
54
+ if index == row.size - 1
55
+ # Don't output 2 trailing spaces when printing the last column
56
+ f = "%#{maxima}s"
57
+ else
58
+ f = "%#{maxima}s "
59
+ end
60
+ else
61
+ f = formats[index]
62
+ end
63
+ sentence << f % column.to_s
64
+ end
65
+
66
+ sentence = truncate(sentence, options[:truncate]) if options[:truncate]
67
+ $ro_out << sentence
68
+ stdout.puts sentence
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,25 @@
1
+ require 'find'
2
+
3
+ module RoCommands
4
+ module DSL
5
+ module File
6
+ def dir?(path)
7
+ test(?d, path)
8
+ end
9
+
10
+ # file?
11
+ def file?(path)
12
+ test(?f, path)
13
+ end
14
+
15
+ def find(path)
16
+ Find.find(path).to_a
17
+ end
18
+
19
+ # size
20
+ def size(path)
21
+ test(?s, path)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,128 @@
1
+ require File.expand_path('../base', __FILE__)
2
+ require 'find'
3
+
4
+ module RoCommands
5
+ class FileActions < Base
6
+
7
+ desc 'grep KEYWORD PATH [depth:Fixnum] [verbose:Boolean]', ''
8
+
9
+ def grep(keyword, path=nil, options={})
10
+ if options.is_a?(String)
11
+ options = convert_options options
12
+ end
13
+ @keyword = keyword
14
+ @path = path || Dir.pwd
15
+ @options = options
16
+
17
+ if @options[:verbose]
18
+ @match_files = []
19
+ _grep_verbose
20
+ puts_match_files
21
+ else
22
+ _grep()
23
+ end
24
+ end
25
+
26
+ desc 'find DIR [KEYWORD]', ''
27
+
28
+ def find(dir, keyword=nil)
29
+ Find.find(dir).each do |path|
30
+ if keyword
31
+ if path[/#{keyword}/]
32
+ puts path
33
+ end
34
+ else
35
+ puts path
36
+ end
37
+ end
38
+ end
39
+
40
+ desc 'find_railscasts', 'find railscasts'
41
+
42
+ def find_railscasts(video_name)
43
+ Find.find('/media/zxr/New-Volume/TDDOWNLOAD/railscasts/').each do |path|
44
+ if path[Regexp.new video_name]
45
+ puts path
46
+ end
47
+ end
48
+ end
49
+
50
+ private
51
+ def puts_match_files
52
+ puts @match_files unless @match_files.empty?
53
+ end
54
+
55
+ def _grep
56
+ if @options[:depth]
57
+ depth = []
58
+ @options[:depth].times { depth << '**' }
59
+ fs = Dir[File.join(@path, depth.join("/"))]
60
+ fs.each do |f|
61
+ grep_match(f)
62
+ end
63
+ else
64
+ fs = Find.find(@path).map do |f|
65
+ grep_match(f)
66
+ end.compact
67
+ end
68
+ end
69
+
70
+ def _grep_verbose
71
+ if @options[:depth]
72
+ depth = []
73
+ @options[:depth].times { depth << '**' }
74
+ fs = Dir[File.join(@path, depth.join("/"))]
75
+ fs.each do |f|
76
+ puts "greping #{f}"
77
+ grep_match(f)
78
+ end
79
+ else
80
+ fs = Find.find(@path).map do |f|
81
+ puts "greping #{f}"
82
+ grep_match(f)
83
+ end.compact
84
+ end
85
+ end
86
+
87
+
88
+ def grep_match(file)
89
+ @ctn = File.read file if test(?f, file)
90
+ @file = file
91
+ if test(?f, file)
92
+ match_file_name
93
+ match_file_ctn
94
+ elsif test(?d, file)
95
+ match_file_name
96
+ end
97
+ end
98
+
99
+ def match_file_name
100
+ if @file[/#{@keyword}/]
101
+ puts @file
102
+ puts
103
+ @match_files << @file if @match_files
104
+ end
105
+ end
106
+
107
+ def match_file_ctn
108
+ begin
109
+ r = @ctn.scan /^.*#{@keyword}.*$/
110
+ unless r.empty?
111
+ puts <<-PUTS
112
+ #{@file}:
113
+ ...
114
+ #{r.join "\n"}
115
+ ...
116
+ PUTS
117
+ puts
118
+ @match_files << @file if @match_files
119
+ end
120
+ rescue => e
121
+ #puts "Unknown language in #{@file}"
122
+ #puts "@file:#{@file}"
123
+ #puts "@keyword:#{@keyword}"
124
+ #puts "@ctn.encoding:#{@ctn.encoding}"
125
+ end
126
+ end
127
+ end
128
+ end