kitno 0.1.4 → 0.2.0
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 +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
|