andrake 0.1.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -5,6 +5,7 @@ source "http://rubygems.org"
5
5
 
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
+ gem "nokogiri"
8
9
  group :development do
9
10
  gem "rspec", "~> 2.3.0"
10
11
  gem "bundler", "~> 1.0.0"
@@ -7,6 +7,7 @@ GEM
7
7
  bundler (~> 1.0.0)
8
8
  git (>= 1.2.5)
9
9
  rake
10
+ nokogiri (1.4.4)
10
11
  rake (0.8.7)
11
12
  rcov (0.9.9)
12
13
  rspec (2.3.0)
@@ -24,5 +25,6 @@ PLATFORMS
24
25
  DEPENDENCIES
25
26
  bundler (~> 1.0.0)
26
27
  jeweler (~> 1.5.2)
28
+ nokogiri
27
29
  rcov
28
30
  rspec (~> 2.3.0)
@@ -3,10 +3,16 @@
3
3
  rake tasks for android development
4
4
 
5
5
  == tasks
6
- * nothing yet
6
+ count up version of AndroidManifest.xml automaticaly
7
+
8
+ by
9
+ rake version:bump:major
10
+ rake version:bump:minor
11
+ rake version:bump:patch
12
+
7
13
 
8
14
  == Contributing to andrake
9
-
15
+
10
16
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
11
17
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
12
18
  * Fork the project
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 1.0.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{andrake}
8
- s.version = "0.1.2"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Yamada Masaki"]
12
- s.date = %q{2011-05-17}
12
+ s.date = %q{2011-06-25}
13
13
  s.default_executable = %q{andrake}
14
14
  s.description = %q{Andrake is rake tasks for android development}
15
15
  s.email = %q{masaki@hisme.net}
@@ -32,9 +32,15 @@ Gem::Specification.new do |s|
32
32
  "lib/andrake.rb",
33
33
  "lib/andrake/generator.rb",
34
34
  "lib/andrake/generator/rakefile.rb",
35
+ "lib/andrake/manifest.rb",
36
+ "lib/andrake/manifest/version.rb",
37
+ "lib/andrake/tasks.rb",
35
38
  "lib/andrake/templates/Rakefile",
36
39
  "spec/andrake_spec.rb",
37
40
  "spec/generator/rakefile_spec.rb",
41
+ "spec/manifest/AndroidManifest.xml",
42
+ "spec/manifest/manifest_spec.rb",
43
+ "spec/manifest/version_spec.rb",
38
44
  "spec/spec_helper.rb"
39
45
  ]
