pindah 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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