motion-gradle 1.5.0 → 1.6.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/lib/motion-gradle.rb +7 -3
- data/lib/motion/project/gradle.rb +35 -35
- data/lib/motion_gradle/aidl.rb +51 -0
- data/lib/motion_gradle/legacy_dependency.rb +23 -0
- data/lib/motion_gradle/template.rb +17 -0
- data/lib/{motion/project/aidl_build_gradle.erb → motion_gradle/templates/aidl_build.gradle.erb} +3 -3
- data/lib/motion_gradle/templates/android_manifest.xml.erb +2 -0
- data/lib/{motion/project/gradle.erb → motion_gradle/templates/build.gradle.erb} +6 -6
- data/lib/{motion/project/settings.erb → motion_gradle/templates/settings.gradle.erb} +1 -1
- data/lib/motion_gradle/version.rb +3 -0
- metadata +25 -9
- data/lib/motion/project/aidl.rb +0 -54
- data/lib/motion/project/legacy_dependency.rb +0 -21
- data/lib/motion/project/version.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 617e05877b988ee1f537b0adaff8e9cfdade69c3
|
4
|
+
data.tar.gz: d7228639f466ed173c28e5bdd02945f4501ec01f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5de72870a3a9c756edb92f19f90ca098e60521bbb29f9cef1f3df7d28668b2c12ad47dceeed6ebb0fc425a10e2da2f1ba3fe456db0ed101e029c8d1c202933f9
|
7
|
+
data.tar.gz: 400569c31a723e7faafd65e521919c1df6bb6abe205e0ae7ef5d231c127e1c98945935bd9bc3bd3859d01e87e9506a7399103beab9afea2b83ebb0ed12846fa8
|
data/lib/motion-gradle.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
require 'pathname'
|
2
2
|
require 'shellwords'
|
3
|
-
require '
|
3
|
+
require 'motion_gradle/legacy_dependency'
|
4
|
+
require 'motion_gradle/aidl'
|
5
|
+
require 'motion_gradle/template'
|
6
|
+
require 'motion_gradle/version'
|
4
7
|
require 'motion/project/gradle'
|
5
|
-
|
6
|
-
|
8
|
+
|
9
|
+
module MotionGradle
|
10
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
unless defined?(Motion::Project::Config)
|
2
|
-
|
2
|
+
fail('This file must be required within a RubyMotion project Rakefile.')
|
3
3
|
end
|
4
4
|
|
5
5
|
if Motion::Project::App.template != :android
|
6
|
-
|
6
|
+
fail('This file must be required within a RubyMotion Android project.')
|
7
7
|
end
|
8
8
|
|
9
9
|
module Motion::Project
|
@@ -50,7 +50,7 @@ module Motion::Project
|
|
50
50
|
if name.include?(':')
|
51
51
|
@dependencies << name
|
52
52
|
else
|
53
|
-
@dependencies << LegacyDependency.new(name, options)
|
53
|
+
@dependencies << MotionGradle::LegacyDependency.new(name, options)
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
@@ -59,15 +59,11 @@ module Motion::Project
|
|
59
59
|
unless Pathname.new(path).absolute?
|
60
60
|
path = File.join('../..', path)
|
61
61
|
end
|
62
|
-
|
63
|
-
@libraries << {
|
64
|
-
name: library_name,
|
65
|
-
path: path
|
66
|
-
}
|
62
|
+
@libraries << { name: library_name, path: path }
|
67
63
|
end
|
68
64
|
|
69
65
|
def aidl(package, aidl_file_path)
|
70
|
-
@aidl_files << Aidl.new(package, aidl_file_path)
|
66
|
+
@aidl_files << MotionGradle::Aidl.new(package, aidl_file_path)
|
71
67
|
end
|
72
68
|
|
73
69
|
def classpath(classpath)
|
@@ -82,11 +78,11 @@ module Motion::Project
|
|
82
78
|
@repositories << url
|
83
79
|
end
|
84
80
|
|
85
|
-
def install!
|
81
|
+
def install!
|
86
82
|
vendor_aidl_files
|
87
|
-
|
88
|
-
|
89
|
-
system("#{gradle_command} --build-file #{
|
83
|
+
generate_settings_file
|
84
|
+
generate_build_file
|
85
|
+
system("#{gradle_command} --build-file #{build_file} generateDependencies")
|
90
86
|
|
91
87
|
# this might be uneeded in the future
|
92
88
|
# if RM does support .aar out of the box
|
@@ -124,14 +120,14 @@ module Motion::Project
|
|
124
120
|
if File.exist?(main_jar)
|
125
121
|
jar_path = File.join(dependency, "#{File.basename(dependency)}.jar")
|
126
122
|
FileUtils.mv(main_jar, jar_path)
|
127
|
-
vendor_options = {:
|
123
|
+
vendor_options = { jar: jar_path }
|
128
124
|
else
|
129
125
|
next
|
130
126
|
end
|
131
127
|
|
132
128
|
# libs/*.jar may contain dependencies, let's vendor them
|
133
129
|
Dir[File.join(dependency, 'libs/*.jar')].each do |internal_dependancy|
|
134
|
-
@config.vendor_project(
|
130
|
+
@config.vendor_project(jar: internal_dependancy)
|
135
131
|
end
|
136
132
|
|
137
133
|
res = File.join(dependency, 'res')
|
@@ -146,7 +142,7 @@ module Motion::Project
|
|
146
142
|
@config.armeabi_directory_name(arch)
|
147
143
|
end
|
148
144
|
|
149
|
-
libs = Dir[File.join(native, "{#{archs.join(',')}}",
|
145
|
+
libs = Dir[File.join(native, "{#{archs.join(',')}}", '*.so')]
|
150
146
|
if libs.count != archs.count
|
151
147
|
App.info('[warning]', "Found only #{libs.count} lib(s) -> #{libs.join(',')} for #{archs.count} arch(s) : #{archs.join(',')}")
|
152
148
|
end
|
@@ -160,7 +156,7 @@ module Motion::Project
|
|
160
156
|
def vendor_jars
|
161
157
|
jars = Dir[File.join(GRADLE_ROOT, 'dependencies/*.jar')]
|
162
158
|
jars.each do |jar|
|
163
|
-
@config.vendor_project(:
|
159
|
+
@config.vendor_project(jar: jar)
|
164
160
|
end
|
165
161
|
end
|
166
162
|
|
@@ -169,36 +165,40 @@ module Motion::Project
|
|
169
165
|
end
|
170
166
|
|
171
167
|
def extract_aars
|
172
|
-
aars = Dir[File.join(GRADLE_ROOT,
|
168
|
+
aars = Dir[File.join(GRADLE_ROOT, 'dependencies/**/*.aar')]
|
173
169
|
aar_dir = File.join(GRADLE_ROOT, 'aar')
|
174
170
|
FileUtils.mkdir_p(aar_dir)
|
175
171
|
aars.each do |aar|
|
176
172
|
filename = File.basename(aar, '.aar')
|
177
|
-
system("/usr/bin/unzip -o -qq #{aar} -d #{
|
173
|
+
system("/usr/bin/unzip -o -qq #{aar} -d #{File.join(aar_dir, filename)}")
|
178
174
|
end
|
179
175
|
end
|
180
176
|
|
181
|
-
def
|
182
|
-
|
183
|
-
template =
|
184
|
-
|
185
|
-
io.puts(template.result(binding))
|
186
|
-
end
|
177
|
+
def generate_settings_file
|
178
|
+
template = MotionGradle::Template.new('settings.gradle')
|
179
|
+
template.destination = settings_file
|
180
|
+
template.write({libraries: @libraries})
|
187
181
|
end
|
188
182
|
|
189
|
-
def
|
190
|
-
|
191
|
-
template =
|
192
|
-
|
193
|
-
|
194
|
-
|
183
|
+
def generate_build_file
|
184
|
+
template = MotionGradle::Template.new('build.gradle')
|
185
|
+
template.destination = build_file
|
186
|
+
template.write({
|
187
|
+
classpaths: @classpaths,
|
188
|
+
plugins: @plugins,
|
189
|
+
libraries: @libraries,
|
190
|
+
repositories: @repositories,
|
191
|
+
dependencies: @dependencies,
|
192
|
+
android_repository: android_repository,
|
193
|
+
google_repository: google_repository
|
194
|
+
})
|
195
195
|
end
|
196
196
|
|
197
|
-
def
|
197
|
+
def build_file
|
198
198
|
File.join(GRADLE_ROOT, 'build.gradle')
|
199
199
|
end
|
200
200
|
|
201
|
-
def
|
201
|
+
def settings_file
|
202
202
|
File.join(GRADLE_ROOT, 'settings.gradle')
|
203
203
|
end
|
204
204
|
|
@@ -218,14 +218,14 @@ module Motion::Project
|
|
218
218
|
end
|
219
219
|
|
220
220
|
namespace :gradle do
|
221
|
-
desc
|
221
|
+
desc 'Download and build dependencies'
|
222
222
|
task :install do
|
223
223
|
root = Motion::Project::Gradle::GRADLE_ROOT
|
224
224
|
FileUtils.mkdir_p(root)
|
225
225
|
rm_rf(File.join(root, 'dependencies'))
|
226
226
|
rm_rf(File.join(root, 'aar'))
|
227
227
|
dependencies = App.config.gradle
|
228
|
-
dependencies.install!
|
228
|
+
dependencies.install!
|
229
229
|
end
|
230
230
|
end
|
231
231
|
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module MotionGradle
|
2
|
+
class Aidl
|
3
|
+
def initialize(package, aidl_file_path)
|
4
|
+
@package = package
|
5
|
+
@aidl_file_path = File.expand_path(aidl_file_path)
|
6
|
+
end
|
7
|
+
|
8
|
+
def create_lib
|
9
|
+
create_structure
|
10
|
+
create_gradle_build_file
|
11
|
+
create_manifest
|
12
|
+
end
|
13
|
+
|
14
|
+
def name
|
15
|
+
@name ||= File.basename(@aidl_file_path, '.aidl').downcase
|
16
|
+
end
|
17
|
+
|
18
|
+
def path
|
19
|
+
@path ||= File.join(Motion::Project::Gradle::GRADLE_ROOT, name)
|
20
|
+
end
|
21
|
+
|
22
|
+
protected
|
23
|
+
|
24
|
+
def create_manifest
|
25
|
+
template = MotionGradle::Template.new('android_manifest.xml')
|
26
|
+
template.destination = File.join(path, 'src', 'main', 'AndroidManifest.xml')
|
27
|
+
template.write({ package: @package })
|
28
|
+
end
|
29
|
+
|
30
|
+
def create_gradle_build_file
|
31
|
+
template = MotionGradle::Template.new('aidl_build.gradle')
|
32
|
+
template.destination = File.join(path, 'build.gradle')
|
33
|
+
template.write({ last_build_tools_version: last_build_tools_version })
|
34
|
+
end
|
35
|
+
|
36
|
+
def create_structure
|
37
|
+
aidl_file_dir = File.join(path, 'src', 'main', 'aidl', *@package.split('.'))
|
38
|
+
FileUtils.mkdir_p(aidl_file_dir)
|
39
|
+
FileUtils.cp(@aidl_file_path, aidl_file_dir)
|
40
|
+
end
|
41
|
+
|
42
|
+
def last_build_tools_version
|
43
|
+
build_tools = File.join(ENV['RUBYMOTION_ANDROID_SDK'], 'build-tools')
|
44
|
+
glob_pattern = File.join(build_tools, '*')
|
45
|
+
builds_tools_directories = Dir.glob(glob_pattern).select do |file|
|
46
|
+
File.directory?(file)
|
47
|
+
end
|
48
|
+
File.basename(builds_tools_directories.last)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module MotionGradle
|
2
|
+
class LegacyDependency
|
3
|
+
def initialize(name, params)
|
4
|
+
@options = normalized_dependency(name, params)
|
5
|
+
end
|
6
|
+
|
7
|
+
def parse
|
8
|
+
options = @options.delete_if { |_, v| v.nil? }.map { |k, v| "#{k}: '#{v}'" }
|
9
|
+
"compile #{options.join(', ')}"
|
10
|
+
end
|
11
|
+
|
12
|
+
protected
|
13
|
+
|
14
|
+
def normalized_dependency(name, params)
|
15
|
+
{
|
16
|
+
group: name,
|
17
|
+
version: params.fetch(:version, '+'),
|
18
|
+
name: params.fetch(:artifact, name),
|
19
|
+
ext: params.fetch(:extension, nil)
|
20
|
+
}
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module MotionGradle
|
2
|
+
class Template
|
3
|
+
attr_accessor :destination
|
4
|
+
|
5
|
+
def initialize(name)
|
6
|
+
template_path = File.expand_path("../templates/#{name}.erb", __FILE__)
|
7
|
+
@template = ERB.new(File.new(template_path).read)
|
8
|
+
end
|
9
|
+
|
10
|
+
def write(locals = {})
|
11
|
+
File.open(self.destination, 'w') do |io|
|
12
|
+
struct = OpenStruct.new(locals)
|
13
|
+
io.puts(@template.result(struct.instance_eval { binding }))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/{motion/project/aidl_build_gradle.erb → motion_gradle/templates/aidl_build.gradle.erb}
RENAMED
@@ -10,12 +10,12 @@ buildscript {
|
|
10
10
|
}
|
11
11
|
|
12
12
|
android {
|
13
|
-
compileSdkVersion <%= App.config.api_version %>
|
13
|
+
compileSdkVersion <%= App.config.api_version.to_i %>
|
14
14
|
buildToolsVersion "<%= last_build_tools_version %>"
|
15
15
|
|
16
16
|
defaultConfig {
|
17
|
-
minSdkVersion <%= App.config.api_version %>
|
18
|
-
targetSdkVersion <%= App.config.api_version %>
|
17
|
+
minSdkVersion <%= App.config.api_version.to_i %>
|
18
|
+
targetSdkVersion <%= App.config.api_version.to_i %>
|
19
19
|
versionCode 1
|
20
20
|
versionName "1.0"
|
21
21
|
}
|
@@ -4,7 +4,7 @@ buildscript {
|
|
4
4
|
mavenCentral()
|
5
5
|
}
|
6
6
|
dependencies {
|
7
|
-
<%
|
7
|
+
<% classpaths.each do |classpath| %>
|
8
8
|
classpath '<%= classpath %>'
|
9
9
|
<% end %>
|
10
10
|
}
|
@@ -19,7 +19,7 @@ allprojects {
|
|
19
19
|
|
20
20
|
apply plugin: 'java'
|
21
21
|
apply plugin: 'eclipse'
|
22
|
-
<%
|
22
|
+
<% plugins.each do |plugin| %>
|
23
23
|
apply plugin: '<%= plugin %>'
|
24
24
|
<% end %>
|
25
25
|
|
@@ -39,7 +39,7 @@ repositories {
|
|
39
39
|
url "<%= ENV['RUBYMOTION_ANDROID_SDK'].shellescape %>/extras/google/m2repository/"
|
40
40
|
}
|
41
41
|
<% end %>
|
42
|
-
<%
|
42
|
+
<% repositories.each do |url| %>
|
43
43
|
maven {
|
44
44
|
url "<%= url %>"
|
45
45
|
}
|
@@ -47,11 +47,11 @@ repositories {
|
|
47
47
|
}
|
48
48
|
|
49
49
|
dependencies {
|
50
|
-
<%
|
50
|
+
<% libraries.each do |library| %>
|
51
51
|
compile project(':<%= library[:name] %>')
|
52
52
|
<% end %>
|
53
|
-
<%
|
54
|
-
<% if dependency.is_a?(LegacyDependency) %>
|
53
|
+
<% dependencies.each do |dependency| %>
|
54
|
+
<% if dependency.is_a?(MotionGradle::LegacyDependency) %>
|
55
55
|
<%= dependency.parse %>
|
56
56
|
<% else %>
|
57
57
|
compile '<%= dependency %>'
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: motion-gradle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joffrey Jaffeux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
12
|
-
dependencies:
|
11
|
+
date: 2015-09-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rubocop
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
description: motion-gradle allows RubyMotion Android projects to have access to the
|
14
28
|
Gradle dependency manager.
|
15
29
|
email: j.jaffeux@gmail.com
|
@@ -20,13 +34,15 @@ files:
|
|
20
34
|
- LICENSE
|
21
35
|
- README.md
|
22
36
|
- lib/motion-gradle.rb
|
23
|
-
- lib/motion/project/aidl.rb
|
24
|
-
- lib/motion/project/aidl_build_gradle.erb
|
25
|
-
- lib/motion/project/gradle.erb
|
26
37
|
- lib/motion/project/gradle.rb
|
27
|
-
- lib/
|
28
|
-
- lib/
|
29
|
-
- lib/
|
38
|
+
- lib/motion_gradle/aidl.rb
|
39
|
+
- lib/motion_gradle/legacy_dependency.rb
|
40
|
+
- lib/motion_gradle/template.rb
|
41
|
+
- lib/motion_gradle/templates/aidl_build.gradle.erb
|
42
|
+
- lib/motion_gradle/templates/android_manifest.xml.erb
|
43
|
+
- lib/motion_gradle/templates/build.gradle.erb
|
44
|
+
- lib/motion_gradle/templates/settings.gradle.erb
|
45
|
+
- lib/motion_gradle/version.rb
|
30
46
|
homepage: http://www.rubymotion.com
|
31
47
|
licenses:
|
32
48
|
- MIT
|
data/lib/motion/project/aidl.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
class Aidl
|
2
|
-
def initialize(package, aidl_file_path)
|
3
|
-
@package = package
|
4
|
-
@aidl_file_path = File.expand_path(aidl_file_path)
|
5
|
-
end
|
6
|
-
|
7
|
-
def create_lib
|
8
|
-
create_lib_structure
|
9
|
-
create_gradle_build_file
|
10
|
-
create_manifest
|
11
|
-
end
|
12
|
-
|
13
|
-
def name
|
14
|
-
@name ||= File.basename(@aidl_file_path, '.aidl').downcase
|
15
|
-
end
|
16
|
-
|
17
|
-
def path
|
18
|
-
@path ||= File.join(Motion::Project::Gradle::GRADLE_ROOT, name)
|
19
|
-
end
|
20
|
-
|
21
|
-
protected
|
22
|
-
|
23
|
-
def create_manifest
|
24
|
-
io = File.new(File.join(path, 'src', 'main', 'AndroidManifest.xml'), "w")
|
25
|
-
io.puts("<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"#{@package}\"></manifest>")
|
26
|
-
io.close
|
27
|
-
end
|
28
|
-
|
29
|
-
def create_gradle_build_file
|
30
|
-
locals = {last_build_tools_version: last_build_tools_version}
|
31
|
-
erb_template = generate_erb_template(File.expand_path("../aidl_build_gradle.erb", __FILE__), locals)
|
32
|
-
io = File.new(File.join(path, 'build.gradle',), "w")
|
33
|
-
io.puts(erb_template)
|
34
|
-
io.close
|
35
|
-
end
|
36
|
-
|
37
|
-
def create_lib_structure
|
38
|
-
aidl_file_dir = File.join(path, 'src', 'main', 'aidl', *@package.split('.'))
|
39
|
-
FileUtils.mkdir_p(aidl_file_dir)
|
40
|
-
FileUtils.cp(@aidl_file_path, aidl_file_dir)
|
41
|
-
end
|
42
|
-
|
43
|
-
def generate_erb_template(path, locals)
|
44
|
-
template_path = File.expand_path(path, __FILE__)
|
45
|
-
template = File.new(template_path).read
|
46
|
-
ERB.new(template).result(OpenStruct.new(locals).instance_eval { binding })
|
47
|
-
end
|
48
|
-
|
49
|
-
def last_build_tools_version
|
50
|
-
build_tools = File.join(ENV['RUBYMOTION_ANDROID_SDK'], 'build-tools')
|
51
|
-
builds_tools_directories = Dir.glob(File.join(build_tools, '*')).select {|f| File.directory? f}
|
52
|
-
File.basename(builds_tools_directories.last)
|
53
|
-
end
|
54
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class LegacyDependency
|
2
|
-
def initialize(name, params)
|
3
|
-
@options = normalized_dependency(name, params)
|
4
|
-
end
|
5
|
-
|
6
|
-
def parse
|
7
|
-
options = @options.delete_if { |_, v| v.nil? }.map {|k, v| "#{k}: '#{v}'"}
|
8
|
-
"compile #{options.join(', ')}"
|
9
|
-
end
|
10
|
-
|
11
|
-
protected
|
12
|
-
|
13
|
-
def normalized_dependency(name, params)
|
14
|
-
{
|
15
|
-
group: name,
|
16
|
-
version: params.fetch(:version, '+'),
|
17
|
-
name: params.fetch(:artifact, name),
|
18
|
-
ext: params.fetch(:extension, nil),
|
19
|
-
}
|
20
|
-
end
|
21
|
-
end
|