pindah 0.1.0.alpha → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +9 -1
- data/README.md +58 -9
- data/bin/pindah +3 -4
- data/lib/pindah.rb +11 -6
- data/lib/pindah_cli.rb +57 -27
- data/templates/.gitignore +2 -0
- data/templates/AndroidManifest.xml +19 -0
- data/templates/Rakefile +7 -0
- data/templates/build.xml +9 -2
- data/templates/main.xml +13 -0
- data/templates/res/drawable-hdpi/ic_launcher.png +0 -0
- data/templates/res/drawable-ldpi/ic_launcher.png +0 -0
- data/templates/res/drawable-mdpi/ic_launcher.png +0 -0
- data/templates/strings.xml +4 -0
- data/test/pindah_cli_test.rb +62 -27
- metadata +14 -6
data/Manifest.txt
CHANGED
@@ -5,7 +5,15 @@ Rakefile
|
|
5
5
|
bin/pindah
|
6
6
|
lib/pindah.rb
|
7
7
|
lib/pindah_cli.rb
|
8
|
-
templates/
|
8
|
+
templates/AndroidManifest.xml
|
9
9
|
templates/build.xml
|
10
|
+
templates/main.xml
|
11
|
+
templates/strings.xml
|
12
|
+
templates/Rakefile
|
13
|
+
templates/initial_activity.mirah
|
14
|
+
templates/.gitignore
|
15
|
+
templates/res/drawable-mdpi/ic_launcher.png
|
16
|
+
templates/res/drawable-hdpi/ic_launcher.png
|
17
|
+
templates/res/drawable-ldpi/ic_launcher.png
|
10
18
|
test/fixtures/HelloWorld.mirah
|
11
19
|
test/pindah_cli_test.rb
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Pindah
|
2
2
|
|
3
3
|
A tool for writing Android applications in [Mirah](http://mirah.org).
|
4
4
|
|
@@ -11,7 +11,7 @@ download "platform" packages corresponding with Android versions you
|
|
11
11
|
wish to develop against. You'll need to install "Android SDK Platform
|
12
12
|
tools" and at least one platform revision to get started. At the time
|
13
13
|
of this writing, Android 2.1 (revision 7)
|
14
|
-
[covers
|
14
|
+
[covers over 90% of the market](http://developer.android.com/resources/dashboard/platform-versions.html)
|
15
15
|
and is a reasonable target for new applications. Once the platform
|
16
16
|
tools are installed, place the SDK's <tt>platform-tools/</tt>
|
17
17
|
directory on your $PATH as well.
|
@@ -24,16 +24,42 @@ and rake commands with jruby -S:
|
|
24
24
|
|
25
25
|
## Usage
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
The <tt>pindah</tt> executable will create a new project starting
|
28
|
+
point given a package name. A package is a namespace for your code
|
29
|
+
that is often derived from a domain name you own, but can be any
|
30
|
+
hierarchical identifier as long as it's unique.
|
31
31
|
|
32
|
-
$ pindah
|
32
|
+
$ pindah create org.example.hello_world # optional path and activity name arguments
|
33
33
|
|
34
34
|
$ cd hello_world && tree
|
35
|
-
|
36
|
-
|
35
|
+
.
|
36
|
+
|-- AndroidManifest.xml
|
37
|
+
|-- libs
|
38
|
+
|-- Rakefile
|
39
|
+
|-- res
|
40
|
+
| |-- drawable-hdpi
|
41
|
+
| | `-- ic_launcher.png
|
42
|
+
| |-- drawable-ldpi
|
43
|
+
| | `-- ic_launcher.png
|
44
|
+
| |-- drawable-mdpi
|
45
|
+
| | `-- ic_launcher.png
|
46
|
+
| |-- layout
|
47
|
+
| | `-- main.xml
|
48
|
+
| `-- values
|
49
|
+
| `-- strings.xml
|
50
|
+
`-- src
|
51
|
+
`-- org
|
52
|
+
`-- example
|
53
|
+
`-- hello_world
|
54
|
+
`-- Start.mirah
|
55
|
+
|
56
|
+
12 directories, 8 files
|
57
|
+
|
58
|
+
The <tt>res/</tt> directory contains application resources like icons,
|
59
|
+
layout descriptions, and strings. The <tt>AndroidManifest.xml</tt>
|
60
|
+
describes the contents and metadata of your application. The
|
61
|
+
<tt>src</tt> directory contains the source code inside your package
|
62
|
+
directory.
|
37
63
|
|
38
64
|
$ rake -T
|
39
65
|
|
@@ -47,6 +73,29 @@ TODO: project template creation is not complete
|
|
47
73
|
rake spec # Print the project spec
|
48
74
|
rake uninstall # Uninstalls the application from a running emulator or dev...
|
49
75
|
|
76
|
+
$ rake debug
|
77
|
+
|
78
|
+
# [...]
|
79
|
+
|
80
|
+
$ ls -l bin/hello_world-debug.apk
|
81
|
+
|
82
|
+
-rw-r--r-- 1 user user 13222 Feb 7 23:16 bin/hello_world-debug.apk
|
83
|
+
|
84
|
+
This .apk file may be installed on a connected device or emulator with
|
85
|
+
<tt>rake install</tt>. It may even distributed for users to install
|
86
|
+
themselves, though stable versions should use the <tt>release</tt>
|
87
|
+
task.
|
88
|
+
|
89
|
+
The official documentation has
|
90
|
+
[more details on building](http://developer.android.com/guide/developing/other-ide.html#Building). The
|
91
|
+
main difference between Pindah and the standard Ant build is that the
|
92
|
+
Rakefile replaces build.xml as well as all the properties files. The
|
93
|
+
page above also explains how to get an emulator running for testing
|
94
|
+
your application.
|
95
|
+
|
96
|
+
See [Garrett](http://github.com/technomancy/Garrett) for an example of
|
97
|
+
a basic project.
|
98
|
+
|
50
99
|
## See Also
|
51
100
|
|
52
101
|
If Mirah is just too low-level and you need something more dynamic,
|
data/bin/pindah
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'pindah_cli'))
|
4
|
+
|
4
5
|
begin
|
5
|
-
PindahCLI.
|
6
|
+
PindahCLI.send *ARGV
|
6
7
|
rescue ArgumentError
|
7
|
-
|
8
|
+
abort "Usage: #{File.basename($0)} create org.example.hello [/path/to/hello_world] [HelloActivity]"
|
8
9
|
end
|
9
|
-
|
10
|
-
abort "TODO: create project skeleton: rakefile, manifest, resources"
|
data/lib/pindah.rb
CHANGED
@@ -12,7 +12,7 @@ end
|
|
12
12
|
require "mirah"
|
13
13
|
|
14
14
|
module Pindah
|
15
|
-
VERSION = '0.1.0
|
15
|
+
VERSION = '0.1.0'
|
16
16
|
|
17
17
|
def self.infer_sdk_location(path)
|
18
18
|
tools = path.split(":").detect {|p| File.exists? "#{p}/android" }
|
@@ -25,6 +25,9 @@ module Pindah
|
|
25
25
|
:sdk => Pindah.infer_sdk_location(ENV["PATH"])
|
26
26
|
}
|
27
27
|
|
28
|
+
TARGETS = { "1.5" => 3, "1.6" => 4,
|
29
|
+
"2.1" => 7, "2.2" => 8, "2.3" => 9 }
|
30
|
+
|
28
31
|
ANT_TASKS = ["clean", "javac", "compile", "debug", "release",
|
29
32
|
"install", "uninstall"]
|
30
33
|
|
@@ -43,15 +46,16 @@ module Pindah
|
|
43
46
|
task :default => [:install]
|
44
47
|
|
45
48
|
def self.spec=(spec)
|
46
|
-
abort "Must provide :
|
49
|
+
abort "Must provide :target_version in Pindah.spec!" if !spec[:target_version]
|
47
50
|
abort "Must provide :name in Pindah.spec!" if !spec[:name]
|
48
51
|
|
49
52
|
@spec = DEFAULTS.merge(spec)
|
50
53
|
|
51
54
|
@spec[:root] = File.expand_path "."
|
55
|
+
@spec[:target] ||= TARGETS[@spec[:target_version].to_s.sub(/android-/, '')]
|
52
56
|
@spec[:classes] ||= "#{@spec[:output]}/classes"
|
53
57
|
@spec[:classpath] << @spec[:classes]
|
54
|
-
@spec[:classpath] << "#{@spec[:sdk]}/platforms
|
58
|
+
@spec[:classpath] << "#{@spec[:sdk]}/platforms/android-#{@spec[:target]}/android.jar"
|
55
59
|
@spec[:log_spec] ||= "ActivityManager:I #{@spec[:name]}:D " +
|
56
60
|
"AndroidRuntime:E *:S"
|
57
61
|
|
@@ -68,8 +72,10 @@ module Pindah
|
|
68
72
|
File.open(build, "w") { |f| f.puts build_template.result(binding) }
|
69
73
|
at_exit { File.delete build }
|
70
74
|
|
71
|
-
|
72
|
-
|
75
|
+
# TODO: add key signing config
|
76
|
+
{ "target" => "android-#{@spec[:target]}",
|
77
|
+
"target-version" => "android-#{@spec[:target_version]}",
|
78
|
+
"src" => @spec[:src],
|
73
79
|
"sdk.dir" => @spec[:sdk],
|
74
80
|
"classes" => @spec[:classes],
|
75
81
|
"classpath" => @spec[:classpath].join(Java::JavaLang::System::
|
@@ -78,7 +84,6 @@ module Pindah
|
|
78
84
|
@ant.project.set_user_property(key, value)
|
79
85
|
end
|
80
86
|
|
81
|
-
# TODO: compile task execs mirahc instead of running inside current JVM
|
82
87
|
Ant::ProjectHelper.configure_project(@ant.project, java.io.File.new(build))
|
83
88
|
|
84
89
|
# Turn ant tasks into rake tasks
|
data/lib/pindah_cli.rb
CHANGED
@@ -1,42 +1,72 @@
|
|
1
1
|
require 'fileutils'
|
2
|
+
require 'erb'
|
2
3
|
|
3
4
|
module PindahCLI
|
4
|
-
|
5
|
-
DEFAULT_VERSION = 'android-2.1'
|
5
|
+
DEFAULT_TARGET_VERSION = '2.1'
|
6
6
|
|
7
|
-
def self.
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
def self.create(namespace, location, activity_name=nil)
|
12
|
-
segments = namespace.split('.')
|
7
|
+
def self.create(package, location=nil, activity_name="Start")
|
8
|
+
segments = package.split('.')
|
9
|
+
location ||= segments.last
|
13
10
|
src_dir = File.join(location, 'src', *segments)
|
11
|
+
|
12
|
+
mkdir location, File.join('src', *segments)
|
13
|
+
mkdir location, 'libs'
|
14
|
+
mkdir location, 'res'
|
15
|
+
mkdir location, 'res/drawable-hdpi'
|
16
|
+
mkdir location, 'res/drawable-ldpi'
|
17
|
+
mkdir location, 'res/drawable-mdpi'
|
18
|
+
mkdir location, 'res/layout'
|
19
|
+
mkdir location, 'res/values'
|
20
|
+
|
21
|
+
name = location.split("/").last
|
22
|
+
app_name = name.split(/[-_]/).map{ |w| w.capitalize }.join(" ")
|
23
|
+
|
14
24
|
FileUtils.mkdir_p src_dir
|
15
|
-
log "Created '#{src_dir}'."
|
16
25
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
26
|
+
create_templated("Rakefile", location, binding)
|
27
|
+
create_templated("AndroidManifest.xml", location, binding)
|
28
|
+
create_templated("main.xml", File.join(location, 'res', 'layout'), binding)
|
29
|
+
create_templated("strings.xml", File.join(location, 'res', 'values'), binding)
|
30
|
+
create_templated(".gitignore", location, binding)
|
21
31
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
32
|
+
# Default icons of various sizes
|
33
|
+
["hdpi", "mdpi", "ldpi"].each do |s|
|
34
|
+
FileUtils.cp(File.join(File.dirname(__FILE__), '..', 'templates', "res",
|
35
|
+
"drawable-#{s}", "ic_launcher.png"),
|
36
|
+
File.join(location, "res", "drawable-#{s}", "ic_launcher.png"))
|
26
37
|
end
|
27
|
-
|
38
|
+
|
39
|
+
log "Created project in #{location}."
|
28
40
|
|
41
|
+
activity_location = File.join(src_dir, "#{activity_name}.mirah")
|
42
|
+
activity_template = File.read(File.join(File.dirname(__FILE__),
|
43
|
+
'..', 'templates',
|
44
|
+
'initial_activity.mirah'))
|
29
45
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
46
|
+
File.open(activity_location, 'w') do |f|
|
47
|
+
f.puts activity_template.gsub(/INITIAL_ACTIVITY/, activity_name)
|
48
|
+
end
|
49
|
+
log "Created Activity '#{activity_name}' in '#{activity_location}'."
|
50
|
+
end
|
35
51
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
52
|
+
private
|
53
|
+
def self.log(msg)
|
54
|
+
STDERR.puts msg
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.create_templated(name, project_location, scope)
|
58
|
+
location = File.join(project_location, name)
|
59
|
+
template = File.read(File.join(File.dirname(__FILE__),
|
60
|
+
'..', 'templates', name))
|
61
|
+
|
62
|
+
File.open(location, 'w') do |f|
|
63
|
+
f.puts ERB.new(template).result(scope)
|
40
64
|
end
|
41
65
|
end
|
66
|
+
|
67
|
+
def self.mkdir(base, directory)
|
68
|
+
location = File.join(base, directory)
|
69
|
+
FileUtils.mkdir_p location
|
70
|
+
log "Created '#{location}'."
|
71
|
+
end
|
42
72
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
3
|
+
package="<%= package %>"
|
4
|
+
android:versionCode="1"
|
5
|
+
android:versionName="1.0">
|
6
|
+
<application android:label="@string/app_name"
|
7
|
+
android:debuggable="true"
|
8
|
+
android:icon="@drawable/ic_launcher" >
|
9
|
+
<% if activity_name %>
|
10
|
+
<activity android:name="<%= activity_name %>"
|
11
|
+
android:label="@string/app_name">
|
12
|
+
<intent-filter>
|
13
|
+
<action android:name="android.intent.action.MAIN" />
|
14
|
+
<category android:name="android.intent.category.LAUNCHER" />
|
15
|
+
</intent-filter>
|
16
|
+
</activity>
|
17
|
+
<% end %>
|
18
|
+
</application>
|
19
|
+
</manifest>
|
data/templates/Rakefile
ADDED
data/templates/build.xml
CHANGED
@@ -10,13 +10,20 @@
|
|
10
10
|
classname="com.android.ant.SetupTask"
|
11
11
|
classpathref="android.antlibs" />
|
12
12
|
|
13
|
+
<taskdef name="mirahc" classname="org.mirah.ant.Compile" />
|
14
|
+
|
15
|
+
<!-- TODO: better support for mixed-source builds -->
|
13
16
|
<target name="javac" description="Compiles R.java and other gen/ files.">
|
14
|
-
<javac srcdir="gen" destdir="${classes}"
|
17
|
+
<javac srcdir="gen" destdir="${classes}"
|
18
|
+
includeantruntime="false" failonerror="true" />
|
15
19
|
</target>
|
16
20
|
|
17
21
|
<target name="compile" depends="-resource-src, -aidl, javac"
|
18
22
|
description="Compiles project's .mirah files into .class files">
|
19
|
-
|
23
|
+
<!-- TODO: mirahc task doesn't infer package correctly.
|
24
|
+
<mirahc src="${src}" destdir="${classes}"
|
25
|
+
classpath="${classpath}" /> -->
|
26
|
+
<exec executable="mirahc" dir="src" failonerror="true">
|
20
27
|
<arg line="-c ${classpath}" />
|
21
28
|
<arg line="-d ${classes}" />
|
22
29
|
<arg value="." />
|
data/templates/main.xml
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
3
|
+
android:orientation="vertical"
|
4
|
+
android:layout_width="fill_parent"
|
5
|
+
android:layout_height="fill_parent"
|
6
|
+
>
|
7
|
+
<TextView
|
8
|
+
android:layout_width="fill_parent"
|
9
|
+
android:layout_height="wrap_content"
|
10
|
+
android:text="Hello World, <%= name %>"
|
11
|
+
/>
|
12
|
+
</LinearLayout>
|
13
|
+
|
Binary file
|
Binary file
|
Binary file
|
data/test/pindah_cli_test.rb
CHANGED
@@ -1,50 +1,85 @@
|
|
1
1
|
require 'test/unit'
|
2
|
-
require '
|
2
|
+
require 'tmpdir'
|
3
3
|
require 'fileutils'
|
4
4
|
require 'rubygems'
|
5
5
|
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'pindah_cli'))
|
6
6
|
|
7
7
|
class PindahCLITest < Test::Unit::TestCase
|
8
|
+
PWD = File.expand_path(File.dirname(__FILE__))
|
9
|
+
|
10
|
+
def fixture(name)
|
11
|
+
File.read(File.join(PWD, 'fixtures', name))
|
12
|
+
end
|
13
|
+
|
8
14
|
def setup
|
9
|
-
|
10
|
-
@project_path =
|
11
|
-
FileUtils.mkdir_p @
|
12
|
-
Dir.chdir @
|
15
|
+
@temp = Dir.mktmpdir("pindah-")
|
16
|
+
@project_path = "#{@temp}/testapp"
|
17
|
+
FileUtils.mkdir_p File.dirname(@temp)
|
18
|
+
Dir.chdir File.dirname(@temp)
|
19
|
+
PindahCLI.create('tld.pindah.testapp', @project_path, 'HelloWorld')
|
13
20
|
end
|
14
21
|
|
15
22
|
def teardown
|
16
|
-
FileUtils.rm_rf @
|
23
|
+
FileUtils.rm_rf @temp
|
17
24
|
end
|
18
25
|
|
19
26
|
def test_create_should_create_basic_project_structure
|
20
27
|
PindahCLI.create('tld.pindah.testapp', '.')
|
21
28
|
assert File.directory?(File.join(@project_path, 'src', 'tld', 'pindah', 'testapp'))
|
29
|
+
|
30
|
+
directories = %w{ src/tld/pindah/testapp bin libs res
|
31
|
+
res/drawable-hdpi res/drawable-ldpi
|
32
|
+
res/drawable-mdpi res/layout res/values }
|
33
|
+
|
34
|
+
directories.each do |d|
|
35
|
+
expected = File.join(@project_path, d)
|
36
|
+
assert File.directory?(expected), "Expected #{expected.inspect} to be a directory."
|
37
|
+
end
|
22
38
|
end
|
23
39
|
|
24
|
-
def
|
25
|
-
|
26
|
-
assert File.exists?(File.join(@project_path, 'Pindah.spec'))
|
40
|
+
def test_create_should_create_rakefile
|
41
|
+
rake_path = File.join(@project_path, 'Rakefile')
|
27
42
|
|
28
|
-
|
29
|
-
|
30
|
-
'Pindah.spec'))
|
31
|
-
actual = File.read(File.join(@project_path,
|
32
|
-
'Pindah.spec'))
|
33
|
-
assert_equal expected, actual
|
43
|
+
assert File.exists?(rake_path)
|
44
|
+
assert_equal fixture("Rakefile"), File.read(rake_path)
|
34
45
|
end
|
35
46
|
|
36
47
|
def test_create_should_create_an_activity_if_desired
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
48
|
+
actual = File.read(File.join(@project_path, 'src',
|
49
|
+
'tld', 'pindah',
|
50
|
+
'testapp', 'HelloWorld.mirah'))
|
51
|
+
assert_equal fixture('HelloWorld.mirah'), actual
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_create_should_create_manifest
|
55
|
+
manifest_path = File.join(@project_path, 'AndroidManifest.xml')
|
56
|
+
|
57
|
+
assert File.exists?(manifest_path)
|
58
|
+
assert_equal fixture("AndroidManifest.xml").gsub(/\s+/, ' '), File.read(manifest_path).gsub(/\s+/, ' ')
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_create_should_create_manifest_without_activity
|
62
|
+
@temp = Dir.mktmpdir("pindah-")
|
63
|
+
@project_path = "#{@temp}/testapp"
|
64
|
+
FileUtils.mkdir_p File.dirname(@temp)
|
65
|
+
Dir.chdir File.dirname(@temp)
|
66
|
+
PindahCLI.create('tld.pindah.testapp', @project_path)
|
67
|
+
|
68
|
+
manifest_path = File.join(@project_path, 'AndroidManifest.xml')
|
69
|
+
|
70
|
+
assert File.exists?(manifest_path)
|
71
|
+
assert_equal fixture("AndroidManifest.xml.no-activity").gsub(/\s+/, ' '), File.read(manifest_path).gsub(/\s+/, ' ')
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_create_should_create_strings
|
75
|
+
path = File.join(@project_path, 'res', 'values', 'strings.xml')
|
76
|
+
assert File.exists?(path)
|
77
|
+
assert_equal fixture("strings.xml").strip, File.read(path).strip
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_create_should_create_layout
|
81
|
+
path = File.join(@project_path, 'res', 'layout', 'main.xml')
|
82
|
+
assert File.exists?(path)
|
83
|
+
assert_equal fixture("main.xml").strip, File.read(path).strip
|
49
84
|
end
|
50
85
|
end
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pindah
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 0.1.0
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Phil Hagelberg
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-02-
|
13
|
+
date: 2011-02-08 00:00:00 -08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -53,8 +53,16 @@ files:
|
|
53
53
|
- bin/pindah
|
54
54
|
- lib/pindah.rb
|
55
55
|
- lib/pindah_cli.rb
|
56
|
-
- templates/
|
56
|
+
- templates/AndroidManifest.xml
|
57
57
|
- templates/build.xml
|
58
|
+
- templates/main.xml
|
59
|
+
- templates/strings.xml
|
60
|
+
- templates/Rakefile
|
61
|
+
- templates/initial_activity.mirah
|
62
|
+
- templates/.gitignore
|
63
|
+
- templates/res/drawable-mdpi/ic_launcher.png
|
64
|
+
- templates/res/drawable-hdpi/ic_launcher.png
|
65
|
+
- templates/res/drawable-ldpi/ic_launcher.png
|
58
66
|
- test/fixtures/HelloWorld.mirah
|
59
67
|
- test/pindah_cli_test.rb
|
60
68
|
has_rdoc: true
|
@@ -76,9 +84,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
85
|
none: false
|
78
86
|
requirements:
|
79
|
-
- - "
|
87
|
+
- - ">="
|
80
88
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
89
|
+
version: "0"
|
82
90
|
requirements: []
|
83
91
|
|
84
92
|
rubyforge_project: pindah
|