chairs 0.6

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ swap_docs/
6
+
7
+ chairs/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in chairs.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Art.sy
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
data/bin/chairs ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
4
+ $LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
5
+
6
+ require File.dirname(__FILE__) + '/../lib/musician.rb'
7
+
8
+ Chairs::Musician.new ARGV
data/chairs.gemspec ADDED
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "chairs/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "chairs"
7
+ s.version = Chairs::VERSION
8
+ s.authors = ["orta"]
9
+ s.email = ["orta.therox@gmail.com"]
10
+ s.homepage = "http://github.com/orta/muscialchairs"
11
+ s.summary = %q{A gem for swapping in/out document folders in iOS Sims}
12
+ s.description = %q{Switch the documents directory for the iOS app you're currently working on using named tags. }
13
+
14
+ s.rubyforge_project = "chairs"
15
+
16
+ s.add_dependency 'pow'
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+ end
@@ -0,0 +1,3 @@
1
+ module Chairs
2
+ VERSION = "0.6"
3
+ end
data/lib/musician.rb ADDED
@@ -0,0 +1,170 @@
1
+ require "rubygems"
2
+ require "pow"
3
+
4
+ require "chairs/version"
5
+
6
+ module Chairs
7
+
8
+ class Musician
9
+
10
+ def initialize(args)
11
+ # find a command
12
+ @params = args
13
+ command = @params[0].to_sym rescue :help
14
+ commands.include?(command) ? send(command.to_sym) : help
15
+ end
16
+
17
+ def help
18
+ puts ""
19
+ puts "Musical Chairs - for swapping in/out document folders in iOS Sims."
20
+ puts ""
21
+ puts " pull [name] get the docs file from most recent app and call it name."
22
+ puts " push [name] move the named docs to the most recent app doc folder."
23
+ puts " list list all the current docs in working directory."
24
+ puts ""
25
+ puts " ./"
26
+ end
27
+
28
+ def pull
29
+ unless @params[1]
30
+ puts "Chairs needs a name for the target."
31
+ return
32
+ end
33
+
34
+ setup
35
+
36
+ puts "Switching files from #{@app_folder}/Documents to"
37
+ puts "chairs/#{@target_folder} for #{@app_name}."
38
+
39
+ Pow("chairs/#{@target_folder}").create do
40
+ Pow("#{@app_folder}/Documents").copy_to(Pow())
41
+ end
42
+
43
+ puts "Done!"
44
+ end
45
+
46
+ def push
47
+ unless @params[1]
48
+ puts "Chairs needs a name for the target."
49
+ return
50
+ end
51
+
52
+ setup
53
+
54
+ unless Pow("chairs/#{@target_folder}").exists?
55
+ puts "You don't have a folder for #{@target_folder}."
56
+ list
57
+ return
58
+ end
59
+
60
+
61
+ puts "Moving files from chairs/#{@target_folder} to"
62
+ puts "#{@app_folder}/Documents for #{@app_name}."
63
+
64
+ Pow("chairs/#{@target_folder}/Documents/").copy_to(Pow("#{@app_folder}/"))
65
+
66
+ puts "Done!"
67
+ end
68
+
69
+ def list
70
+ unless Pow("chairs/").exists?
71
+ puts "You haven't used chairs yet."
72
+ return
73
+ end
74
+
75
+ folders = []
76
+ @target_folder = @params[1]
77
+ Pow("chairs/").each do |doc|
78
+ filename = File.basename(doc)
79
+ folders << filename if doc.directory?
80
+ end
81
+
82
+ # turn it into a sentence
83
+ if folders.length == 1
84
+ folders = "just " + folders[0]
85
+ else
86
+ last = folders.last
87
+ folders = "have " + folders[0..-2].join(", ") + " and #{last}."
88
+ end
89
+ puts "Currently you #{ folders }."
90
+ end
91
+
92
+ protected
93
+
94
+ def setup
95
+ check_for_gitignore
96
+
97
+ @target_folder = @params[1]
98
+ @app_folder = get_app_folder()
99
+ @app_name = get_app_name()
100
+
101
+ end
102
+
103
+ def check_for_gitignore
104
+ gitignore = Pow(".gitignore")
105
+
106
+ # if the folder already exists, don't ask twice
107
+ # but surely everyone'll add it to the gitignore on first pull
108
+ if gitignore.exists? && ( Pow("chairs/").exists? == false )
109
+ gitignore_line = "\nchairs/\n"
110
+ file = File.open(gitignore, "a")
111
+ reader = File.read(gitignore)
112
+
113
+ unless reader.include?(gitignore_line)
114
+ puts "You don't have chairs/ in your .gitignore would you like chairs to add it? [Yn]"
115
+ confirm = STDIN.gets.chomp
116
+ file << gitignore_line if confirm && confirm.downcase == "y"
117
+ end
118
+ end
119
+ end
120
+
121
+ # get the most recently used simulator
122
+ def get_app_folder
123
+ app_folder = nil
124
+
125
+ # look through all the installed sims
126
+ sims = Pow( Pow("~/Library/Application Support/iPhone Simulator") )
127
+ sims.each do |simulator_folder|
128
+ next if simulator_folder.class != Pow::Directory
129
+
130
+ apps = Pow( "#{simulator_folder}/Applications/" )
131
+ next unless apps.exists?
132
+
133
+ # look through all the hash folders for apps
134
+ apps.each do |maybe_app_folder|
135
+ next unless maybe_app_folder.directory?
136
+
137
+ # first run
138
+ app_folder = maybe_app_folder if !app_folder
139
+
140
+ # check that we've found the most recently changed
141
+ if app_folder.modified_at < maybe_app_folder.modified_at
142
+ app_folder = maybe_app_folder
143
+ end
144
+ end
145
+ end
146
+ app_folder
147
+ end
148
+
149
+ def get_app_name
150
+ # grab the app name
151
+ # look in the app's folder for a .app
152
+ app_folder = get_app_folder
153
+ Pow(app_folder).each do |app_folder_files|
154
+ if app_folder_files.directory?
155
+
156
+ # and use the name of that
157
+ filename = File.basename app_folder_files
158
+ if filename.include? ".app"
159
+ return filename
160
+ end
161
+ end
162
+ end
163
+ return ""
164
+ end
165
+
166
+ def commands
167
+ (public_methods - Object.public_methods).sort.map{ |c| c.to_sym}
168
+ end
169
+ end
170
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: chairs
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.6'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - orta
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-23 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: pow
16
+ requirement: &70351506730900 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70351506730900
25
+ description: ! 'Switch the documents directory for the iOS app you''re currently working
26
+ on using named tags. '
27
+ email:
28
+ - orta.therox@gmail.com
29
+ executables:
30
+ - chairs
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - .gitignore
35
+ - Gemfile
36
+ - LICENSE.txt
37
+ - Rakefile
38
+ - bin/chairs
39
+ - chairs.gemspec
40
+ - lib/chairs/version.rb
41
+ - lib/musician.rb
42
+ homepage: http://github.com/orta/muscialchairs
43
+ licenses: []
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirements: []
61
+ rubyforge_project: chairs
62
+ rubygems_version: 1.8.16
63
+ signing_key:
64
+ specification_version: 3
65
+ summary: A gem for swapping in/out document folders in iOS Sims
66
+ test_files: []