joe_utils 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b75efe7a08baf939992f91c589eb9fab2844cea6
4
+ data.tar.gz: 4322b777483856910f9d2521101a418bfd3418a5
5
+ SHA512:
6
+ metadata.gz: 2bb3594a0d0fb7133eb63f49abb9ee821ea2ea9ddae9072621e8332f753ff44a691dd472281fbba4f9da4bf5ef999679d6b19386af22fd1b8803af6963d48656
7
+ data.tar.gz: 9cf96dd6fa6e2d3bcb4c2d884583061d395f474b8561a0e94a761aacd7a674f11348296270269bc8102beec2e429eeb01506f07930ac2c140ac410b3815caaef
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.libs << 'test'
5
+ end
6
+
7
+ desc 'Run tests'
8
+ task default: :test
@@ -0,0 +1,11 @@
1
+ module ConsoleHelper
2
+ def get_input(message)
3
+ puts message
4
+ value = gets
5
+ value == 'exit' ? exit_program : next_step(value)
6
+ end
7
+
8
+ def exit_program
9
+ exit
10
+ end
11
+ end
@@ -0,0 +1,107 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'fileutils'
4
+ require 'zip'
5
+
6
+ module FilesHelper
7
+
8
+ def dir_exists?(location)
9
+ File.directory?(location) ? true : puts("Directory #{location} doesn't exist.")
10
+ end
11
+
12
+ def file_exists?(location)
13
+ File.exist?(location) ? true : puts("The file #{location} doesn't exist.")
14
+ end
15
+
16
+ def remove_dir(location)
17
+ FileUtils.rm_rf(location)
18
+ puts "Directory #{location} removed."
19
+ end
20
+
21
+ def create_dir(location, options = {})
22
+ if dir_exists?(location)
23
+ if options[:overwrite]
24
+ remove_dir(location)
25
+ else
26
+ puts "Directory #{location} already exists."
27
+ return
28
+ end
29
+ end
30
+ FileUtils.mkdir_p(location)
31
+ puts "Directory #{location} created."
32
+ end
33
+
34
+ def for_all_in_dir(location, options = {})
35
+ Dir.glob(File.join(File.join(location, options[:recursive] && '**'), options[:matching] || '*')) { |f| yield f }
36
+ end
37
+
38
+ def unzip(zip_file, location)
39
+ create_dir(location)
40
+ Zip::File.open(zip_file) { |content| content.each { |f| content.extract(f, File.join(location, f.name)) } }
41
+ end
42
+
43
+ def zip(zip_file)
44
+ Zip::File.open(zip_file, Zip::File::CREATE) { |zip| yield zip }
45
+ end
46
+
47
+ def zip_folder(zip_file, to_zip, options = {})
48
+ zip(zip_file) do |zip|
49
+ for_all_in_dir(to_zip, matching: options[:matching], recursive: true) { |file| zip.add(File.basename(file), file) }
50
+ yield zip if block_given?
51
+ end
52
+ end
53
+
54
+ def add_to_open_zip(zip, file)
55
+ zip.add(File.basename(file), file)
56
+ end
57
+
58
+ def edit_file(address)
59
+ new_file_content = yield File.open(address, 'r') { |f| f.read }
60
+ File.open(address, 'w+') { |f| f.write(new_file_content) }
61
+ end
62
+
63
+ def create_file_by_template(template_path, path)
64
+ text = load_file_text(template_path)
65
+ yield text if block_given?
66
+ create_file(path, text)
67
+ end
68
+
69
+ def load_file_text(path)
70
+ File.open(path, 'r') { |f| f.read } if file_exists?(path)
71
+ end
72
+
73
+ def create_file(path, text)
74
+ File.open(path, 'w+') { |f| f.write(text) }
75
+ puts "File #{path} created."
76
+ end
77
+
78
+ # Replaces text in all files in the folder address
79
+ # @param text [String] text to be replaced
80
+ # @param folder_address [String] folder address to search in
81
+ # @return nil
82
+ def replace_in_all(text, folder_address)
83
+ Dir[File.join(folder_address, '*')].each do |address|
84
+ content = File.open(address, 'r') { |f| f.read }
85
+ if content.gsub!(text) { |match| yield match }
86
+ File.open(address, 'w+') { |f| f.write(content) }
87
+ puts "Replaced all in: #{address}."
88
+ end
89
+ end
90
+ end
91
+
92
+ # Puts all file addresses which contain the text
93
+ # @param text [String] searched text
94
+ # @param location [String] folder address searched
95
+ # @return nil
96
+ def find_in_all(text, location)
97
+ Dir[File.join(location, '*')].each do |address|
98
+ File.open(address, 'r') { |f| puts "Found in file: #{f}" if f.read =~ /#{text}/ }
99
+ end
100
+ end
101
+
102
+ def catch_errno_enoent
103
+ yield
104
+ rescue Errno::ENOENT => e
105
+ # Nothing bad happened
106
+ end
107
+ end
@@ -0,0 +1,16 @@
1
+ # encoding: UTF-8
2
+
3
+ module NameHelper
4
+
5
+ def create_nice_file_name(file_content)
6
+ class_name = file_content.match(/#{@app_structure.vendor}::[A-Z_]+::[a-zA-Z]+/).to_s.split('::').last
7
+ class_name.gsub!(/[A-Z]+/) do |capital_letters|
8
+ if capital_letters.size > 1 && class_name[-capital_letters.size..-1] != capital_letters
9
+ "_#{capital_letters[0..-2].downcase}_#{capital_letters[-1].downcase}"
10
+ else
11
+ "_#{capital_letters.downcase}"
12
+ end
13
+ end
14
+ class_name
15
+ end
16
+ end
File without changes
@@ -0,0 +1,16 @@
1
+ # encoding: UTF-8
2
+
3
+ module ScriptEditorHelper
4
+ # @param pars [Array]
5
+ # @return [nil]
6
+ def add_pars_to_controllers(pars)
7
+ Dir["#{@app_structure.controllers_fld}/*"].each do |controller|
8
+ content = load_file_text(controller)
9
+ content.sub!(/CONFIG = \{[\s\w:',.\/\?=\-]*?\s\s}/) { |config|
10
+ pars.each { |par| config.sub!(/CONFIG = \{\n/, "CONFIG = {\n\t\t\t#{par},\n") unless content[par] || content[par[/['"][\s\w:,.\/\?=\-]+?['"]/]] }
11
+ config
12
+ }
13
+ create_file(controller, content)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,54 @@
1
+ module ScriptRenderer
2
+
3
+ # @param [String] file_path
4
+ def render_script(file_path)
5
+ lines = File.open(file_path, 'r') { |f| f.readlines }
6
+
7
+ structures, requires, comments, modules, klass, methods, class_name, full_class_name = [], [], [], [], '', {}, '', ''
8
+ class_began, private_began, public_began, methods_began, structure_began = false, false, true, false, false
9
+
10
+ lines.each do |line|
11
+ line.strip!
12
+ if line[0] == '#'
13
+ comments << line[1..-1]
14
+ elsif line =~ /^require /
15
+ match = line.match(/\brequire ['"]/)
16
+ requires << match.post_match[0..-2]
17
+ elsif line =~ /^module /
18
+ match = line.match(/\bmodule /)
19
+ modules << match.post_match[/\b[A-Z]+(::[A-Z_]+)*\b/]
20
+ elsif line =~ /^class /
21
+ class_began = true
22
+ klass = line[/^class [A-Za-z_]+(::[A-Za-z_]+)*/][6..-1].split('::').last
23
+ elsif line =~ /^def initialize/
24
+ methods_began = true
25
+ elsif line =~ /^def /
26
+ methods[line[/^def \w+/][4..-1]] = {arguments: []}
27
+ elsif line =~ /^private /
28
+ private_began = true
29
+ elsif line =~ /^[A-Z]+\b = {/ && class_began && !methods_began
30
+ structure_began = true
31
+ structures << {name: line[/^[A-Z]+\b/] }
32
+ structures.last[:content] = {}
33
+ elsif line =~ /^[a-z_]+: ?/ && structure_began
34
+ match = line.match(/^[a-z_]+: ?/)
35
+ structures.last[:content][match.to_s[0..-3].to_sym] = "'\"".include?(match.post_match[0]) ? match.post_match[1..-3] : match.post_match[0..-2]
36
+ elsif line =~ /^:[a-z]+ ?=> ?/ && structure_began
37
+ match = line.match(/^:[a-z]+ ?=> ?/)
38
+ structures.last[:content][match.to_s[1..-5].to_sym] = "'\"".include?(match.post_match[0]) ? match.post_match[1..-3] : match.post_match[0..-2]
39
+ elsif line == '}'
40
+ structure_began = false
41
+ else
42
+ # puts line
43
+ end
44
+ end
45
+ end
46
+
47
+ def get_whole_class_name(file_content)
48
+ file_content[/#{@app_structure.vendor}::#{@app_structure.app_name_unof}::[a-zA-Z\d]+/]
49
+ end
50
+
51
+ def get_class_name(file_content)
52
+ get_whole_class_name(file_content).split('::').last
53
+ end
54
+ end
@@ -0,0 +1,17 @@
1
+ require 'socket'
2
+ require 'timeout'
3
+
4
+ module SocketHelper
5
+ def is_port_open?(ip, port)
6
+ begin
7
+ Timeout::timeout(1) do
8
+ s = TCPSocket.new(ip, port)
9
+ s.close
10
+ return true
11
+ end
12
+ rescue Timeout::Error, Errno::ECONNREFUSED, Errno::EHOSTUNREACH
13
+ # don't do anything
14
+ end
15
+ false
16
+ end
17
+ end
data/lib/joe_utils.rb ADDED
@@ -0,0 +1,9 @@
1
+ require 'joe_utils/config_helper'
2
+ require 'joe_utils/console_helper'
3
+ require 'joe_utils/files_helper'
4
+ require 'joe_utils/name_helper'
5
+ require 'joe_utils/script_editor_helper'
6
+ require 'joe_utils/script_renderer'
7
+ require 'joe_utils/script'
8
+ require 'joe_utils/socket_helper'
9
+
@@ -0,0 +1,9 @@
1
+ require 'minitest/autorun'
2
+ require 'JoeUtils'
3
+
4
+ class JoeUtilsTest < Minitest::Test
5
+
6
+ def test_hi
7
+ assert_equal('hi', 'hi')
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,54 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: joe_utils
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Josef Erneker
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-26 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Overall personal utils gem
14
+ email: josef.erneker@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - Rakefile
20
+ - lib/joe_utils.rb
21
+ - lib/joe_utils/console_helper.rb
22
+ - lib/joe_utils/files_helper.rb
23
+ - lib/joe_utils/name_helper.rb
24
+ - lib/joe_utils/script.rb
25
+ - lib/joe_utils/script_editor_helper.rb
26
+ - lib/joe_utils/script_renderer.rb
27
+ - lib/joe_utils/socket_helper.rb
28
+ - test/test_joe_utils.rb
29
+ homepage: http://rubygems.org/gems/joeutils
30
+ licenses:
31
+ - GPL-3.0
32
+ metadata: {}
33
+ post_install_message:
34
+ rdoc_options: []
35
+ require_paths:
36
+ - lib
37
+ required_ruby_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ required_rubygems_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ requirements: []
48
+ rubyforge_project:
49
+ rubygems_version: 2.4.5
50
+ signing_key:
51
+ specification_version: 3
52
+ summary: Utils for work with files, sockets etc.
53
+ test_files:
54
+ - test/test_joe_utils.rb