israkel 0.1.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 +8 -0
- data/Gemfile.lock +21 -0
- data/README.md +58 -0
- data/Rakefile +31 -0
- data/VERSION +1 -0
- data/israkel.gemspec +52 -0
- data/lib/israkel/tasks.rb +107 -0
- data/lib/israkel.rb +1 -0
- metadata +106 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
git (1.2.5)
|
5
|
+
jeweler (1.8.4)
|
6
|
+
bundler (~> 1.0)
|
7
|
+
git (>= 1.2.5)
|
8
|
+
rake
|
9
|
+
rdoc
|
10
|
+
json (1.7.6)
|
11
|
+
rake (0.9.6)
|
12
|
+
rdoc (3.12)
|
13
|
+
json (~> 1.4)
|
14
|
+
|
15
|
+
PLATFORMS
|
16
|
+
ruby
|
17
|
+
|
18
|
+
DEPENDENCIES
|
19
|
+
jeweler (~> 1.8.4)
|
20
|
+
json (~> 1.7.6)
|
21
|
+
rake (~> 0.9.0)
|
data/README.md
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
# ISRakel
|
2
|
+
|
3
|
+
This gem is a collection of rake tasks for maintaining common tasks
|
4
|
+
for the iPhone Simulator on Mac OS like ...
|
5
|
+
|
6
|
+
* Change preferences of the iPhone Simulator
|
7
|
+
* Change the language of the iPhone Simulator
|
8
|
+
* Reset the iPhone Simulator
|
9
|
+
* Start the iPhone Simulator
|
10
|
+
* Stop the iPhone Simulator
|
11
|
+
|
12
|
+
## Example Usage
|
13
|
+
|
14
|
+
You will need to install the gem:
|
15
|
+
|
16
|
+
gem install israkel
|
17
|
+
|
18
|
+
and then require the gem in your projects rake file
|
19
|
+
|
20
|
+
require 'israkel'
|
21
|
+
|
22
|
+
and finally load the rake tasks
|
23
|
+
|
24
|
+
ISRakel::Tasks.new
|
25
|
+
|
26
|
+
You can also change the default prefix `simulator`:
|
27
|
+
|
28
|
+
ISRakel::Tasks.new do |r|
|
29
|
+
r.name = 'ios'
|
30
|
+
end
|
31
|
+
|
32
|
+
## Edit (global) Preferences
|
33
|
+
|
34
|
+
There are binary plist files that you can edit with your custom rake
|
35
|
+
tasks to change some settings:
|
36
|
+
|
37
|
+
i = ISRakel::Tasks.new
|
38
|
+
desc "Change keyboard preferences"
|
39
|
+
task :set_keyboard_preferences do
|
40
|
+
i.edit_preferences do |p|
|
41
|
+
puts p
|
42
|
+
p.merge!({
|
43
|
+
:KeyboardAutocapitalization => false,
|
44
|
+
:KeyboardAutocorrection => false,
|
45
|
+
:KeyboardCapsLock => false,
|
46
|
+
:KeyboardCheckSpelling => false,
|
47
|
+
:KeyboardPeriodShortcut => false,
|
48
|
+
})
|
49
|
+
puts p
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
There's a second method called `edit_global_preferences` which works
|
54
|
+
the same, just edits a different file.
|
55
|
+
|
56
|
+
## Feedback
|
57
|
+
|
58
|
+
Please raise issues if you find problems or have a feature request.
|
data/Rakefile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
$:.unshift "#{File.dirname(__FILE__)}/lib"
|
2
|
+
require 'jeweler'
|
3
|
+
require 'israkel'
|
4
|
+
|
5
|
+
Jeweler::Tasks.new do |gem|
|
6
|
+
gem.name = 'israkel'
|
7
|
+
gem.homepage = 'http://github.com/plu/israkel'
|
8
|
+
gem.license = 'MIT'
|
9
|
+
gem.summary = %Q{Collection of common rake tasks for the iPhone Simulator.}
|
10
|
+
gem.description = %Q{Collection of common rake tasks for the iPhone Simulator like start/stop and some more.}
|
11
|
+
gem.email = 'plu@pqpq.de'
|
12
|
+
gem.authors = ['Johannes Plunien']
|
13
|
+
end
|
14
|
+
Jeweler::RubygemsDotOrgTasks.new
|
15
|
+
|
16
|
+
i = ISRakel::Tasks.new
|
17
|
+
desc "Change keyboard preferences"
|
18
|
+
task :set_keyboard_preferences do
|
19
|
+
i.edit_preferences do |p|
|
20
|
+
puts p
|
21
|
+
p.merge!({
|
22
|
+
:KeyboardAutocapitalization => false,
|
23
|
+
:KeyboardAutocorrection => false,
|
24
|
+
:KeyboardCapsLock => false,
|
25
|
+
:KeyboardCheckSpelling => false,
|
26
|
+
:KeyboardPeriodShortcut => false,
|
27
|
+
})
|
28
|
+
puts p
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/israkel.gemspec
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "israkel"
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Johannes Plunien"]
|
12
|
+
s.date = "2013-01-11"
|
13
|
+
s.description = "Collection of common rake tasks for the iPhone Simulator like start/stop and some more."
|
14
|
+
s.email = "plu@pqpq.de"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.md"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
"Gemfile",
|
20
|
+
"Gemfile.lock",
|
21
|
+
"README.md",
|
22
|
+
"Rakefile",
|
23
|
+
"VERSION",
|
24
|
+
"israkel.gemspec",
|
25
|
+
"lib/israkel.rb",
|
26
|
+
"lib/israkel/tasks.rb"
|
27
|
+
]
|
28
|
+
s.homepage = "http://github.com/plu/israkel"
|
29
|
+
s.licenses = ["MIT"]
|
30
|
+
s.require_paths = ["lib"]
|
31
|
+
s.rubygems_version = "1.8.24"
|
32
|
+
s.summary = "Collection of common rake tasks for the iPhone Simulator."
|
33
|
+
|
34
|
+
if s.respond_to? :specification_version then
|
35
|
+
s.specification_version = 3
|
36
|
+
|
37
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
38
|
+
s.add_runtime_dependency(%q<json>, ["~> 1.7.6"])
|
39
|
+
s.add_runtime_dependency(%q<rake>, ["~> 0.9.0"])
|
40
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
41
|
+
else
|
42
|
+
s.add_dependency(%q<json>, ["~> 1.7.6"])
|
43
|
+
s.add_dependency(%q<rake>, ["~> 0.9.0"])
|
44
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
45
|
+
end
|
46
|
+
else
|
47
|
+
s.add_dependency(%q<json>, ["~> 1.7.6"])
|
48
|
+
s.add_dependency(%q<rake>, ["~> 0.9.0"])
|
49
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'json'
|
3
|
+
require 'rake'
|
4
|
+
require 'rake/tasklib'
|
5
|
+
|
6
|
+
module ISRakel
|
7
|
+
class Tasks < ::Rake::TaskLib
|
8
|
+
include ::Rake::DSL if defined?(::Rake::DSL)
|
9
|
+
|
10
|
+
attr_accessor :name, :sdk_version
|
11
|
+
|
12
|
+
def initialize(name = :simulator)
|
13
|
+
@name = name
|
14
|
+
@sdk_version = ENV['IOS_SDK_VERSION'] || '6.0'
|
15
|
+
|
16
|
+
yield self if block_given?
|
17
|
+
|
18
|
+
# Make sure all external commands are in the PATH.
|
19
|
+
xcode_path
|
20
|
+
|
21
|
+
define_reset_task
|
22
|
+
define_set_language_task
|
23
|
+
define_start_task
|
24
|
+
define_stop_task
|
25
|
+
end
|
26
|
+
|
27
|
+
def edit_global_preferences(&block)
|
28
|
+
edit_file( File.join(simulator_preferences_path, '.GlobalPreferences.plist'), &block )
|
29
|
+
end
|
30
|
+
|
31
|
+
def edit_preferences(&block)
|
32
|
+
edit_file( File.join(simulator_preferences_path, 'com.apple.Preferences.plist'), &block )
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def edit_file(file)
|
38
|
+
content = plist_to_hash(file)
|
39
|
+
yield content
|
40
|
+
hash_to_plist(content, file)
|
41
|
+
end
|
42
|
+
|
43
|
+
def define_reset_task
|
44
|
+
desc "Reset content and settings of the iPhone Simulator"
|
45
|
+
task "#{name}:reset" do
|
46
|
+
rm_rf simulator_support_path
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def define_set_language_task
|
51
|
+
desc "Set the system language (via IOS_LANG environment variable)"
|
52
|
+
task "#{name}:set_language" do
|
53
|
+
language = ENV['IOS_LANG']
|
54
|
+
if language.nil?
|
55
|
+
fail "You must set the IOS_LANG environment variable"
|
56
|
+
end
|
57
|
+
edit_global_preferences do |p|
|
58
|
+
unless p['AppleLanguages'].include?(language)
|
59
|
+
fail "#{language} is not a valid language"
|
60
|
+
end
|
61
|
+
p['AppleLanguages'].unshift(language).uniq!
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def define_start_task
|
67
|
+
desc "Start the iPhone Simulator"
|
68
|
+
task "#{name}:start" do
|
69
|
+
sh 'open', '-g', simulator_path
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def define_stop_task
|
74
|
+
desc "Stop the iPhone Simulator"
|
75
|
+
task "#{name}:stop" do
|
76
|
+
sh 'killall', '-m', '-KILL', 'iPhone Simulator' do |ok, res|
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def hash_to_plist(hash, path)
|
82
|
+
cmd = IO.popen(['plutil', '-convert', 'binary1', '-o', path, '-'], 'w')
|
83
|
+
cmd.puts hash.to_json
|
84
|
+
end
|
85
|
+
|
86
|
+
def plist_to_hash(path)
|
87
|
+
JSON.parse( IO.popen(['plutil', '-convert', 'json', '-o', '-', path]) {|f| f.read} )
|
88
|
+
end
|
89
|
+
|
90
|
+
def simulator_path
|
91
|
+
@simulator_path ||= File.join(xcode_path, 'Platforms', 'iPhoneSimulator.platform', 'Developer', 'Applications', 'iPhone Simulator.app')
|
92
|
+
end
|
93
|
+
|
94
|
+
def simulator_preferences_path
|
95
|
+
File.join(simulator_support_path, 'Library', 'Preferences')
|
96
|
+
end
|
97
|
+
|
98
|
+
def simulator_support_path
|
99
|
+
@simulator_support_path ||= File.join(ENV['HOME'], 'Library', 'Application Support', 'iPhone Simulator', sdk_version)
|
100
|
+
end
|
101
|
+
|
102
|
+
def xcode_path
|
103
|
+
@xcode_path ||= `xcode-select --print-path`.chomp
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
end
|
data/lib/israkel.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'israkel/tasks'
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: israkel
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Johannes Plunien
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-01-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: json
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.7.6
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.7.6
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.9.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.9.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: jeweler
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.8.4
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.8.4
|
62
|
+
description: Collection of common rake tasks for the iPhone Simulator like start/stop
|
63
|
+
and some more.
|
64
|
+
email: plu@pqpq.de
|
65
|
+
executables: []
|
66
|
+
extensions: []
|
67
|
+
extra_rdoc_files:
|
68
|
+
- README.md
|
69
|
+
files:
|
70
|
+
- Gemfile
|
71
|
+
- Gemfile.lock
|
72
|
+
- README.md
|
73
|
+
- Rakefile
|
74
|
+
- VERSION
|
75
|
+
- israkel.gemspec
|
76
|
+
- lib/israkel.rb
|
77
|
+
- lib/israkel/tasks.rb
|
78
|
+
homepage: http://github.com/plu/israkel
|
79
|
+
licenses:
|
80
|
+
- MIT
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
segments:
|
92
|
+
- 0
|
93
|
+
hash: 1776053137443745317
|
94
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
requirements: []
|
101
|
+
rubyforge_project:
|
102
|
+
rubygems_version: 1.8.24
|
103
|
+
signing_key:
|
104
|
+
specification_version: 3
|
105
|
+
summary: Collection of common rake tasks for the iPhone Simulator.
|
106
|
+
test_files: []
|