fled 0.0.1
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/README.md +230 -0
- data/bin/fled +152 -0
- data/lib/dtc/utils/dsldsl.rb +259 -0
- data/lib/dtc/utils/exec.rb +134 -0
- data/lib/dtc/utils/file_visitor.rb +78 -0
- data/lib/dtc/utils/interactive_edit.rb +81 -0
- data/lib/dtc/utils/mini_select.rb +177 -0
- data/lib/dtc/utils.rb +9 -0
- data/lib/fled/file_listing.rb +260 -0
- data/lib/fled.rb +38 -0
- data/tests/helper.rb +90 -0
- data/tests/readme.rb +256 -0
- data/tests/test_operations.rb +229 -0
- metadata +59 -0
@@ -0,0 +1,229 @@
|
|
1
|
+
if Kernel.respond_to?(:require_relative)
|
2
|
+
require_relative "helper"
|
3
|
+
else
|
4
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
5
|
+
end
|
6
|
+
require 'test/unit'
|
7
|
+
|
8
|
+
class TestSwapOperations < Test::Unit::TestCase
|
9
|
+
def test_swap_renames
|
10
|
+
ops = TestFS.new do
|
11
|
+
truc.a.txt(1)
|
12
|
+
truc.b.txt(2)
|
13
|
+
end.operations_if_edited_as <<-TEST
|
14
|
+
truc.a.txt :2
|
15
|
+
truc.b.txt :1
|
16
|
+
TEST
|
17
|
+
assert_equal [
|
18
|
+
[:mv, "truc.b.txt", "truc.a.txt.tmp"],
|
19
|
+
[:mv, "truc.a.txt", "truc.b.txt"],
|
20
|
+
[:mv, "truc.a.txt.tmp", "truc.a.txt"]
|
21
|
+
], ops
|
22
|
+
end
|
23
|
+
def test_swap_renames_warn_overwrite
|
24
|
+
ops = TestFS.new do
|
25
|
+
truc.a.txt(1)
|
26
|
+
truc.b.txt(2)
|
27
|
+
end.operations_if_edited_as <<-TEST
|
28
|
+
truc.a.txt :2
|
29
|
+
TEST
|
30
|
+
|
31
|
+
assert_equal 2, ops.count
|
32
|
+
assert_equal 4, ops.first.count
|
33
|
+
assert_equal :warn, ops.first[0]
|
34
|
+
assert_equal :would_overwrite, ops.first[1]
|
35
|
+
assert_equal [:mv, "truc.b.txt", "truc.a.txt.tmp"], ops.last
|
36
|
+
end
|
37
|
+
def test_swap_renames_warn_overwrite_fallback
|
38
|
+
ops = TestFS.new do
|
39
|
+
truc.a.txt(1)
|
40
|
+
truc.b.txt(2)
|
41
|
+
truc.a.txt.tmp(3)
|
42
|
+
end.operations_if_edited_as <<-TEST
|
43
|
+
truc.a.txt :2
|
44
|
+
TEST
|
45
|
+
|
46
|
+
assert_equal 2, ops.count
|
47
|
+
assert_equal 4, ops.first.count
|
48
|
+
assert_equal :warn, ops.first[0]
|
49
|
+
assert_equal :would_overwrite, ops.first[1]
|
50
|
+
assert_equal [:mv, "truc.b.txt", "truc.a.txt.tmp.tmp"], ops.last
|
51
|
+
end
|
52
|
+
def test_swap_parents
|
53
|
+
ops = TestFS.new do
|
54
|
+
folder(0) {
|
55
|
+
subfolder(1) {
|
56
|
+
file(2)
|
57
|
+
}
|
58
|
+
}
|
59
|
+
end.operations_if_edited_as <<-TEST
|
60
|
+
subfolder :1
|
61
|
+
folder :0
|
62
|
+
file :2
|
63
|
+
TEST
|
64
|
+
assert_equal [
|
65
|
+
[:mv, "folder/subfolder", "subfolder"],
|
66
|
+
[:mv, "folder", "subfolder/folder"],
|
67
|
+
[:mv, "subfolder/file", "subfolder/folder/file"]
|
68
|
+
], ops
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class TestOperationErrors < Test::Unit::TestCase
|
73
|
+
def test_missing_uid_should_fail
|
74
|
+
ops = TestFS.new { folder(0) }.operations_if_edited_as <<-TEST
|
75
|
+
folder :5
|
76
|
+
something_else
|
77
|
+
TEST
|
78
|
+
assert_equal 1, ops.count
|
79
|
+
assert_equal 3, ops.first.count
|
80
|
+
assert_equal :fail, ops.first[0]
|
81
|
+
assert_equal :no_such_uid, ops.first[1]
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
class TestOperationExample < Test::Unit::TestCase
|
86
|
+
def test_nanana
|
87
|
+
|
88
|
+
ops = TestFS.new {
|
89
|
+
folder(0) {
|
90
|
+
file_one(1)
|
91
|
+
folder_two(2) {
|
92
|
+
file_three(3)
|
93
|
+
}
|
94
|
+
} }.operations_if_edited_as <<-TEST
|
95
|
+
folder_new/ :0
|
96
|
+
new_folder/
|
97
|
+
first :1
|
98
|
+
second :3
|
99
|
+
:2
|
100
|
+
TEST
|
101
|
+
assert_equal [
|
102
|
+
[:mv, "folder", "folder_new"],
|
103
|
+
[:mkdir, "folder_new/new_folder"],
|
104
|
+
[:mv, "folder_new/file_one", "folder_new/new_folder/first"],
|
105
|
+
[:mv, "folder_new/folder_two/file_three", "folder_new/new_folder/second"],
|
106
|
+
[:rmdir, "folder_new/folder_two"],
|
107
|
+
], ops
|
108
|
+
end
|
109
|
+
end
|
110
|
+
class TestOperations < Test::Unit::TestCase
|
111
|
+
def setup
|
112
|
+
@fs = TestFS.new do
|
113
|
+
folder(0) {
|
114
|
+
sous(1) {
|
115
|
+
truc(2)
|
116
|
+
}
|
117
|
+
truc.txt(3)
|
118
|
+
}
|
119
|
+
end
|
120
|
+
end
|
121
|
+
def test_rename
|
122
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
123
|
+
folder :0
|
124
|
+
sous :1
|
125
|
+
truche :2
|
126
|
+
truc.txt :3
|
127
|
+
TEST
|
128
|
+
assert_equal [[:mv, 'folder/sous/truc', 'folder/sous/truche']], ops
|
129
|
+
end
|
130
|
+
def test_rename_impact_on_mkdir
|
131
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
132
|
+
folder_renamed :0
|
133
|
+
machin
|
134
|
+
TEST
|
135
|
+
assert_equal [[:mv, "folder", "folder_renamed"], [:mkdir, "folder_renamed/machin"]], ops
|
136
|
+
|
137
|
+
end
|
138
|
+
def test_rename_impact_on_delete
|
139
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
140
|
+
folder :0
|
141
|
+
soupe :1
|
142
|
+
:2
|
143
|
+
truc.txt :3
|
144
|
+
TEST
|
145
|
+
assert_equal [[:mv, 'folder/sous', 'folder/soupe'], [:rm, 'folder/soupe/truc']], ops
|
146
|
+
end
|
147
|
+
def test_rename_impact_on_reparent
|
148
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
149
|
+
folder :0
|
150
|
+
soupe :1
|
151
|
+
truc :2
|
152
|
+
truc.txt :3
|
153
|
+
TEST
|
154
|
+
assert_equal [[:mv, 'folder/sous', 'folder/soupe'], [:mv, 'folder/soupe/truc', 'folder/truc']], ops
|
155
|
+
end
|
156
|
+
def test_reparent
|
157
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
158
|
+
folder :0
|
159
|
+
truc :2
|
160
|
+
TEST
|
161
|
+
assert_equal [[:mv, 'folder/sous/truc', 'folder/truc']], ops
|
162
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
163
|
+
folder :0
|
164
|
+
truc :2
|
165
|
+
TEST
|
166
|
+
assert_equal [[:mv, 'folder/sous/truc', 'truc']], ops
|
167
|
+
end
|
168
|
+
def test_reparent_impact_on_mkdir
|
169
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
170
|
+
folder :0
|
171
|
+
sous :1
|
172
|
+
machin
|
173
|
+
TEST
|
174
|
+
assert_equal [[:mv, "folder/sous", "sous"], [:mkdir, "sous/machin"]], ops
|
175
|
+
end
|
176
|
+
def test_reparent_impact_on_delete
|
177
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
178
|
+
folder :0
|
179
|
+
sous :1
|
180
|
+
:2
|
181
|
+
TEST
|
182
|
+
assert_equal [[:mv, 'folder/sous', 'sous'], [:rm, 'sous/truc']], ops
|
183
|
+
end
|
184
|
+
def test_create_folder
|
185
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
186
|
+
new
|
187
|
+
subnew
|
188
|
+
folder :0
|
189
|
+
another
|
190
|
+
TEST
|
191
|
+
assert_equal [[:mkdir, 'new'], [:mkdir, "folder/another"], [:mkdir, 'new/subnew']], ops
|
192
|
+
end
|
193
|
+
def test_delete_folder
|
194
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
195
|
+
folder :0
|
196
|
+
:1
|
197
|
+
truc.txt :3
|
198
|
+
TEST
|
199
|
+
assert_equal [[:rmdir, 'folder/sous']], ops
|
200
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
201
|
+
folder :0
|
202
|
+
:1
|
203
|
+
:2
|
204
|
+
truc.txt :3
|
205
|
+
TEST
|
206
|
+
assert_equal [[:rm, 'folder/sous/truc'], [:rmdir, 'folder/sous']], ops
|
207
|
+
end
|
208
|
+
def test_delete_file
|
209
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
210
|
+
folder :0
|
211
|
+
sous :1
|
212
|
+
:2
|
213
|
+
truc.txt :3
|
214
|
+
TEST
|
215
|
+
assert_equal [[:rm, 'folder/sous/truc']], ops
|
216
|
+
end
|
217
|
+
def test_noop
|
218
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
219
|
+
folder :0
|
220
|
+
sous :1
|
221
|
+
truc :2
|
222
|
+
truc.txt :3
|
223
|
+
TEST
|
224
|
+
assert_equal [], ops
|
225
|
+
ops = @fs.operations_if_edited_as <<-TEST
|
226
|
+
TEST
|
227
|
+
assert_equal [], ops
|
228
|
+
end
|
229
|
+
end
|
metadata
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fled
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Eric Doughty-Papassideris
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-07-31 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Generate a list of files, edit it, then print a bash script with the
|
15
|
+
appropriate commands
|
16
|
+
email:
|
17
|
+
executables:
|
18
|
+
- fled
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
22
|
+
- lib/dtc/utils/dsldsl.rb
|
23
|
+
- lib/dtc/utils/exec.rb
|
24
|
+
- lib/dtc/utils/file_visitor.rb
|
25
|
+
- lib/dtc/utils/interactive_edit.rb
|
26
|
+
- lib/dtc/utils/mini_select.rb
|
27
|
+
- lib/dtc/utils.rb
|
28
|
+
- lib/fled/file_listing.rb
|
29
|
+
- lib/fled.rb
|
30
|
+
- bin/fled
|
31
|
+
- tests/helper.rb
|
32
|
+
- tests/readme.rb
|
33
|
+
- tests/test_operations.rb
|
34
|
+
- README.md
|
35
|
+
homepage: http://github.com/ddlsmurf/fled
|
36
|
+
licenses: []
|
37
|
+
post_install_message:
|
38
|
+
rdoc_options: []
|
39
|
+
require_paths:
|
40
|
+
- lib
|
41
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
48
|
+
none: false
|
49
|
+
requirements:
|
50
|
+
- - ! '>='
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
requirements: []
|
54
|
+
rubyforge_project:
|
55
|
+
rubygems_version: 1.8.22
|
56
|
+
signing_key:
|
57
|
+
specification_version: 3
|
58
|
+
summary: FlEd lets you edit file names and paths in your favourite editor
|
59
|
+
test_files: []
|