kitno 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +3 -0
- data/Gemfile.lock +25 -2
- data/kitno.gemspec +5 -1
- data/lib/kitno.rb +61 -11
- data/lib/kitno/cli.rb +22 -5
- data/lib/kitno/version.rb +1 -1
- metadata +77 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0182ca456b67db9aef0b2d288f91a9831812f92c
|
4
|
+
data.tar.gz: a31cd4382e83eb54af37203dce277aa865a9f652
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 947235f8f92df0cd5a39cd557ab433a4af874c7a0a9932e5a5ebc71b232d162ef6030cba53e9096fe4f7a74690cc589cdc3168058a9229951056d491036d24b0
|
7
|
+
data.tar.gz: 7d233c1f21cd1e6620ee4c550b887db69807861e3f9106863d7e3dee15714fdc9b6e53338ef42e0e74315525b65b779e94333d0295c035559cff390967d36169
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Gemfile.lock
CHANGED
@@ -1,17 +1,36 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
kitno (0.1.
|
5
|
-
awesome_print (>= 1.7.0)
|
4
|
+
kitno (0.1.4)
|
5
|
+
awesome_print (~> 1.7.0, >= 1.7.0)
|
6
6
|
thor (~> 0.19.1)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
+
ansi (1.5.0)
|
11
12
|
awesome_print (1.7.0)
|
13
|
+
builder (3.2.2)
|
14
|
+
byebug (9.0.5)
|
15
|
+
coderay (1.1.1)
|
12
16
|
gem-release (0.7.4)
|
17
|
+
method_source (0.8.2)
|
13
18
|
minitest (5.9.0)
|
19
|
+
minitest-reporters (1.1.9)
|
20
|
+
ansi
|
21
|
+
builder
|
22
|
+
minitest (>= 5.0)
|
23
|
+
ruby-progressbar
|
24
|
+
pry (0.10.3)
|
25
|
+
coderay (~> 1.1.0)
|
26
|
+
method_source (~> 0.8.1)
|
27
|
+
slop (~> 3.4)
|
28
|
+
pry-byebug (3.4.0)
|
29
|
+
byebug (~> 9.0)
|
30
|
+
pry (~> 0.10)
|
14
31
|
rake (10.5.0)
|
32
|
+
ruby-progressbar (1.8.1)
|
33
|
+
slop (3.6.0)
|
15
34
|
thor (0.19.1)
|
16
35
|
|
17
36
|
PLATFORMS
|
@@ -19,9 +38,13 @@ PLATFORMS
|
|
19
38
|
|
20
39
|
DEPENDENCIES
|
21
40
|
bundler (~> 1.12)
|
41
|
+
byebug (~> 9.0, >= 0.0.5)
|
22
42
|
gem-release (~> 0.7.4)
|
23
43
|
kitno!
|
24
44
|
minitest (~> 5.0)
|
45
|
+
minitest-reporters (~> 1.1, >= 1.1.9)
|
46
|
+
pry (~> 0.10.3)
|
47
|
+
pry-byebug (~> 3.4, >= 3.4.0)
|
25
48
|
rake (~> 10.0)
|
26
49
|
|
27
50
|
BUNDLED WITH
|
data/kitno.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
|
20
20
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
21
21
|
spec.bindir = 'bin'
|
22
|
-
spec.executables =
|
22
|
+
spec.executables = ['kitno']
|
23
23
|
spec.require_paths = ['lib']
|
24
24
|
|
25
25
|
spec.add_dependency 'thor', '~> 0.19.1'
|
@@ -28,5 +28,9 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_development_dependency 'bundler', '~> 1.12'
|
29
29
|
spec.add_development_dependency 'rake', '~> 10.0'
|
30
30
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
31
|
+
spec.add_development_dependency 'minitest-reporters', '~> 1.1', '>= 1.1.9'
|
32
|
+
spec.add_development_dependency 'pry', '~> 0.10.3'
|
33
|
+
spec.add_development_dependency 'byebug', '~> 9.0', '>= 0.0.5'
|
34
|
+
spec.add_development_dependency 'pry-byebug', '~> 3.4', '>= 3.4.0'
|
31
35
|
spec.add_development_dependency 'gem-release', '~> 0.7.4'
|
32
36
|
end
|
data/lib/kitno.rb
CHANGED
@@ -3,19 +3,27 @@ require 'kitno/cli'
|
|
3
3
|
|
4
4
|
require 'find'
|
5
5
|
require 'fileutils'
|
6
|
-
require 'awesome_print'
|
7
6
|
|
8
7
|
module Kitno
|
9
8
|
class KillingInTheNamespaceOf
|
10
9
|
CLASS_EXPRESSION = /^class\s(?:@)?([A-Z][\w\.]*)/
|
11
|
-
REQUIRE_TEMPLATE = "%{short_name} = require
|
10
|
+
REQUIRE_TEMPLATE = "%{short_name} = require('%{path}')"
|
12
11
|
|
13
12
|
def initialize(options = {})
|
14
|
-
@namespace, @directory = options.values_at(
|
13
|
+
@namespace, @directory, @output, globals, externals = options.values_at(
|
14
|
+
:namespace,
|
15
|
+
:directory,
|
16
|
+
:output,
|
17
|
+
:globals,
|
18
|
+
:externals
|
19
|
+
)
|
15
20
|
|
16
21
|
@class_map = {}
|
17
22
|
@files = []
|
18
23
|
|
24
|
+
@globals = parse_mappings(globals) if globals && globals.length > 0
|
25
|
+
@externals = parse_mappings(externals) if externals && externals.length > 0
|
26
|
+
|
19
27
|
@dependency_expression = /^(?!(\s\*|#)).*(?:new|extends)\s(#{Regexp.escape(@namespace)}[\w\.]*)/
|
20
28
|
end
|
21
29
|
|
@@ -23,18 +31,23 @@ module Kitno
|
|
23
31
|
enumerate_files
|
24
32
|
|
25
33
|
@class_map.each_value do |descriptor|
|
26
|
-
path = descriptor[:path]
|
34
|
+
path, output_path = descriptor[:path]
|
27
35
|
|
28
36
|
require_dependencies!(path, descriptor[:dependencies])
|
29
37
|
|
30
|
-
|
38
|
+
if @output
|
39
|
+
output_path = Pathname.new(path).sub(@directory, @output)
|
40
|
+
FileUtils.mkdir_p output_path.dirname.to_s
|
41
|
+
end
|
42
|
+
|
43
|
+
FileUtils.mv "#{path}.module", output_path.to_s
|
31
44
|
end
|
32
45
|
end
|
33
46
|
|
34
47
|
def enumerate
|
35
48
|
enumerate_files
|
36
49
|
|
37
|
-
|
50
|
+
@class_map
|
38
51
|
end
|
39
52
|
|
40
53
|
private
|
@@ -64,6 +77,14 @@ module Kitno
|
|
64
77
|
end
|
65
78
|
end
|
66
79
|
|
80
|
+
def parse_mappings(mappings)
|
81
|
+
mappings.split(',').reduce({}) do |map, mapping|
|
82
|
+
constructor, dependency = mapping.split(':')
|
83
|
+
map[constructor] = dependency
|
84
|
+
map
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
67
88
|
def parse_class_name(contents)
|
68
89
|
match = CLASS_EXPRESSION.match(contents)
|
69
90
|
|
@@ -71,7 +92,25 @@ module Kitno
|
|
71
92
|
end
|
72
93
|
|
73
94
|
def parse_dependencies(contents)
|
74
|
-
|
95
|
+
dependencies = []
|
96
|
+
|
97
|
+
if @globals && !@globals.empty?
|
98
|
+
@globals.each do |global, dependency|
|
99
|
+
dependencies << dependency if contents.scan(get_dependency_expression(global)).length > 0
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
if @externals && !@externals.empty?
|
104
|
+
@externals.each do |external, dependency|
|
105
|
+
dependencies << dependency if contents.scan(get_dependency_expression(external)).length > 0
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
(dependencies += contents.scan(@dependency_expression).flatten).compact
|
110
|
+
end
|
111
|
+
|
112
|
+
def get_dependency_expression(search)
|
113
|
+
/[\s\(](#{Regexp.escape(search)}[\.\(])|^_[\.\(]/
|
75
114
|
end
|
76
115
|
|
77
116
|
def get_descriptor(class_name)
|
@@ -96,15 +135,24 @@ module Kitno
|
|
96
135
|
return relative_path, short_name
|
97
136
|
end
|
98
137
|
|
138
|
+
def is_external_or_global(dependency)
|
139
|
+
@globals.values.include?(dependency) || @externals.values.include?(dependency)
|
140
|
+
end
|
141
|
+
|
99
142
|
def require_dependencies!(filename, dependencies)
|
100
143
|
File.open("#{filename}.module", 'w') do |file|
|
101
144
|
dependencies.each do |dependency|
|
102
|
-
|
145
|
+
if is_external_or_global(dependency)
|
146
|
+
path = dependency
|
147
|
+
short_name = @globals.invert[dependency] || @externals.invert[dependency]
|
148
|
+
else
|
149
|
+
path, short_name = get_module_mappings(filename, get_descriptor(dependency))
|
150
|
+
end
|
103
151
|
|
104
|
-
file.puts REQUIRE_TEMPLATE % { short_name: short_name, path:
|
152
|
+
file.puts REQUIRE_TEMPLATE % { short_name: short_name, path: path }
|
105
153
|
end
|
106
154
|
|
107
|
-
file.puts "\n
|
155
|
+
file.puts "\n"
|
108
156
|
|
109
157
|
short_class_name = @class_map[filename][:class_name].split('.').last
|
110
158
|
|
@@ -112,9 +160,11 @@ module Kitno
|
|
112
160
|
line.gsub!(CLASS_EXPRESSION, "class #{short_class_name}")
|
113
161
|
|
114
162
|
dependencies.each do |dependency|
|
163
|
+
next if is_external_or_global(dependency)
|
164
|
+
|
115
165
|
descriptor = get_descriptor(dependency)
|
116
166
|
class_name = descriptor[:class_name]
|
117
|
-
|
167
|
+
_, short_name = get_module_mappings(filename, descriptor)
|
118
168
|
|
119
169
|
line.gsub!(class_name, short_name)
|
120
170
|
end
|
data/lib/kitno/cli.rb
CHANGED
@@ -1,15 +1,32 @@
|
|
1
1
|
require 'thor'
|
2
|
+
require 'awesome_print'
|
2
3
|
|
3
4
|
module Kitno
|
4
5
|
class CLI < Thor
|
5
|
-
desc '
|
6
|
-
long_desc <<-
|
7
|
-
|
6
|
+
desc 'transform', 'Transform directory of modules from namespace convention to CommonJS modules'
|
7
|
+
long_desc <<-TRANSFORM
|
8
|
+
TRANSFORM
|
8
9
|
|
10
|
+
option :dry, aliases: '-d', type: :boolean, default: false
|
9
11
|
option :namespace, aliases: '-n', type: :string, required: true, desc: 'Base namespace to migrate from'
|
10
12
|
option :directory, aliases: '-d', type: :string, default: '.', desc: 'Directory to target for transformation'
|
11
|
-
|
12
|
-
|
13
|
+
option :output, aliases: '-o', type: :string, default: './output', desc: 'Directory to output transformed modules'
|
14
|
+
option :globals, aliases: '-g', type: :string, desc: <<-GLOBALS
|
15
|
+
A comma separated list of global methods in the form of `global:dependency`.
|
16
|
+
Example: '_:underscore,$:jquery'
|
17
|
+
GLOBALS
|
18
|
+
option :externals, aliases: '-e', type: :string, desc: <<-EXTERNALS
|
19
|
+
A comma separated list of external dependencies in the form of `constructor:dependency`.
|
20
|
+
Example: 'Module.Dependency:module#Dependency,Module.Foo.Dependency:module/foo#Dependency'
|
21
|
+
EXTERNALS
|
22
|
+
def transform
|
23
|
+
kitno = KillingInTheNamespaceOf.new(options)
|
24
|
+
|
25
|
+
if options[:dry]
|
26
|
+
ap kitno.enumerate
|
27
|
+
else
|
28
|
+
kitno.run
|
29
|
+
end
|
13
30
|
end
|
14
31
|
end
|
15
32
|
end
|
data/lib/kitno/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitno
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Rolfs
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-06-
|
13
|
+
date: 2016-06-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: thor
|
@@ -88,6 +88,80 @@ dependencies:
|
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '5.0'
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: minitest-reporters
|
93
|
+
requirement: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '1.1'
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: 1.1.9
|
101
|
+
type: :development
|
102
|
+
prerelease: false
|
103
|
+
version_requirements: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - "~>"
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '1.1'
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.1.9
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.10.3
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.10.3
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: byebug
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '9.0'
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 0.0.5
|
135
|
+
type: :development
|
136
|
+
prerelease: false
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - "~>"
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '9.0'
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: 0.0.5
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: pry-byebug
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "~>"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '3.4'
|
152
|
+
- - ">="
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: 3.4.0
|
155
|
+
type: :development
|
156
|
+
prerelease: false
|
157
|
+
version_requirements: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - "~>"
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '3.4'
|
162
|
+
- - ">="
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: 3.4.0
|
91
165
|
- !ruby/object:Gem::Dependency
|
92
166
|
name: gem-release
|
93
167
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,14 +182,13 @@ email:
|
|
108
182
|
- alan@mavenlink.com
|
109
183
|
- celkamada@gmail.com
|
110
184
|
executables:
|
111
|
-
- console
|
112
185
|
- kitno
|
113
|
-
- setup
|
114
186
|
extensions: []
|
115
187
|
extra_rdoc_files: []
|
116
188
|
files:
|
117
189
|
- ".gitignore"
|
118
190
|
- ".ruby-version"
|
191
|
+
- ".travis.yml"
|
119
192
|
- Gemfile
|
120
193
|
- Gemfile.lock
|
121
194
|
- LICENSE.txt
|