rails_component 0.1.1 → 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.
- data/README.md +7 -1
- data/bin/rails_component +12 -4
- data/lib/rails_component.rb +67 -20
- data/rails_component.gemspec +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -6,4 +6,10 @@ This is applying-components util for rails
|
|
6
6
|
cd example_project
|
7
7
|
rails_component -u git@github.com:Paxa/sass_component.git
|
8
8
|
|
9
|
-
So now you have new rails project with included awesome sass mixins what can be easily edited.
|
9
|
+
So now you have new rails project with included awesome sass mixins what can be easily edited.
|
10
|
+
|
11
|
+
List of components:
|
12
|
+
|
13
|
+
* `rails_component -u git@github.com:Paxa/sass_component.git`
|
14
|
+
* `rails_component -r https://raw.github.com/Paxa/rails_component/master/recepts/lsd.rb`
|
15
|
+
* `rails_component -u git@github.com:Paxa/social_component.git`
|
data/bin/rails_component
CHANGED
@@ -3,25 +3,33 @@
|
|
3
3
|
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'rails_component'))
|
4
4
|
require "slop"
|
5
5
|
|
6
|
+
RComponent::Trusted::URL = 'https://raw.github.com/Paxa/rails_component/master/recepts.yml'
|
7
|
+
|
6
8
|
opts = Slop.parse do
|
7
9
|
on :u, :url, 'Apply component from url', true
|
8
10
|
on :d, :dir, 'Apply component from local directory', true
|
9
11
|
on :r, :recept, 'Apply only recept. from file or url', true
|
10
12
|
on :v, :verbose, 'Enable verbose mode'
|
11
|
-
|
13
|
+
on :l, :list, "Show list of known components"
|
14
|
+
on :a, :apply, "Apply components from trusted list", true
|
12
15
|
on :h, :help, 'Print this help message', :tail => true do
|
13
16
|
puts help
|
14
17
|
exit
|
15
18
|
end
|
16
19
|
end
|
17
20
|
|
18
|
-
if opts[:
|
21
|
+
if opts[:list]
|
22
|
+
puts RComponent::Trusted.list
|
23
|
+
elsif opts[:apply]
|
24
|
+
opts[:apply].split(" ").each do |component|
|
25
|
+
RComponent::Trusted.apply(component)
|
26
|
+
end
|
27
|
+
elsif opts[:url]
|
19
28
|
RComponent::Applier.remote(opts[:url], Dir.pwd)
|
20
29
|
elsif opts[:dir]
|
21
30
|
RComponent::Applier.new(opts[:dir], Dir.pwd)
|
22
31
|
elsif opts[:recept]
|
23
|
-
|
24
|
-
RComponent::Applier.new(Dir.pwd, Dir.pwd, false).fire_recept!(open(opts[:recept]).read)
|
32
|
+
RComponent::Applier.remote_recept(opts[:recept], Dir.pwd)
|
25
33
|
else
|
26
34
|
puts opts.help
|
27
35
|
end
|
data/lib/rails_component.rb
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
require "tmpdir"
|
2
|
+
require "fileutils"
|
3
|
+
require "pathname"
|
4
|
+
require "open-uri"
|
5
|
+
require "yaml"
|
2
6
|
|
3
7
|
module RComponent
|
4
8
|
|
@@ -11,6 +15,30 @@ module RComponent
|
|
11
15
|
|
12
16
|
end
|
13
17
|
|
18
|
+
module Trusted
|
19
|
+
extend self
|
20
|
+
|
21
|
+
def list
|
22
|
+
fetch_info['trusted'].keys
|
23
|
+
end
|
24
|
+
|
25
|
+
def apply(component)
|
26
|
+
info = fetch_info['trusted'][component]
|
27
|
+
remote_url = info['url']
|
28
|
+
if info['type'] == 'component'
|
29
|
+
puts "Applying component from #{remote_url}"
|
30
|
+
RComponent::Applier.remote(remote_url, Dir.pwd)
|
31
|
+
elsif info['type'] == 'recept'
|
32
|
+
puts "Applying recept from #{remote_url}"
|
33
|
+
RComponent::Applier.remote_recept(remote_url, Dir.pwd)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def fetch_info
|
38
|
+
@info ||= YAML::load(open(RComponent::Trusted::URL))
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
14
42
|
class Applier
|
15
43
|
|
16
44
|
def self.remote(url, rails_root)
|
@@ -19,12 +47,15 @@ module RComponent
|
|
19
47
|
new(dir, rails_root)
|
20
48
|
end
|
21
49
|
|
50
|
+
def self.remote_recept(url, rails_root)
|
51
|
+
new(rails_root, rails_root, false).fire_recept!(open(url).read)
|
52
|
+
end
|
53
|
+
|
22
54
|
def initialize(component_root, rails_root, autofire = true)
|
23
|
-
@rails_root = rails_root
|
24
|
-
@component_root = component_root
|
55
|
+
@rails_root = Pathname.new(rails_root)
|
56
|
+
@component_root = Pathname.new(component_root)
|
25
57
|
|
26
|
-
|
27
|
-
fire_recept!(File.read(recept_path)) if autofire
|
58
|
+
fire_recept!(File.read(@component_root + 'recept.rb')) if autofire
|
28
59
|
end
|
29
60
|
|
30
61
|
def fire_recept!(source)
|
@@ -35,7 +66,7 @@ module RComponent
|
|
35
66
|
def clone_files(*list)
|
36
67
|
Dir.chdir(@component_root) do
|
37
68
|
list.each do |file|
|
38
|
-
if File.exist?(
|
69
|
+
if File.exist?(@component_root + file)
|
39
70
|
copy_file(file)
|
40
71
|
else
|
41
72
|
Dir.glob(file).each {|f| copy_file(f) }
|
@@ -46,8 +77,8 @@ module RComponent
|
|
46
77
|
|
47
78
|
def mkdirs(*list)
|
48
79
|
list.each do |dir|
|
49
|
-
unless File.directory?(
|
50
|
-
|
80
|
+
unless File.directory?(@rails_root + dir)
|
81
|
+
pretty_make_dir(dir)
|
51
82
|
end
|
52
83
|
end
|
53
84
|
end
|
@@ -59,39 +90,55 @@ module RComponent
|
|
59
90
|
end
|
60
91
|
|
61
92
|
def with_file(file, &block)
|
62
|
-
|
93
|
+
FileUtils.mkdir_p(File.dirname(@rails_root + file))
|
94
|
+
FileUtils.touch(@rails_root + file) unless File.exist?(@rails_root + file)
|
95
|
+
File.open(@rails_root + file, 'a+:utf-8') {|f| block.call(f) }
|
63
96
|
end
|
64
97
|
|
65
98
|
def run(cmd)
|
66
99
|
Dir.chdir(@rails_root) do
|
67
|
-
|
100
|
+
puts blue(cmd)
|
101
|
+
`#{cmd}`
|
68
102
|
end
|
69
103
|
end
|
70
104
|
|
71
105
|
def commit_changes(message)
|
72
106
|
Dir.chdir(@rails_root) do
|
73
|
-
exec
|
74
|
-
exec
|
107
|
+
exec("git init .", method(:magenta)) unless File.directory?(@rails_root + '.git')
|
108
|
+
exec("git add . && git commit -m \"#{message.gsub(/"/, "\\\"")}\"", method(:magenta))
|
75
109
|
end
|
76
110
|
end
|
77
111
|
|
78
112
|
private
|
79
113
|
|
80
114
|
def copy_file(file)
|
81
|
-
if
|
82
|
-
|
83
|
-
end
|
84
|
-
|
85
|
-
if File.directory?(File.join(@component_root, file))
|
86
|
-
exec("mkdir -p #{File.join(@component_root, file)}")
|
115
|
+
if File.directory?(@component_root + file)
|
116
|
+
pretty_make_dir(file)
|
87
117
|
else
|
88
|
-
|
118
|
+
FileUtils.mkdir_p(File.dirname(@rails_root + file))
|
119
|
+
puts "#{green('Clone file')} #{file}"
|
120
|
+
FileUtils.cp(@component_root + file, @rails_root + file)
|
89
121
|
end
|
90
122
|
end
|
91
123
|
|
92
|
-
def
|
93
|
-
puts "
|
124
|
+
def pretty_make_dir(dir)
|
125
|
+
puts "#{green('Make dir')} #{dir}"
|
126
|
+
FileUtils.mkdir_p(@rails_root + dir)
|
127
|
+
end
|
128
|
+
|
129
|
+
def exec(cmd, filter)
|
130
|
+
puts filter.call("#{cmd}")
|
94
131
|
`#{cmd}`
|
95
132
|
end
|
133
|
+
|
134
|
+
def colorize(text, color_code)
|
135
|
+
"#{color_code}#{text}\e[0m"
|
136
|
+
end
|
137
|
+
|
138
|
+
def red(text); colorize(text, "\e[31m"); end
|
139
|
+
def green(text); colorize(text, "\e[32m"); end
|
140
|
+
def yellow(text); colorize(text, "\e[33m"); end
|
141
|
+
def blue(text); colorize(text, "\e[34m"); end
|
142
|
+
def magenta(text); colorize(text, "\e[35m"); end
|
96
143
|
end
|
97
144
|
end
|
data/rails_component.gemspec
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rails_component
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Pavel Evstigneev
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-06-
|
13
|
+
date: 2011-06-10 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: slop
|