motion-cross-platform 1.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 +7 -0
- data/README.md +29 -0
- data/lib/motion/project/cross_platform/android_setup.rb +17 -0
- data/lib/motion/project/cross_platform/config.rb +14 -0
- data/lib/motion/project/cross_platform/helpers.rb +19 -0
- data/lib/motion/project/cross_platform/ios_setup.rb +12 -0
- data/lib/motion/project/cross_platform/osx_setup.rb +12 -0
- data/lib/motion/project/cross_platform/rake_tasks.rb +95 -0
- data/lib/motion/project/cross_platform/stubs.rb +20 -0
- data/lib/motion/project/cross_platform.rb +1 -0
- data/lib/motion-cross-platform.rb +3 -0
- metadata +68 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 56c3e353042268f94150b0dd2f0852e576ab0c2944dc5336d55a6647aef9c907
|
4
|
+
data.tar.gz: 00bf2f4df6eeef0eb6ed01d926bc3ac807dc22b18af356b15edac1aa0334e027
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7073a861a06f8723e971c747cf650cd867e2e363a2d6c25eb377476c440439e6661aed9146b0cfcb4b62d375454199131e765449523e64c9cc518e03997988c4
|
7
|
+
data.tar.gz: cd72e96c1a74b08bedb3b234037321ce1984644e941ec29125f1697ed443640413459f8f84f116a912681aee72b50f9ebacbb5a712f44f8e270c1675428839fd
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# motion-cross-platform
|
2
|
+
|
3
|
+
Provides a common starting point for cross-platform RubyMotion gems and applications.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'motion-cross-platform'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install motion-cross-platform
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require "motion/project/template/android"
|
4
|
+
begin
|
5
|
+
require "motion-gradle"
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
|
9
|
+
Motion::Project::App.setup do |app|
|
10
|
+
app.build_dir = "build/android"
|
11
|
+
app.assets_dirs << "resources"
|
12
|
+
app.resources_dirs = []
|
13
|
+
|
14
|
+
app.files.delete_if { path.start_with?("./app/ios") }
|
15
|
+
app.files.delete_if { path.start_with?("./app/osx") }
|
16
|
+
app.files.delete_if { path.start_with?("./app/cocoa") }
|
17
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Motion
|
4
|
+
module Project
|
5
|
+
class Config
|
6
|
+
# Allows us to define the config in one file but only
|
7
|
+
# execute it when it matches the specified platform.
|
8
|
+
def platform(platform_name)
|
9
|
+
return unless platform_name.to_sym == template
|
10
|
+
yield
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
def define_rake_tasks(data)
|
4
|
+
data.each do |platform, tasks|
|
5
|
+
namespace platform do
|
6
|
+
tasks.each do |name, description|
|
7
|
+
desc description
|
8
|
+
task name do
|
9
|
+
invoke_rake platform, name
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def invoke_rake(platform, task)
|
17
|
+
trace = Rake.application.options.trace == true
|
18
|
+
system "platform=#{platform} bundle exec rake \"#{task}\" #{trace ? "--trace" : ""}" or exit 1
|
19
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require "motion/project/template/ios"
|
4
|
+
begin
|
5
|
+
require "motion-cocoapods"
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
|
9
|
+
Motion::Project::App.setup do |app|
|
10
|
+
app.files.delete_if { path.start_with?("./app/android") }
|
11
|
+
app.files.delete_if { path.start_with?("./app/osx") }
|
12
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require "motion/project/template/osx"
|
4
|
+
begin
|
5
|
+
require "motion-cocoapods"
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
|
9
|
+
Motion::Project::App.setup do |app|
|
10
|
+
app.files.delete_if { path.start_with?("./app/android") }
|
11
|
+
app.files.delete_if { path.start_with?("./app/ios") }
|
12
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
if platform = ENV["platform"]
|
4
|
+
require_relative "config"
|
5
|
+
require_relative "#{platform}_setup"
|
6
|
+
else
|
7
|
+
require_relative "stubs"
|
8
|
+
require_relative "helpers"
|
9
|
+
|
10
|
+
define_rake_tasks(
|
11
|
+
android: {
|
12
|
+
"build" => "Create an application package file (.apk)",
|
13
|
+
"clean" => "Clear local build objects",
|
14
|
+
"clean:all" => "Clean all build objects",
|
15
|
+
"config" => "Show project config",
|
16
|
+
"ctags" => "Generate ctags",
|
17
|
+
"default" => "Same as emulator",
|
18
|
+
"device" => "Build the app then run it on the device",
|
19
|
+
"device:install" => "Install the app on the device",
|
20
|
+
"device:start" => "Start the app's main intent on the device",
|
21
|
+
"emulator" => "Build the app then run it in the emulator",
|
22
|
+
"emulator:install" => "Install the app in the emulator",
|
23
|
+
"emulator:start" => "Start the app's main intent in the emulator",
|
24
|
+
"release" => "Create an application package file (.apk) for release (Google Play)",
|
25
|
+
"spec" => "Same as spec:emulator",
|
26
|
+
"spec:device" => "Run the test/spec suite on the device",
|
27
|
+
"spec:emulator" => "Run the test/spec suite in the emulator",
|
28
|
+
"gradle:install" => "Download and build dependencies"
|
29
|
+
},
|
30
|
+
ios: {
|
31
|
+
"archive" => "Create an .ipa archive",
|
32
|
+
"archive:distribution" => "Create an .ipa archive for distribution (AppStore)",
|
33
|
+
"build" => "Build everything",
|
34
|
+
"build:device" => "Build the device version",
|
35
|
+
"build:simulator" => "Build the simulator version",
|
36
|
+
"clean" => "Clear local build objects",
|
37
|
+
"clean:all" => "Clean all build objects",
|
38
|
+
"config" => "Show project config",
|
39
|
+
"crashlog" => "Same as crashlog:simulator",
|
40
|
+
"crashlog:device" => "Retrieve and symbolicate crash logs generated by the app on the device, and open the latest generated one",
|
41
|
+
"crashlog:simulator" => "Open the latest crash report generated by the app in the simulator",
|
42
|
+
"ctags" => "Generate ctags",
|
43
|
+
"default" => "Build the project, then run the simulator",
|
44
|
+
"device" => "Deploy on the device",
|
45
|
+
"profile" => "Same as profile:simulator",
|
46
|
+
"profile:device" => "Run a build on the device through Instruments",
|
47
|
+
"profile:device:templates" => "List all built-in device Instruments templates",
|
48
|
+
"profile:simulator" => "Run a build on the simulator through Instruments",
|
49
|
+
"profile:simulator:templates" => "List all built-in Simulator Instruments templates",
|
50
|
+
"simulator" => "Run the simulator",
|
51
|
+
"spec" => "Same as spec:simulator",
|
52
|
+
"spec:device" => "Run the test/spec suite on the device",
|
53
|
+
"spec:simulator" => "Run the test/spec suite in the simulator",
|
54
|
+
"static" => "Create a .a static library",
|
55
|
+
"watch" => "Same as watch:simulator",
|
56
|
+
"watch:simulator" => "Run the Watch application on the simulator"
|
57
|
+
},
|
58
|
+
osx: {
|
59
|
+
"archive" => "Create a .pkg archive",
|
60
|
+
"archive:distribution" => "Create a .pkg archive for distribution (AppStore)",
|
61
|
+
"build" => "Build the project for development",
|
62
|
+
"build:release" => "Build the project for release",
|
63
|
+
"clean" => "Clear local build objects",
|
64
|
+
"config" => "Show project config",
|
65
|
+
"crashlog" => "Open the latest crash report generated for the app",
|
66
|
+
"default" => "Build the project, then run the app",
|
67
|
+
"run" => "Run the project",
|
68
|
+
"spec" => "Run the test/spec suite",
|
69
|
+
"static" => "Create a .a static library"
|
70
|
+
}
|
71
|
+
)
|
72
|
+
|
73
|
+
desc "Start a combined iOS/Android REPL"
|
74
|
+
task "super_repl" do
|
75
|
+
require "readline"
|
76
|
+
|
77
|
+
cmd = %w{ rake }
|
78
|
+
ios_cmd = cmd + ["ios:simulator"]
|
79
|
+
android_cmd = cmd + ["android:emulator:start"]
|
80
|
+
|
81
|
+
if ENV.fetch("skip_build", nil)
|
82
|
+
ios_cmd << "skip_build=1"
|
83
|
+
android_cmd << "skip_build=1"
|
84
|
+
end
|
85
|
+
|
86
|
+
ios_io = IO.popen(ios_cmd.join(" "), "w")
|
87
|
+
android_io = IO.popen(android_cmd.join(" "), "w")
|
88
|
+
|
89
|
+
while expr = Readline.readline("> ", true)
|
90
|
+
ios_io.puts expr
|
91
|
+
android_io.puts expr
|
92
|
+
sleep 0.2
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Motion
|
2
|
+
module Project
|
3
|
+
class Config
|
4
|
+
end
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
module Motion
|
9
|
+
module Project
|
10
|
+
class App
|
11
|
+
def template
|
12
|
+
:cross_platform
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.setup
|
16
|
+
# no-op: allows this method to be called without raising an error
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require_relative "cross_platform/rake_tasks"
|
metadata
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: motion-cross-platform
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.0'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Andrew Havens
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-03-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
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'
|
27
|
+
description: Provides a common starting point for cross-platform RubyMotion gems and
|
28
|
+
applications.
|
29
|
+
email:
|
30
|
+
- email@andrewhavens.com
|
31
|
+
executables: []
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- README.md
|
36
|
+
- lib/motion-cross-platform.rb
|
37
|
+
- lib/motion/project/cross_platform.rb
|
38
|
+
- lib/motion/project/cross_platform/android_setup.rb
|
39
|
+
- lib/motion/project/cross_platform/config.rb
|
40
|
+
- lib/motion/project/cross_platform/helpers.rb
|
41
|
+
- lib/motion/project/cross_platform/ios_setup.rb
|
42
|
+
- lib/motion/project/cross_platform/osx_setup.rb
|
43
|
+
- lib/motion/project/cross_platform/rake_tasks.rb
|
44
|
+
- lib/motion/project/cross_platform/stubs.rb
|
45
|
+
homepage: https://github.com/rubymotion-community/motion-cross-platform
|
46
|
+
licenses:
|
47
|
+
- MIT
|
48
|
+
metadata: {}
|
49
|
+
post_install_message:
|
50
|
+
rdoc_options: []
|
51
|
+
require_paths:
|
52
|
+
- lib
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
requirements: []
|
64
|
+
rubygems_version: 3.4.22
|
65
|
+
signing_key:
|
66
|
+
specification_version: 4
|
67
|
+
summary: Provides a common starting point for cross-platform RubyMotion gems and applications.
|
68
|
+
test_files: []
|