andrake 0.1.2 → 1.0.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.
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