rails_copier 0.1.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 +7 -0
- data/bin/rails_copier +36 -0
- data/lib/ext/string.rb +5 -0
- data/lib/rails_copier/folder.rb +24 -0
- data/lib/rails_copier/project.rb +93 -0
- data/lib/rails_copier/version.rb +3 -0
- data/lib/rails_copier.rb +8 -0
- metadata +107 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: '096548f3c9325dbe20290e0a9fbc0e05f651a439'
|
4
|
+
data.tar.gz: 2cd5582c82d3a0cc0a53c8f0f6d1a4c09d3aa73a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c19e9d94a9a1db94d65ffc08f98b92437471af6f05b029e43667032f7d760a70124df9d6de537cabe2b20ca10f4c9e293b1aa92515eb8951d7ce6e62653e3c4a
|
7
|
+
data.tar.gz: e6b2a0c799ad4b66c67b12044723847519a3ab30e377139adb78e0b39cf9995623731041fc794ecf4012a58e52250b5ae4abd9558635cfbfd44d92df132c0e86
|
data/bin/rails_copier
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rails_copier'
|
4
|
+
require 'slop'
|
5
|
+
|
6
|
+
@options = Slop.parse do |o|
|
7
|
+
o.string '-f', '--from', '* Root path of the rails project to be copied'
|
8
|
+
o.string '-t', '--to', '* Path on which a new folder will be created with the copy project'
|
9
|
+
o.string '-n', '--name', '* New project name (in CammelCase)'
|
10
|
+
o.on '-h', '--help', 'Shows this description' do
|
11
|
+
puts o
|
12
|
+
exit
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def missing_key(argument)
|
17
|
+
"missing required key: --#{argument}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def help
|
21
|
+
['All the options are required',
|
22
|
+
@options]
|
23
|
+
end
|
24
|
+
|
25
|
+
def valid_options?
|
26
|
+
@options.from? && @options.to? && @options.name?
|
27
|
+
end
|
28
|
+
|
29
|
+
if valid_options?
|
30
|
+
RailsCopier::Project.create(@options[:from], @options[:to], @options[:name])
|
31
|
+
else
|
32
|
+
puts missing_key('from') unless @options.from?
|
33
|
+
puts missing_key('to') unless @options.to?
|
34
|
+
puts missing_key('name') unless @options.name?
|
35
|
+
puts help
|
36
|
+
end
|
data/lib/ext/string.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
module RailsCopier
|
2
|
+
class Folder
|
3
|
+
attr_accessor :new_name, :new_dir, :from, :to
|
4
|
+
|
5
|
+
def self.create(from, to, new_name)
|
6
|
+
new(from, to, new_name).save
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize(from, to, new_name)
|
10
|
+
@new_name = new_name
|
11
|
+
@from = from
|
12
|
+
@to = to
|
13
|
+
end
|
14
|
+
|
15
|
+
def save
|
16
|
+
@new_dir = FileUtils::mkdir_p("#{to}/#{new_name.underscore}").join
|
17
|
+
self
|
18
|
+
end
|
19
|
+
|
20
|
+
def path_to_secrets
|
21
|
+
"#{new_dir}/config/secrets.yml"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'yaml'
|
3
|
+
require 'sudo'
|
4
|
+
|
5
|
+
module RailsCopier
|
6
|
+
class Project
|
7
|
+
def self.create(from, to, new_name)
|
8
|
+
new(from, to, new_name).save
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(from, to, new_name)
|
12
|
+
@folder = Folder.create(from, to, new_name)
|
13
|
+
end
|
14
|
+
|
15
|
+
def save
|
16
|
+
copy_entry
|
17
|
+
replace_old_name_ocurrencies
|
18
|
+
remove_git_repo
|
19
|
+
remove_tmp
|
20
|
+
replace_rails_secret
|
21
|
+
touch_log_folder
|
22
|
+
remove_database_yml
|
23
|
+
self
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def copy_entry
|
29
|
+
Sudo::Wrapper.run do |sudo|
|
30
|
+
sudo[FileUtils].copy_entry(@folder.from, @folder.new_dir)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def replace_rails_secret
|
35
|
+
data = YAML.load_file(@folder.path_to_secrets)
|
36
|
+
data["development"]["secret_key_base"] = bundle_exec_secret
|
37
|
+
Sudo::Wrapper.run do |sudo|
|
38
|
+
sudo[File].write(@folder.path_to_secrets, data.to_yaml)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def replace_old_name_ocurrencies
|
43
|
+
`sudo grep -r -l #{old_name} #{@folder.new_dir} |
|
44
|
+
sudo sort |
|
45
|
+
sudo uniq |
|
46
|
+
sudo xargs perl -e 's/#{old_name}/#{@folder.new_name}/' -pi`
|
47
|
+
end
|
48
|
+
|
49
|
+
def old_name
|
50
|
+
file_path = "#{@folder.from}/config/application.rb"
|
51
|
+
File.open(file_path).each do |line|
|
52
|
+
return line.chomp.gsub('module ', '') if line.include?("module")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def remove_git_repo
|
57
|
+
Sudo::Wrapper.run do |sudo|
|
58
|
+
git_ignore = "#{@folder.new_dir}/.gitignore"
|
59
|
+
git_dir = "#{@folder.new_dir}/.git"
|
60
|
+
sudo[FileUtils].rm(git_ignore) if File.exist?(git_ignore)
|
61
|
+
sudo[FileUtils].rm_rf(git_dir) if Dir.exist?(git_dir)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def remove_tmp
|
66
|
+
Sudo::Wrapper.run do |sudo|
|
67
|
+
tmp = "#{@folder.new_dir}/tmp"
|
68
|
+
sudo[FileUtils].rm_rf(tmp) if Dir.exist?(tmp)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def bundle_exec_secret
|
73
|
+
Dir.chdir(@folder.new_dir) do
|
74
|
+
secret = `bundle exec rake secret`
|
75
|
+
raise "Unable to run 'bundle exec' on #{@folder.new_dir}" if secret.empty?
|
76
|
+
return secret.chomp
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def touch_log_folder
|
81
|
+
Sudo::Wrapper.run do |sudo|
|
82
|
+
Dir["#{@folder.new_dir}/log/**.log"].each { |file| sudo[File].truncate(file, 0) }
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def remove_database_yml
|
87
|
+
Sudo::Wrapper.run do |sudo|
|
88
|
+
database_yml = "#{@folder.new_dir}/config/database.yml"
|
89
|
+
sudo[FileUtils].rm(database_yml) if File.exist?(database_yml)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
data/lib/rails_copier.rb
ADDED
metadata
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rails_copier
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Leonardo Santos
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-12-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.16'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: slop
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 4.6.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 4.6.1
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sudo
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.1.1
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.1.1
|
69
|
+
description:
|
70
|
+
email:
|
71
|
+
- aleotory@gmail.com
|
72
|
+
executables:
|
73
|
+
- rails_copier
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- bin/rails_copier
|
78
|
+
- lib/ext/string.rb
|
79
|
+
- lib/rails_copier.rb
|
80
|
+
- lib/rails_copier/folder.rb
|
81
|
+
- lib/rails_copier/project.rb
|
82
|
+
- lib/rails_copier/version.rb
|
83
|
+
homepage: https://github.com/leodcs/rails_copier
|
84
|
+
licenses:
|
85
|
+
- MIT
|
86
|
+
metadata: {}
|
87
|
+
post_install_message:
|
88
|
+
rdoc_options: []
|
89
|
+
require_paths:
|
90
|
+
- lib
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
requirements: []
|
102
|
+
rubyforge_project:
|
103
|
+
rubygems_version: 2.6.13
|
104
|
+
signing_key:
|
105
|
+
specification_version: 4
|
106
|
+
summary: A simple gem that allows you to copy a rails project
|
107
|
+
test_files: []
|