chairs 0.94 → 1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/chairs.gemspec +0 -1
- data/lib/musician.rb +16 -4
- data/lib/pow.rb +9 -0
- data/lib/pow/License.txt +20 -0
- data/lib/pow/directory.rb +108 -0
- data/lib/pow/file.rb +63 -0
- data/lib/pow/pow.rb +214 -0
- metadata +10 -20
data/chairs.gemspec
CHANGED
@@ -13,7 +13,6 @@ Gem::Specification.new do |s|
|
|
13
13
|
|
14
14
|
s.rubyforge_project = "chairs"
|
15
15
|
|
16
|
-
s.add_dependency 'pow'
|
17
16
|
s.files = `git ls-files`.split("\n")
|
18
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
data/lib/musician.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require "rubygems"
|
2
|
-
|
2
|
+
require_relative "pow"
|
3
3
|
|
4
4
|
require "chairs/version"
|
5
5
|
|
@@ -19,7 +19,7 @@ module Chairs
|
|
19
19
|
|
20
20
|
def help
|
21
21
|
puts ""
|
22
|
-
puts "Musical Chairs - for swapping in/out app
|
22
|
+
puts "Musical Chairs - for swapping in/out app data in the iOS Simulator."
|
23
23
|
puts ""
|
24
24
|
puts " pull [name] get documents and support files from latest built app and store as name."
|
25
25
|
puts " push [name] overwrite documents and support files from the latest build in Xcode."
|
@@ -130,6 +130,19 @@ module Chairs
|
|
130
130
|
list
|
131
131
|
end
|
132
132
|
end
|
133
|
+
|
134
|
+
def clean
|
135
|
+
setup
|
136
|
+
|
137
|
+
puts "Deleting App directory"
|
138
|
+
target_path = Pow(@app_folder).to_s.gsub(" ", "\\ ")
|
139
|
+
|
140
|
+
command = "rm -r #{target_path}"
|
141
|
+
puts command
|
142
|
+
system command
|
143
|
+
|
144
|
+
puts "Cleaned"
|
145
|
+
end
|
133
146
|
|
134
147
|
protected
|
135
148
|
|
@@ -139,7 +152,6 @@ module Chairs
|
|
139
152
|
@target_folder = @params[1]
|
140
153
|
@app_folder = get_app_folder()
|
141
154
|
@app_name = get_app_name()
|
142
|
-
|
143
155
|
end
|
144
156
|
|
145
157
|
def check_for_gitignore
|
@@ -217,6 +229,7 @@ module Chairs
|
|
217
229
|
end
|
218
230
|
end
|
219
231
|
end
|
232
|
+
|
220
233
|
return ""
|
221
234
|
end
|
222
235
|
|
@@ -229,7 +242,6 @@ module Chairs
|
|
229
242
|
system copy
|
230
243
|
end
|
231
244
|
|
232
|
-
|
233
245
|
def commands
|
234
246
|
(public_methods - Object.public_methods).sort.map{ |c| c.to_sym}
|
235
247
|
end
|
data/lib/pow.rb
ADDED
data/lib/pow/License.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2007 Corey Johnson
|
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 NONINFRINGEMENT.
|
17
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
18
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
19
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
20
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,108 @@
|
|
1
|
+
module Pow
|
2
|
+
|
3
|
+
# Pow object representing a directory. Inherits from Pow::Base
|
4
|
+
class Directory < Base
|
5
|
+
include Enumerable
|
6
|
+
|
7
|
+
def initialize(path, mode=nil, &block) #:nodoc:
|
8
|
+
super
|
9
|
+
open(&block) if block_given?
|
10
|
+
end
|
11
|
+
|
12
|
+
def open(mode=nil, &block) #:nodoc:
|
13
|
+
raise PowError, "'#{path}' does not exist!" unless exists?
|
14
|
+
|
15
|
+
begin
|
16
|
+
former_dir = Dir.pwd
|
17
|
+
Dir.chdir self.to_s
|
18
|
+
block.call self
|
19
|
+
ensure
|
20
|
+
Dir.chdir(former_dir)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def create(&block) #:nodoc:
|
25
|
+
create_directory(&block)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Deletes an empty directory
|
29
|
+
def delete
|
30
|
+
raise PowError, "Can not delete '#{path}'. It must be empty before you delete it!" unless children.empty?
|
31
|
+
Dir.rmdir path
|
32
|
+
end
|
33
|
+
|
34
|
+
# Recurslivly deletes the directory, DANGER! DANGER!
|
35
|
+
def delete!
|
36
|
+
FileUtils.rm_r path
|
37
|
+
end
|
38
|
+
|
39
|
+
def copy_to(dest)
|
40
|
+
FileUtils.cp_r(path, dest.to_s)
|
41
|
+
end
|
42
|
+
alias_method :cp, :copy_to
|
43
|
+
|
44
|
+
def copy_to!(dest)
|
45
|
+
Pow(dest).parent.create_directory
|
46
|
+
FileUtils.cp_r(path, dest.to_s)
|
47
|
+
end
|
48
|
+
alias_method :cp!, :copy_to!
|
49
|
+
|
50
|
+
def move_to(dest)
|
51
|
+
if FileUtils.mv(path.to_s, dest.to_s)
|
52
|
+
self.path = dest
|
53
|
+
end
|
54
|
+
end
|
55
|
+
alias_method :mv, :move_to
|
56
|
+
|
57
|
+
def empty?
|
58
|
+
children.empty?
|
59
|
+
end
|
60
|
+
|
61
|
+
# ===============
|
62
|
+
# = My Children =
|
63
|
+
# ===============
|
64
|
+
|
65
|
+
# A wrapper for Dir.glob, returns files & directories found by expanding pattern.
|
66
|
+
def glob(pattern, *flags)
|
67
|
+
Dir[::File.join(to_s, pattern), *flags].collect {|path| Pow(path)}
|
68
|
+
end
|
69
|
+
|
70
|
+
# Returns all the files in the directory
|
71
|
+
def files
|
72
|
+
children(:no_dirs => true)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Returns all the directories in the directory
|
76
|
+
def directories
|
77
|
+
children(:no_files => true)
|
78
|
+
end
|
79
|
+
alias_method :dirs, :directories
|
80
|
+
|
81
|
+
# Returns all files and directories in the directory.
|
82
|
+
#
|
83
|
+
# ==== Parameters
|
84
|
+
# options<Hash>:: [:no_dirs, :no_files] (defaults to :no_dirs => true, :no_files => true)
|
85
|
+
def children(options={})
|
86
|
+
options = {:no_dirs => false, :no_files => false}.merge(options)
|
87
|
+
|
88
|
+
children = []
|
89
|
+
Dir.foreach(path) do |child|
|
90
|
+
child_path = ::File.join(path, child)
|
91
|
+
|
92
|
+
next if child == '.'
|
93
|
+
next if child == '..'
|
94
|
+
next if (::File.file?(child_path) and options[:no_files])
|
95
|
+
next if (::File.directory?(child_path) and options[:no_dirs])
|
96
|
+
children << Pow(child_path)
|
97
|
+
end
|
98
|
+
|
99
|
+
children
|
100
|
+
end
|
101
|
+
|
102
|
+
# Yields the child paths to an each block.
|
103
|
+
def each(&block)
|
104
|
+
raise PowError, "'#{path.realpath}' does not exist!" unless exists?
|
105
|
+
children.each(&block)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
data/lib/pow/file.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
module Pow
|
2
|
+
|
3
|
+
# Pow object representing a file. Inherits from Pow::Base
|
4
|
+
class File < Base
|
5
|
+
def initialize(path, mode="r+", &block) #:nodoc:
|
6
|
+
super
|
7
|
+
open(mode, &block) if block_given?
|
8
|
+
end
|
9
|
+
|
10
|
+
def open(mode="r", &block) #:nodoc:
|
11
|
+
Kernel.open(path.to_s, mode, &block)
|
12
|
+
end
|
13
|
+
|
14
|
+
def create(&block) #:nodoc:
|
15
|
+
create_file(&block)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Opens the file, optionally seeks to the given offset, then returns length bytes (defaulting to the rest of the file). read ensures the file is closed before returning.
|
19
|
+
# Alias for IO.read
|
20
|
+
def read(length=nil, offset=nil)
|
21
|
+
::File.read(path.to_s, length, offset)
|
22
|
+
end
|
23
|
+
|
24
|
+
def write(string)
|
25
|
+
open("w") {|f| f.write string}
|
26
|
+
end
|
27
|
+
|
28
|
+
def delete
|
29
|
+
::File.delete(path)
|
30
|
+
end
|
31
|
+
|
32
|
+
def empty?
|
33
|
+
::File.size(path) == 0
|
34
|
+
end
|
35
|
+
|
36
|
+
def copy_to(dest)
|
37
|
+
FileUtils.cp(path.to_s, dest.to_s)
|
38
|
+
Pow(dest)
|
39
|
+
end
|
40
|
+
alias_method :cp, :copy_to
|
41
|
+
|
42
|
+
# Will create the directory path if it does not already exist.
|
43
|
+
def copy_to!(dest)
|
44
|
+
Pow(dest).parent.create_directory
|
45
|
+
copy_to(dest)
|
46
|
+
end
|
47
|
+
alias_method :cp!, :copy_to!
|
48
|
+
|
49
|
+
def move_to(dest)
|
50
|
+
if FileUtils.mv(path.to_s, dest.to_s)
|
51
|
+
self.path = dest.path
|
52
|
+
end
|
53
|
+
end
|
54
|
+
alias_method :mv, :move_to
|
55
|
+
|
56
|
+
# Will create the directory path if it does not already exist.
|
57
|
+
def move_to!(dest)
|
58
|
+
Pow(dest).parent.create_directory
|
59
|
+
move_to(dest)
|
60
|
+
end
|
61
|
+
alias_method :mv!, :move_to!
|
62
|
+
end
|
63
|
+
end
|
data/lib/pow/pow.rb
ADDED
@@ -0,0 +1,214 @@
|
|
1
|
+
class PowError < StandardError; end
|
2
|
+
|
3
|
+
# Path based in current working directory
|
4
|
+
def Pow(*args, &block)
|
5
|
+
Pow::Base.open(*args, &block)
|
6
|
+
end
|
7
|
+
|
8
|
+
# Path based in the current file's directory
|
9
|
+
def Pow!(*args, &block)
|
10
|
+
file_path = ::File.dirname(caller[0])
|
11
|
+
Pow(file_path, *args, &block)
|
12
|
+
end
|
13
|
+
|
14
|
+
module Pow
|
15
|
+
class Base
|
16
|
+
attr_accessor :path
|
17
|
+
|
18
|
+
def self.open(*paths, &block) #:nodoc:
|
19
|
+
paths.collect! {|path| path.to_s}
|
20
|
+
path = ::File.join(paths)
|
21
|
+
|
22
|
+
klass = if ::File.directory?(path)
|
23
|
+
Directory
|
24
|
+
elsif ::File.file?(path)
|
25
|
+
File
|
26
|
+
else
|
27
|
+
self
|
28
|
+
end
|
29
|
+
|
30
|
+
klass.new(path, &block)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Returns the path to the current working directory as a Pow::Dir object.
|
34
|
+
def self.working_directory
|
35
|
+
Pow(Dir.getwd)
|
36
|
+
end
|
37
|
+
class <<self; alias_method :cwd, :working_directory; end
|
38
|
+
|
39
|
+
def initialize(path, mode=nil, &block)
|
40
|
+
self.path = ::File.expand_path(path)
|
41
|
+
end
|
42
|
+
|
43
|
+
def open(mode="r", &block)
|
44
|
+
create(mode, &block)
|
45
|
+
end
|
46
|
+
|
47
|
+
def write(string)
|
48
|
+
create_file.write(string)
|
49
|
+
end
|
50
|
+
|
51
|
+
def copy_to(dest)
|
52
|
+
path_must_exist
|
53
|
+
end
|
54
|
+
alias_method :cp, :copy_to
|
55
|
+
|
56
|
+
def copy_to!(dest)
|
57
|
+
path_must_exist
|
58
|
+
end
|
59
|
+
alias_method :cp!, :copy_to!
|
60
|
+
|
61
|
+
def move_to(dest)
|
62
|
+
path_must_exist
|
63
|
+
end
|
64
|
+
alias_method :mv, :move_to
|
65
|
+
|
66
|
+
def move_to!(dest)
|
67
|
+
path_must_exist
|
68
|
+
end
|
69
|
+
alias_method :mv!, :move_to!
|
70
|
+
|
71
|
+
def rename_to(new_name)
|
72
|
+
move_to(parent / new_name)
|
73
|
+
end
|
74
|
+
|
75
|
+
def permissions=(mode)
|
76
|
+
mode = mode.to_s.to_i(8) # convert from octal
|
77
|
+
FileUtils.chmod(mode, path)
|
78
|
+
end
|
79
|
+
|
80
|
+
def permissions
|
81
|
+
("%o" % ::File.stat(path.to_s).mode)[2..-1].to_i # Forget about the first two numbers
|
82
|
+
end
|
83
|
+
|
84
|
+
def size
|
85
|
+
::File.size(path)
|
86
|
+
end
|
87
|
+
|
88
|
+
def accessed_at
|
89
|
+
::File.atime(path)
|
90
|
+
end
|
91
|
+
alias_method :atime, :accessed_at
|
92
|
+
|
93
|
+
def changed_at
|
94
|
+
::File.ctime(path)
|
95
|
+
end
|
96
|
+
alias_method :ctime, :changed_at
|
97
|
+
|
98
|
+
def modified_at
|
99
|
+
::File.mtime(path)
|
100
|
+
end
|
101
|
+
alias_method :mtime, :modified_at
|
102
|
+
|
103
|
+
# String representation of the expanded path
|
104
|
+
def to_s
|
105
|
+
path
|
106
|
+
end
|
107
|
+
alias_method :to_str, :to_s
|
108
|
+
|
109
|
+
# Shortcut to combine paths
|
110
|
+
# tmp = Pow("tmp")
|
111
|
+
# readme_path = tmp["subdir", :README]
|
112
|
+
def [](*paths, &block)
|
113
|
+
Pow(path, *paths, &block)
|
114
|
+
end
|
115
|
+
|
116
|
+
# Shortcut to append info onto a Pow object
|
117
|
+
# tmp = Pow("tmp")
|
118
|
+
# readme_path = tmp/"subdir"/"README"
|
119
|
+
def /(name=nil)
|
120
|
+
self.class.open(path, name)
|
121
|
+
end
|
122
|
+
|
123
|
+
# Compares the path string
|
124
|
+
def ==(other)
|
125
|
+
other.to_s == self.to_s
|
126
|
+
end
|
127
|
+
|
128
|
+
def eql?(other)
|
129
|
+
other.eql? self.to_s
|
130
|
+
end
|
131
|
+
|
132
|
+
# Regex match on the basename for the path
|
133
|
+
# path = Pow("/tmp/a_file.txt")
|
134
|
+
# path =~ /file/ #=> 2
|
135
|
+
# path =~ /tmp/ #=> nil
|
136
|
+
def =~(pattern)
|
137
|
+
name =~ pattern
|
138
|
+
end
|
139
|
+
|
140
|
+
# Sort based on name
|
141
|
+
def <=>(other)
|
142
|
+
name <=> other
|
143
|
+
end
|
144
|
+
|
145
|
+
# Returns the last component of the filename given, can optionally exclude the extension
|
146
|
+
#
|
147
|
+
# ==== Parameters
|
148
|
+
# with_extension<Boolean>
|
149
|
+
def name(with_extension=true)
|
150
|
+
::File.basename path, (with_extension ? "" : ".#{extension}")
|
151
|
+
end
|
152
|
+
|
153
|
+
# Returns the extension (the portion of file name in path after the period).
|
154
|
+
def extension
|
155
|
+
::File.extname(path)[1..-1] # Gets rid of the dot
|
156
|
+
end
|
157
|
+
|
158
|
+
def exists?
|
159
|
+
::File.exist? path
|
160
|
+
end
|
161
|
+
alias_method :exist?, :exists?
|
162
|
+
|
163
|
+
def directory?
|
164
|
+
::File.directory?(path)
|
165
|
+
end
|
166
|
+
alias_method :is_directory?, :directory?
|
167
|
+
|
168
|
+
def file?
|
169
|
+
::File.file?(path)
|
170
|
+
end
|
171
|
+
alias_method :is_file?, :file?
|
172
|
+
|
173
|
+
# Returns the path the is one level up from the current path
|
174
|
+
def parent
|
175
|
+
Pow(::File.dirname(path))
|
176
|
+
end
|
177
|
+
|
178
|
+
def empty?
|
179
|
+
true
|
180
|
+
end
|
181
|
+
|
182
|
+
# Creates a new path. If there is a . in the name, then assume it is a file
|
183
|
+
# Block returns a file object when a file is created
|
184
|
+
def create(mode="a+", &block)
|
185
|
+
name =~ /\./ ? create_file(mode, &block) : create_directory(&block)
|
186
|
+
end
|
187
|
+
|
188
|
+
def create_file(mode="a+", &block)
|
189
|
+
FileUtils.mkdir_p(::File.dirname(self.to_s))
|
190
|
+
file = File.new(self.to_s)
|
191
|
+
file.open(mode, &block) # Create the file
|
192
|
+
|
193
|
+
file
|
194
|
+
end
|
195
|
+
|
196
|
+
def create_directory(&block)
|
197
|
+
FileUtils.mkdir_p(self.to_s)
|
198
|
+
dir = Directory.new(self.to_s)
|
199
|
+
|
200
|
+
dir.open(&block) if block_given?
|
201
|
+
|
202
|
+
dir
|
203
|
+
end
|
204
|
+
|
205
|
+
private
|
206
|
+
def path_must_exist
|
207
|
+
raise PowError, "Path (#{path}) does not exist."
|
208
|
+
end
|
209
|
+
|
210
|
+
def path=(value)
|
211
|
+
@path = ::File::expand_path(value)
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chairs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0
|
4
|
+
version: '1.0'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,24 +9,8 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: pow
|
16
|
-
requirement: !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: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
12
|
+
date: 2013-03-29 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
30
14
|
description: ! 'Switch the documents directory for the iOS app you''re currently working
|
31
15
|
on using named tags. '
|
32
16
|
email:
|
@@ -45,6 +29,11 @@ files:
|
|
45
29
|
- chairs.gemspec
|
46
30
|
- lib/chairs/version.rb
|
47
31
|
- lib/musician.rb
|
32
|
+
- lib/pow.rb
|
33
|
+
- lib/pow/License.txt
|
34
|
+
- lib/pow/directory.rb
|
35
|
+
- lib/pow/file.rb
|
36
|
+
- lib/pow/pow.rb
|
48
37
|
homepage: http://github.com/orta/muscialchairs
|
49
38
|
licenses: []
|
50
39
|
post_install_message:
|
@@ -65,8 +54,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
65
54
|
version: '0'
|
66
55
|
requirements: []
|
67
56
|
rubyforge_project: chairs
|
68
|
-
rubygems_version: 1.8.
|
57
|
+
rubygems_version: 1.8.25
|
69
58
|
signing_key:
|
70
59
|
specification_version: 3
|
71
60
|
summary: A gem for swapping in/out document folders in iOS Sims
|
72
61
|
test_files: []
|
62
|
+
has_rdoc:
|