pindah 0.1.2 → 0.1.3

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.
@@ -1,77 +1,77 @@
1
- require 'fileutils'
2
- require 'erb'
3
-
4
- module PindahCLI
5
- DEFAULT_TARGET_VERSION = '2.1'
6
-
7
- def self.create(package, location=nil, activity_name=nil)
8
- segments = package.split('.')
9
- location ||= segments.last
10
- src_dir = File.join(location, 'src', *segments)
11
-
12
- mkdir location, File.join('src', *segments)
13
- mkdir location, 'bin'
14
- mkdir location, 'libs'
15
- mkdir location, 'res'
16
- mkdir location, 'res/drawable-hdpi'
17
- mkdir location, 'res/drawable-ldpi'
18
- mkdir location, 'res/drawable-mdpi'
19
- mkdir location, 'res/layout'
20
- mkdir location, 'res/values'
21
-
22
- name = location.split("/").last
23
- app_name = name.split(/[-_]/).map{ |w| w.capitalize }.join(" ")
24
-
25
- FileUtils.mkdir_p src_dir
26
-
27
- create_templated("Rakefile", location, binding)
28
- create_templated("AndroidManifest.xml", location, binding)
29
- create_templated("main.xml", File.join(location, 'res', 'layout'), binding)
30
- create_templated("strings.xml", File.join(location, 'res', 'values'), binding)
31
- create_templated(".gitignore", location, binding)
32
-
33
- # Default icons of various sizes
34
- ["hdpi", "mdpi", "ldpi"].each do |s|
35
- FileUtils.cp(File.join(File.dirname(__FILE__), '..', 'templates', "res",
36
- "drawable-#{s}", "ic_launcher.png"),
37
- File.join(location, "res", "drawable-#{s}", "ic_launcher.png"))
38
- end
39
-
40
- log "Created project in #{location}."
41
-
42
- if activity_name
43
- activity_location = File.join(src_dir, "#{activity_name}.mirah")
44
- activity_template = File.read(File.join(File.dirname(__FILE__),
45
- '..', 'templates',
46
- 'initial_activity.mirah'))
47
-
48
- File.open(activity_location, 'w') do |f|
49
- template_with_classname = activity_template.gsub(/INITIAL_ACTIVITY/, activity_name)
50
- f.puts ERB.new(template_with_classname).result(binding)
51
- end
52
- log "Created Activity '#{activity_name}' in '#{activity_location}'."
53
- end
54
- end
55
-
56
- private
57
-
58
- def self.log(msg)
59
- STDERR.puts msg
60
- end
61
-
62
- def self.create_templated(name, project_location, scope)
63
- location = File.join(project_location, name)
64
- template = File.read(File.join(File.dirname(__FILE__),
65
- '..', 'templates', name))
66
-
67
- File.open(location, 'w') do |f|
68
- f.puts ERB.new(template).result(scope)
69
- end
70
- end
71
-
72
- def self.mkdir(base, directory)
73
- location = File.join(base, directory)
74
- FileUtils.mkdir_p location
75
- log "Created '#{location}'."
76
- end
77
- end
1
+ require 'fileutils'
2
+ require 'erb'
3
+
4
+ module PindahCLI
5
+ DEFAULT_TARGET_VERSION = '2.3.3'
6
+
7
+ def self.create(package, location=nil, activity_name=nil)
8
+ segments = package.split('.')
9
+ location ||= segments.last
10
+ src_dir = File.join(location, 'src', *segments)
11
+
12
+ mkdir location, File.join('src', *segments)
13
+ mkdir location, 'bin'
14
+ mkdir location, 'libs'
15
+ mkdir location, 'res'
16
+ mkdir location, 'res/drawable-hdpi'
17
+ mkdir location, 'res/drawable-ldpi'
18
+ mkdir location, 'res/drawable-mdpi'
19
+ mkdir location, 'res/layout'
20
+ mkdir location, 'res/values'
21
+
22
+ name = File.basename(location)
23
+ app_name = name.split(/[-_]/).map{ |w| w.capitalize }.join(" ")
24
+
25
+ FileUtils.mkdir_p src_dir
26
+
27
+ create_templated("Rakefile", location, binding)
28
+ create_templated("AndroidManifest.xml", location, binding)
29
+ create_templated("main.xml", File.join(location, 'res', 'layout'), binding)
30
+ create_templated("strings.xml", File.join(location, 'res', 'values'), binding)
31
+ create_templated(".gitignore", location, binding)
32
+
33
+ # Default icons of various sizes
34
+ ["hdpi", "mdpi", "ldpi"].each do |s|
35
+ FileUtils.cp(File.join(File.dirname(__FILE__), '..', 'templates', "res",
36
+ "drawable-#{s}", "ic_launcher.png"),
37
+ File.join(location, "res", "drawable-#{s}", "ic_launcher.png"))
38
+ end
39
+
40
+ log "Created project in #{location}."
41
+
42
+ if activity_name
43
+ activity_location = File.join(src_dir, "#{activity_name}.mirah")
44
+ activity_template = File.read(File.join(File.dirname(__FILE__),
45
+ '..', 'templates',
46
+ 'initial_activity.mirah'))
47
+
48
+ File.open(activity_location, 'w') do |f|
49
+ template_with_classname = activity_template.gsub(/INITIAL_ACTIVITY/, activity_name)
50
+ f.puts ERB.new(template_with_classname).result(binding)
51
+ end
52
+ log "Created Activity '#{activity_name}' in '#{activity_location}'."
53
+ end
54
+ end
55
+
56
+ private
57
+
58
+ def self.log(msg)
59
+ STDERR.puts msg
60
+ end
61
+
62
+ def self.create_templated(name, project_location, scope)
63
+ location = File.join(project_location, name)
64
+ template = File.read(File.join(File.dirname(__FILE__),
65
+ '..', 'templates', name))
66
+
67
+ File.open(location, 'w') do |f|
68
+ f.puts ERB.new(template).result(scope)
69
+ end
70
+ end
71
+
72
+ def self.mkdir(base, directory)
73
+ location = File.join(base, directory)
74
+ FileUtils.mkdir_p location
75
+ log "Created '#{location}'."
76
+ end
77
+ end
@@ -1,2 +1,2 @@
1
- bin
2
- gen
1
+ bin/
2
+ gen/
@@ -1,19 +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>
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>
@@ -1,7 +1,7 @@
1
- require "rubygems"
2
- require "pindah"
3
-
4
- Pindah.spec = {
5
- :name => "<%= name %>",
6
- :target_version => "<%= DEFAULT_TARGET_VERSION %>"
7
- }
1
+ require "rubygems"
2
+ require "pindah"
3
+
4
+ Pindah.spec = {
5
+ :name => "<%= name %>",
6
+ :target_version => "<%= DEFAULT_TARGET_VERSION %>"
7
+ }
@@ -1,32 +1,47 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project name="<%= @spec[:name] %>">
3
- <path id="android.antlibs">
4
- <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
5
- <pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
6
- <pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
7
- </path>
8
- <path id="java.classpath">
9
- <pathelement location="${classpath}" />
10
- </path>
11
-
12
- <taskdef name="setup"
13
- classname="com.android.ant.SetupTask"
14
- classpathref="android.antlibs" />
15
-
16
- <taskdef name="mirahc" classname="org.mirah.ant.Compile" />
17
-
18
- <!-- TODO: better support for mixed-source builds -->
19
- <target name="javac" description="Compiles R.java and other gen/ files.">
20
- <javac srcdir="gen" destdir="${classes}"
21
- includeantruntime="false" failonerror="true" />
22
- </target>
23
-
24
- <target name="compile" depends="-resource-src, -aidl, javac"
25
- description="Compiles project's .mirah files into .class files">
26
- <mirahc src="${src}" destdir="${classes}">
27
- <classpath refid="java.classpath" />
28
- </mirahc>
29
- </target>
30
-
31
- <setup />
32
- </project>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project name="<%= @spec[:name] %>">
3
+ <property file="local.properties" />
4
+
5
+ <property environment="env" />
6
+ <condition property="sdk.dir" value="${env.ANDROID_HOME}">
7
+ <isset property="env.ANDROID_HOME" />
8
+ </condition>
9
+
10
+ <property file="project.properties" />
11
+
12
+ <!-- quick check on sdk.dir -->
13
+ <fail message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'"
14
+ unless="sdk.dir" />
15
+
16
+ <path id="java.classpath">
17
+ <pathelement location="${classpath}" />
18
+ <pathelement location="${out.classes.absolute.dir}" />
19
+ </path>
20
+
21
+ <taskdef name="mirahc" classname="org.mirah.ant.Compile" />
22
+
23
+ <!-- TODO: better support for mixed-source builds -->
24
+ <target name="javac" description="Compiles R.java and other gen/ files.">
25
+ <javac srcdir="${gen.absolute.dir}"
26
+ destdir="${out.classes.absolute.dir}"
27
+ source="1.6"
28
+ target="1.6"
29
+ includeantruntime="false"
30
+ failonerror="true" />
31
+ </target>
32
+
33
+ <target name="compile" depends="-compile" />
34
+
35
+ <target name="-compile" depends="-build-setup, -pre-build, -code-gen, -pre-compile, javac">
36
+ <mirahc dir="src" destdir="bin/classes" jvmversion="1.6">
37
+ <classpath refid="java.classpath" />
38
+ </mirahc>
39
+ </target>
40
+
41
+ <!-- version-tag: 1 -->
42
+ <import file="${sdk.dir}/tools/ant/build.xml" />
43
+
44
+ <% if @spec[:extra_ant_xml] %>
45
+ <import file="<%= File.expand_path @spec[:extra_ant_xml] %>" />
46
+ <% end %>
47
+ </project>
@@ -1,10 +1,10 @@
1
- package <%= package %>
2
-
3
- import android.app.Activity
4
-
5
- class INITIAL_ACTIVITY < Activity
6
- def onCreate(state)
7
- super state
8
- setContentView R.layout.main
9
- end
10
- end
1
+ package <%= package %>
2
+
3
+ import android.app.Activity
4
+
5
+ class INITIAL_ACTIVITY < Activity
6
+ def onCreate(state)
7
+ super state
8
+ setContentView R.layout.main
9
+ end
10
+ end
@@ -1,13 +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
-
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
+
@@ -1,4 +1,4 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <resources>
3
- <string name="app_name"><%= app_name %></string>
4
- </resources>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <resources>
3
+ <string name="app_name"><%= app_name %></string>
4
+ </resources>
@@ -1,10 +1,10 @@
1
- package tld.pindah.testapp
2
-
3
- import android.app.Activity
4
-
5
- class HelloWorld < Activity
6
- def onCreate(state)
7
- super state
8
- setContentView R.layout.main
9
- end
10
- end
1
+ package tld.pindah.testapp
2
+
3
+ import android.app.Activity
4
+
5
+ class HelloWorld < Activity
6
+ def onCreate(state)
7
+ super state
8
+ setContentView R.layout.main
9
+ end
10
+ end
@@ -1,85 +1,85 @@
1
- require 'test/unit'
2
- require 'tmpdir'
3
- require 'fileutils'
4
- require 'rubygems'
5
- require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'pindah_cli'))
6
-
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
-
14
- def setup
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')
20
- end
21
-
22
- def teardown
23
- FileUtils.rm_rf @temp
24
- end
25
-
26
- def test_create_should_create_basic_project_structure
27
- PindahCLI.create('tld.pindah.testapp', '.')
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
38
- end
39
-
40
- def test_create_should_create_rakefile
41
- rake_path = File.join(@project_path, 'Rakefile')
42
-
43
- assert File.exists?(rake_path)
44
- assert_equal fixture("Rakefile"), File.read(rake_path)
45
- end
46
-
47
- def test_create_should_create_an_activity_if_desired
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
84
- end
85
- end
1
+ require 'test/unit'
2
+ require 'tmpdir'
3
+ require 'fileutils'
4
+ require 'rubygems'
5
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'pindah_cli'))
6
+
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
+
14
+ def setup
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')
20
+ end
21
+
22
+ def teardown
23
+ FileUtils.rm_rf @temp
24
+ end
25
+
26
+ def test_create_should_create_basic_project_structure
27
+ PindahCLI.create('tld.pindah.testapp', '.')
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
38
+ end
39
+
40
+ def test_create_should_create_rakefile
41
+ rake_path = File.join(@project_path, 'Rakefile')
42
+
43
+ assert File.exists?(rake_path)
44
+ assert_equal fixture("Rakefile"), File.read(rake_path)
45
+ end
46
+
47
+ def test_create_should_create_an_activity_if_desired
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
84
+ end
85
+ end