windirs 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 183259201b47253e89e37ed652ac9c93f2ea61b6
4
- data.tar.gz: 16f92429bd66d44a9502cef35714273f08ae7216
3
+ metadata.gz: 2875a828eee836d39ddd080820de78e21a32cd95
4
+ data.tar.gz: 1f28a9a0e7ce8c4082be19e580cb8763dde8bbb4
5
5
  SHA512:
6
- metadata.gz: 947cc7d0e965c84d86bccde760dc2ec2b989cbafcb455da0eb4e8b5597d2c82d6670784f8df4df74f2483dff383d0a311c65bcfdc14875eef5cdc19a33285438
7
- data.tar.gz: 613f487282d70f420fcd8f2fe9ab36c6cd027cd7f7caae96424303a80d7e711e93796945453da0441cdbbce56c40a94fd057ffee2a0e1fe2cc812221a4c9b684
6
+ metadata.gz: 2f41e4abd2743320c1a43d63a707b96daa6be618b9a5aa534b633e0024ad56a466e707a7a89ea4ae20210523ab42191cf987ad026153890c6c9134711add1a5b
7
+ data.tar.gz: 2c2a39ef5cfa4e387c76014e9586723f81a6bc899317404456797c64484fbd9078832ef38f82d7386ca59f56e2b86cb7cfc61b8039b6bda721125c9c9d61431e
@@ -114,11 +114,58 @@ module Windirs
114
114
  fpath('\\'){ |drive| "#{@drive.upcase}:"}
115
115
  end
116
116
 
117
+ ##
118
+ # Return a new Windirs::Path with any Windows network mapped drives
119
+ # dereferenced to their UNC.
120
+ # Returns +self+ if not on Windows, or
121
+ # +self+ is not on a network mapped drive.
122
+
123
+ def win_deref
124
+ return self unless ENV['OS'] == 'Windows_NT'
125
+
126
+ # FIXME try to get path to net if on Cygwin and can't see net
127
+ net_use = `net use #{@drive}:`
128
+ return self unless $?.exitstatus == 0
129
+ remote_line = net_use.split("\r\n").select{|l| l =~ /^Remote name\s*/}
130
+ drive = @drive
131
+ drive = remote_line[0].sub(/^Remote name\s*/, '')
132
+ Path.new "#{drive}#{@dirs}"
133
+ end
134
+
135
+ # #FIXME will need to stub or mock this to test properly?
136
+ # def cyg_deref
137
+ #
138
+ ## C:/cygwin/bin on /usr/bin type ntfs (binary,auto)
139
+ #
140
+ # return self if ENV['OS'] != 'Windows_NT'
141
+ #
142
+ # as_nix = self.nix
143
+ #
144
+ # #FIXME use mount similarly, with similar caveats to net use
145
+ # mounts = `mount`.split("\n")
146
+ # mh = Hash.new
147
+ # mounts.map do |l|
148
+ # l =~ /^(?<device>.*)\s+on\s+(?<mountpoint>.*)\s+type\s+.*$/
149
+ # m = Regexp.last_match
150
+ # mh[m[:device]] = m[:mountpoint]
151
+ # end
152
+ #
153
+ #
154
+ # sorted = mh.sort_by{|k,v| v.length}
155
+ #
156
+ # sorted.each do |el|
157
+ # #if el[1] matches as_nix, replace that with el[0]
158
+ # end
159
+ #
160
+ #
161
+ # end
162
+ #
163
+
117
164
  private
118
165
 
119
- def fpath del='/', prefix=''
166
+ def fpath delim='/', prefix=''
120
167
  drive = @drive ? "#{prefix}#{yield(@drive)}" : nil
121
- "#{drive}#{@dirs}".gsub(/[\/\\\\]/, del)
168
+ "#{drive}#{@dirs}".gsub(/[\/\\\\]/, delim)
122
169
  end
123
170
 
124
171
  end
@@ -29,6 +29,7 @@ describe Windirs do
29
29
  @upaths = Hash.new
30
30
  @uncs.map{|k, v| @upaths[k] = Windirs::Path.new(v)}
31
31
 
32
+ @cygwin_home = Windirs::Path.new('/home')
32
33
  end
33
34
 
34
35
  describe Windirs::Path do
@@ -61,6 +62,16 @@ describe Windirs do
61
62
  end
62
63
  end
63
64
 
65
+ it 'dereferences cygwin mounts' do
66
+ pending
67
+ @cygwin_home.cyg_deref.windows.should eq 'C:/cygwin/home'
68
+ end
69
+
70
+ # FIXME This is not much of a test...
71
+ it 'dereferences windows network mounts' do
72
+ @dpaths[:windows].win_deref.windows.should eq @drives[:windows]
73
+ end
74
+
64
75
  end
65
76
 
66
77
  end
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'windirs'
3
- s.version = '0.0.1'
4
- s.date = '2014-03-21'
3
+ s.version = '0.0.2'
4
+ s.date = '2014-03-24'
5
5
  s.summary = "translate between Cygwin, Windows, and Unix file paths"
6
6
  s.description = "Handy ways for dealing with directory paths when you are not
7
7
  sure what platform your code will be running on, but you are
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: windirs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noah Birnel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-21 00:00:00.000000000 Z
11
+ date: 2014-03-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |-
14
14
  Handy ways for dealing with directory paths when you are not