Class: Timewizard::Versioner::Android

Inherits:
Object
  • Object
show all
Defined in:
lib/timewizard/versioner/android.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dir) ⇒ Android

Returns a new instance of Android.



13
14
15
16
# File 'lib/timewizard/versioner/android.rb', line 13

def initialize(dir)
  @dir = dir
  @manifest = nil
end

Instance Attribute Details

#dirObject

Returns the value of attribute dir.



6
7
8
# File 'lib/timewizard/versioner/android.rb', line 6

def dir
  @dir
end

#manifestObject (readonly)

Returns the value of attribute manifest.



7
8
9
# File 'lib/timewizard/versioner/android.rb', line 7

def manifest
  @manifest
end

#new_version_codeObject

Returns the value of attribute new_version_code.



10
11
12
# File 'lib/timewizard/versioner/android.rb', line 10

def new_version_code
  @new_version_code
end

#new_version_nameObject

Returns the value of attribute new_version_name.



11
12
13
# File 'lib/timewizard/versioner/android.rb', line 11

def new_version_name
  @new_version_name
end

#old_version_codeObject (readonly)

Returns the value of attribute old_version_code.



8
9
10
# File 'lib/timewizard/versioner/android.rb', line 8

def old_version_code
  @old_version_code
end

#old_version_nameObject (readonly)

Returns the value of attribute old_version_name.



9
10
11
# File 'lib/timewizard/versioner/android.rb', line 9

def old_version_name
  @old_version_name
end

Instance Method Details

#change_manifest(container, version_code_change = '-1', version_name_change = '-1') ⇒ Object



111
112
113
114
115
116
117
# File 'lib/timewizard/versioner/android.rb', line 111

def change_manifest(container, version_code_change = '-1', version_name_change = '-1')
  version_code = find_version_code(container)
  changed_code = change_version_code(version_code, version_code_change)
  version_name = find_version_name(container)
  changed_name = change_version_name(version_name, version_name_change)
  container = container.gsub(version_code, changed_code).gsub(version_name, changed_name)
end

#change_version_code(parts, change_to = '-1') ⇒ Object



89
90
91
92
93
94
95
96
97
98
# File 'lib/timewizard/versioner/android.rb', line 89

def change_version_code(parts, change_to = '-1')
  text = parts
  version = Timewizard::Utils::Wizardry.to_i(text).to_s
  if change_to.to_s == '-1'
    text = text.gsub(version, @new_version_code.to_s)
  else
    @new_version_code = change_to.to_i
    text = text.gsub(version, @new_version_code.to_s)
  end
end

#change_version_name(parts, change_to = '-1') ⇒ Object



100
101
102
103
104
105
106
107
108
109
# File 'lib/timewizard/versioner/android.rb', line 100

def change_version_name(parts, change_to = '-1')
  text = parts
  version = Timewizard::Utils::Wizardry.only_version text
  if change_to.to_s == '-1'
    text = text.gsub(version, @new_version_name.to_s)
  else
    @new_version_name = Timewizard::Utils::Wizardry.only_version change_to
    text = text.gsub(version, @new_version_name.to_s)
  end
end

#find_manifestObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/timewizard/versioner/android.rb', line 22

def find_manifest()
  if File.directory?(@dir)
    # check if the directory exists
    unless Dir.exist?(@dir)
      raise "directory passed in does not exist"
    end
    temp_file = nil
    # check if the directory contains an AndroidManifest.xml
    Dir.foreach(@dir.to_s) { |x|
      if x == "AndroidManifest.xml"
        temp_file = x
      end }
    if temp_file.nil?
      raise "there is no AndroidManifest.xml in the given directory"
    end
    @manifest = File.expand_path(temp_file, @dir)
  else
    unless File.exist?(@dir)
      raise "file passed in does not exist"
    end
    unless @dir == "AndroidManifest.xml"
      raise "file must be an AndroidManifest.xml"
    end
    temp_file = File.absolute_path(@dir)
    @manifest = temp_file
  end
end

#find_version_code(container) ⇒ Object



64
65
66
67
# File 'lib/timewizard/versioner/android.rb', line 64

def find_version_code(container)
  codes = find_version_code_and_name(container)
  codes[0]
end

#find_version_code_and_name(container) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/timewizard/versioner/android.rb', line 74

def find_version_code_and_name(container)
  parts = container.match("android:versionCode=\"(.*)\"")

  text = parts[0]
  text_split = text.partition /\s+/

  @old_version_code = Timewizard::Utils::Wizardry.to_i text_split[0]
  @new_version_code = (@old_version_code + 1)

  @old_version_name = Timewizard::Utils::Wizardry.only_version text_split[2]
  @new_version_name = @old_version_name

  codes = [text_split[0], text_split[2]]
end

#find_version_name(container) ⇒ Object



69
70
71
72
# File 'lib/timewizard/versioner/android.rb', line 69

def find_version_name(container)
  codes = find_version_code_and_name(container)
  codes[1]
end

#open_manifestObject



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/timewizard/versioner/android.rb', line 50

def open_manifest()
  if @manifest.nil?
    find_manifest
  end

  file_str = ''

  if File.exist?(@manifest)
    file_str = File.open(@manifest, 'r+') { |file| file.read }
  end

  file_str
end

#update(change_to = '-1') ⇒ Object



18
19
20
# File 'lib/timewizard/versioner/android.rb', line 18

def update(change_to = '-1')
  write_manifest(change_manifest(open_manifest, change_to))
end

#write_manifest(container) ⇒ Object



119
120
121
122
123
124
# File 'lib/timewizard/versioner/android.rb', line 119

def write_manifest(container)
  if @manifest.nil?
    find_manifest
  end
  File.open(@manifest, 'w') { |file| file.write(container) }
end