-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.rb
More file actions
107 lines (90 loc) · 2.7 KB
/
script.rb
File metadata and controls
107 lines (90 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
require 'highline'
require 'erb'
require 'yaml'
load 'lib/android'
# i for interface
i = HighLine.new
def get_binding
binding
end
namespace :android do
task :ask_stuff do
output_folder = fetch(:path, nil)
project_name = fetch(:name, nil)
sanitized_name = fetch(:sanitized, nil)
package = fetch(:package, nil)
loop do
if (output_folder or "").strip.empty?
output_folder = i.ask('Relative path to output? ')
else
break
end
end
loop do
if (project_name or "").strip.empty?
project_name = i.ask('Project name? (no trailing -android) ')
else
break
end
end
if (sanitized_name or "").strip.empty?
sanitized_name = project_name.gsub(/[^A-Za-z0-9]/, '')
end
if (package or "").strip.empty?
package = "mobi.lab.#{sanitized_name.downcase}"
end
ok = false
while not ok
puts "You have chosen the name #{project_name}"
puts "Current names are:\n"
puts "package: #{package}"
puts "sanitized: #{sanitized_name}"
puts "name: #{project_name}"
i.choose do |menu|
menu.prompt = 'This looks ok to you? '
menu.choice(:yes) do
puts 'Cool.'
ok = true
end
menu.choice(:no) do
package = i.ask('Package: ') { |q| q.default = package }
sanitized_name = i.ask('Sanitized name: ') { |q| q.default = sanitized_name }
project_name = i.ask('Project name: ') { |q| q.default = project_name }
end
end
end
set :output_folder, output_folder
set :project_name, project_name
set :sanitized_name, sanitized_name
set :package, package
end
task :project do
set :template, 'project'
o = [('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten
# generate key pass for release
set :keypass_release, (0...50).map { o[rand(o.length)] }.join
# generate key pass for debug
set :keypass_debug, (0...50).map { o[rand(o.length)] }.join
# generate store pass for release
set :storepass_release, (0...50).map { o[rand(o.length)] }.join
# generate store pass for debug
set :storepass_debug, (0...50).map { o[rand(o.length)] }.join
proj = Android.new self
proj.process
end
task :library_project do
set :template, 'projectlib'
proj = Android.new self
proj.process_library
end
desc 'Create a new shiny android project'
task :create do
end
desc 'Create a new shiny android library project'
task :create_library do
end
end
before 'android:project', 'android:ask_stuff'
before 'android:create', 'android:project'
before 'android:library_project', 'android:ask_stuff'
before 'android:create_library', 'android:library_project'