40
46
  s.homepage = %q{http://github.com/masarakki/andrake}
@@ -45,6 +51,8 @@ Gem::Specification.new do |s|
45
51
  s.test_files = [
46
52
  "spec/andrake_spec.rb",
47
53
  "spec/generator/rakefile_spec.rb",
54
+ "spec/manifest/manifest_spec.rb",
55
+ "spec/manifest/version_spec.rb",
48
56
  "spec/spec_helper.rb"
49
57
  ]
50
58
 
@@ -52,17 +60,20 @@ Gem::Specification.new do |s|
52
60
  s.specification_version = 3
53
61
 
54
62
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
63
+ s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
55
64
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
56
65
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
57
66
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
58
67
  s.add_development_dependency(%q<rcov>, [">= 0"])
59
68
  else
69
+ s.add_dependency(%q<nokogiri>, [">= 0"])
60
70
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
61
71
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
62
72
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
63
73
  s.add_dependency(%q<rcov>, [">= 0"])
64
74
  end
65
75
  else
76
+ s.add_dependency(%q<nokogiri>, [">= 0"])
66
77
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
67
78
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
68
79
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
@@ -1,3 +1,5 @@
1
1
  module Andrake
2
2
  autoload :Generator, 'andrake/generator'
3
+ autoload :Manifest, 'andrake/manifest'
4
+ autoload :Tasks, 'andrake/tasks'
3
5
  end
@@ -0,0 +1,22 @@
1
+ require 'nokogiri'
2
+ class Andrake::Manifest
3
+ autoload :Version, 'andrake/manifest/version'
4
+ ManifestFile = 'AndroidManifest.xml'
5
+
6
+ class << self
7
+ def manifest_file ; ManifestFile ; end
8
+ def load ; new File.read(manifest_file) ; end
9
+ end
10
+
11
+ def initialize(xml)
12
+ @document = ::Nokogiri::XML(xml)
13
+ end
14
+
15
+ def save
16
+ File.open(self.class.manifest_file, 'w') do |f|
17
+ @document.write_xml_to f
18
+ end
19
+ end
20
+
21
+ include Version
22
+ end
@@ -0,0 +1,67 @@
1
+ module Andrake::Manifest::Version
2
+ def version
3
+ [version_major, version_minor, version_patch].join(".")
4
+ end
5
+
6
+ def bump_major
7
+ self.version_major += 1
8
+ self.version_minor = 0
9
+ self.version_patch = 0
10
+ self.version_code += 1
11
+ self
12
+ end
13
+
14
+ def bump_minor
15
+ self.version_minor += 1
16
+ self.version_patch = 0
17
+ self.version_code += 1
18
+ self
19
+ end
20
+
21
+ def bump_patch
22
+ self.version_patch += 1
23
+ self.version_code += 1
24
+ self
25
+ end
26
+
27
+ def update_version
28
+ manifest["android:versionName"] = version.to_s
29
+ manifest["android:versionCode"] = version_code.to_s
30
+ self
31
+ end
32
+
33
+ [:major, :minor, :patch].each do |element|
34
+ define_method("bump_#{element}!".to_sym) do
35
+ send("bump_#{element}".to_sym).update_version.save
36
+ self
37
+ end
38
+ end
39
+
40
+ [:major, :minor, :patch, :code].each do |element|
41
+ val_name = "@version_#{element}".to_sym
42
+
43
+ define_method("version_#{element}".to_sym) do
44
+ load_version unless instance_variable_get(val_name)
45
+ instance_variable_get(val_name)
46
+ end
47
+
48
+ define_method("version_#{element}=".to_sym) do |val|
49
+ instance_variable_set(val_name, val)
50
+ val
51
+ end
52
+
53
+ protected "version_#{element}=".to_sym
54
+ end
55
+
56
+ private
57
+ def manifest
58
+ @manifest ||= @document.xpath('/manifest').first
59
+ end
60
+
61
+ def load_version
62
+ @version_major, @version_minor, @version_patch = manifest["versionName"].split(/\./).map(&:to_i) + [0, 0, 0]
63
+ @version_code = manifest["versionCode"].to_i
64
+ true
65
+ end
66
+ end
67
+
@@ -0,0 +1,39 @@
1
+ require 'rake'
2
+ require 'rake/tasklib'
3
+
4
+ class Rake::Application
5
+ def andrake
6
+
7
+ end
8
+ end
9
+
10
+ class Andrake::Tasks < ::Rake::TaskLib
11
+ def initialize
12
+ define
13
+ end
14
+
15
+ private
16
+ def define
17
+ namespace :version do
18
+ namespace :bump do
19
+ desc "bump major version"
20
+ task :major do
21
+ manifest = Andrake::Manifest.load.bump_major!
22
+ puts "major update to #{manifest.version}"
23
+ end
24
+
25
+ desc "bump minor version"
26
+ task :minor do
27
+ manifest = Andrake::Manifest.load.bump_minor!
28
+ puts "minor update to #{manifest.version}"
29
+ end
30
+
31
+ desc "bump patch version"
32
+ task :patch do
33
+ manifest = Andrake::Manifest.load.bump_patch!
34
+ puts "patch update to #{manifest.version}"
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,5 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
3
  require 'andrake'
4
+
5
+ Andrake::Tasks.new
@@ -0,0 +1,47 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
+ package="net.hisme.masaki.kyoani" android:versionCode="25"
4
+ android:versionName="0.8.1">
5
+ <application android:icon="@drawable/icon" android:label="@string/app_name">
6
+ <activity android:name=".activities.MainActivity"
7
+ android:label="@string/title_main">
8
+ <intent-filter>
9
+ <action android:name="android.intent.action.MAIN" />
10
+ <category android:name="android.intent.category.LAUNCHER" />
11
+ </intent-filter>
12
+ </activity>
13
+ <activity android:name=".activities.AccountActivity"
14
+ android:label="@string/title_account" />
15
+ <activity android:name=".activities.SettingActivity"
16
+ android:label="@string/app_name" />
17
+ <activity android:name=".activities.HelpActivity"
18
+ android:label="@string/title_help" />
19
+ <activity android:name=".activities.AboutActivity"
20
+ android:label="@string/title_about" />
21
+
22
+ <receiver android:name=".widget.KyoAniWidget1" android:label="@string/widget_1">
23
+ <intent-filter>
24
+ <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
25
+ </intent-filter>
26
+ <meta-data android:name="android.appwidget.provider"
27
+ android:resource="@xml/widget_1x1" />
28
+ </receiver>
29
+ <receiver android:name=".widget.KyoAniWidget2" android:label="@string/widget_2">
30
+ <intent-filter>
31
+ <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
32
+ </intent-filter>
33
+ <meta-data android:name="android.appwidget.provider"
34
+ android:resource="@xml/widget_2x2" />
35
+ </receiver>
36
+ <service android:name=".services.KyoAniService"></service>
37
+ <service android:name=".services.DailyUpdater"></service>
38
+ <service android:name=".services.WidgetUpdater"></service>
39
+ <receiver android:name=".services.StartupReceiver">
40
+ <intent-filter>
41
+ <action android:name="android.intent.action.BOOT_COMPLETED" />
42
+ </intent-filter>
43
+ </receiver>
44
+ </application>
45
+ <uses-sdk android:minSdkVersion="4" />
46
+ <uses-permission android:name="android.permission.INTERNET" />
47
+ </manifest>
@@ -0,0 +1,44 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Andrake::Manifest do
4
+ before do
5
+ @manifest_filename = File.expand_path(File.dirname(__FILE__) + '/AndroidManifest.xml')
6
+
7
+ @manifest_xml = File.read(@manifest_filename)
8
+ end
9
+
10
+ describe "class methods" do
11
+ subject { Andrake::Manifest }
12
+ its(:manifest_file) { should eq("AndroidManifest.xml") }
13
+
14
+ describe ".load" do
15
+ before do
16
+ Andrake::Manifest.stub(:manifest_file) { @manifest_filename }
17
+ end
18
+ it "should create instance with contents of xml file" do
19
+ subject.should_receive(:new).with(@manifest_xml)
20
+ subject.load
21
+ end
22
+ end
23
+ end
24
+
25
+ describe "instance methods" do
26
+ before do
27
+ Andrake::Manifest.stub(:manifest_file) { @manifest_filename }
28
+ end
29
+
30
+ subject { Andrake::Manifest.new(@manifest_xml) }
31
+ describe "#save" do
32
+ after do
33
+ File.open(@manifest_filename, 'w') do |f|
34
+ f.write @manifest_xml
35
+ end
36
+ end
37
+
38
+ it "should be equal to src file" do
39
+ subject.save
40
+ Nokogiri::XML(File.read(@manifest_filename)).to_s.should eq(subject.instance_variable_get(:@document).to_s)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,84 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Andrake::Manifest do
4
+ before(:all) do
5
+ @manifest_file = File.read(File.expand_path(File.dirname(__FILE__) + '/AndroidManifest.xml'))
6
+ end
7
+
8
+ before do
9
+ @manifest = Andrake::Manifest.new(@manifest_file)
10
+ end
11
+
12
+ subject { @manifest }
13
+ its(:version) { "0.8.1" }
14
+ its(:version_major) { should eq(0) }
15
+ its(:version_minor) { should eq(8) }
16
+ its(:version_patch) { should eq(1) }
17
+ its(:version_code) { should eq(25) }
18
+
19
+ describe "#bump_major" do
20
+ subject { @manifest.bump_major }
21
+
22
+ it { should eq(@manifest) }
23
+ its(:version_major) { should eq(1) }
24
+ its(:version_minor) { should eq(0) }
25
+ its(:version_patch) { should eq(0) }
26
+ its(:version_code) { should eq(26) }
27
+ end
28
+
29
+ describe "#bump_minor" do
30
+ subject { @manifest.bump_minor }
31
+
32
+ it { should eq(@manifest) }
33
+ its(:version_major) { should eq(0) }
34
+ its(:version_minor) { should eq(9) }
35
+ its(:version_patch) { should eq(0) }
36
+ its(:version_code) { should eq(26) }
37
+ end
38
+
39
+ describe "#bump_patch" do
40
+ subject { @manifest.bump_patch }
41
+
42
+ it { should eq(@manifest) }
43
+ its(:version_major) { should eq(0) }
44
+ its(:version_minor) { should eq(8) }
45
+ its(:version_patch) { should eq(2) }
46
+ its(:version_code) { should eq(26) }
47
+ end
48
+
49
+ describe "#load_version reload version elements from Nokogiri instance" do
50
+ subject do
51
+ @manifest.bump_patch
52
+ @manifest.send(:load_version)
53
+ @manifest
54
+ end
55
+
56
+ its(:version_major) { should eq(0) }
57
+ its(:version_minor) { should eq(8) }
58
+ its(:version_patch) { should eq(1) }
59
+ its(:version_code) { should eq(25) }
60
+ end
61
+
62
+ describe "#update set version elements to Nokogiri instance" do
63
+ subject do
64
+ @manifest.bump_patch.update_version
65
+ @manifest.send(:load_version)
66
+ @manifest
67
+ end
68
+
69
+ its(:version_major) { should eq(0) }
70
+ its(:version_minor) { should eq(8) }
71
+ its(:version_patch) { should eq(2) }
72
+ its(:version_code) { should eq(26) }
73
+ end
74
+
75
+ describe "bump_version and save xml" do
76
+ subject { @manifest }
77
+ it "should recieve bump, update_version, save" do
78
+ @manifest.should_receive(:bump_patch).ordered { @manifest }
79
+ @manifest.should_receive(:update_version).ordered { @manifest }
80
+ @manifest.should_receive(:save).ordered { true }
81
+ @manifest.bump_patch!.should eq(@manifest)
82
+ end
83
+ end
84
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: andrake
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.2
5
+ version: 1.0.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Yamada Masaki
@@ -10,12 +10,23 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-17 00:00:00 +09:00
13
+ date: 2011-06-25 00:00:00 +09:00
14
14
  default_executable: andrake
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: rspec
17
+ name: nokogiri
18
18
  requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: &id002 !ruby/object:Gem::Requirement
19
30
  none: false
20
31
  requirements:
21
32
  - - ~>
@@ -23,10 +34,10 @@ dependencies:
23
34
  version: 2.3.0
24
35
  type: :development
25
36
  prerelease: false
26
- version_requirements: *id001
37
+ version_requirements: *id002
27
38
  - !ruby/object:Gem::Dependency
28
39
  name: bundler
29
- requirement: &id002 !ruby/object:Gem::Requirement
40
+ requirement: &id003 !ruby/object:Gem::Requirement
30
41
  none: false
31
42
  requirements:
32
43
  - - ~>
@@ -34,10 +45,10 @@ dependencies:
34
45
  version: 1.0.0
35
46
  type: :development
36
47
  prerelease: false
37
- version_requirements: *id002
48
+ version_requirements: *id003
38
49
  - !ruby/object:Gem::Dependency
39
50
  name: jeweler
40
- requirement: &id003 !ruby/object:Gem::Requirement
51
+ requirement: &id004 !ruby/object:Gem::Requirement
41
52
  none: false
42
53
  requirements:
43
54
  - - ~>
@@ -45,10 +56,10 @@ dependencies:
45
56
  version: 1.5.2
46
57
  type: :development
47
58
  prerelease: false
48
- version_requirements: *id003
59
+ version_requirements: *id004
49
60
  - !ruby/object:Gem::Dependency
50
61
  name: rcov
51
- requirement: &id004 !ruby/object:Gem::Requirement
62
+ requirement: &id005 !ruby/object:Gem::Requirement
52
63
  none: false
53
64
  requirements:
54
65
  - - ">="
@@ -56,7 +67,7 @@ dependencies:
56
67
  version: "0"
57
68
  type: :development
58
69
  prerelease: false
59
- version_requirements: *id004
70
+ version_requirements: *id005
60
71
  description: Andrake is rake tasks for android development
61
72
  email: masaki@hisme.net
62
73
  executables:
@@ -80,9 +91,15 @@ files:
80
91
  - lib/andrake.rb
81
92
  - lib/andrake/generator.rb
82
93
  - lib/andrake/generator/rakefile.rb
94
+ - lib/andrake/manifest.rb
95
+ - lib/andrake/manifest/version.rb
96
+ - lib/andrake/tasks.rb
83
97
  - lib/andrake/templates/Rakefile
84
98
  - spec/andrake_spec.rb
85
99
  - spec/generator/rakefile_spec.rb
100
+ - spec/manifest/AndroidManifest.xml
101
+ - spec/manifest/manifest_spec.rb
102
+ - spec/manifest/version_spec.rb
86
103
  - spec/spec_helper.rb
87
104
  has_rdoc: true
88
105
  homepage: http://github.com/masarakki/andrake
@@ -98,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
115
  requirements:
99
116
  - - ">="
100
117
  - !ruby/object:Gem::Version
101
- hash: 930415087
118
+ hash: 338396801
102
119
  segments:
103
120
  - 0
104
121
  version: "0"
@@ -118,4 +135,6 @@ summary: Andrake is rake tasks for android development
118
135
  test_files:
119
136
  - spec/andrake_spec.rb
120
137
  - spec/generator/rakefile_spec.rb
138
+ - spec/manifest/manifest_spec.rb
139
+ - spec/manifest/version_spec.rb
121
140
  - spec/spec_helper.rb