fled 0.0.1 → 0.0.2

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 CHANGED
@@ -3,11 +3,6 @@
3
3
 
4
4
  `fled` lets you organise your files and folders in your favourite editor
5
5
 
6
- ## Disclaimer
7
-
8
- Warning: This is a very dangerous tool. The author recommends you do not
9
- use it. The author cannot be held responsible in any case.
10
-
11
6
  ## Introduction
12
7
 
13
8
  `fled` enumerates a folder and its files, and generates a text listing.
@@ -17,13 +12,17 @@ your files and folders around as-per your edits.
17
12
 
18
13
  **You should review that shell script very carefully before running it.**
19
14
 
15
+ ### Install
16
+
17
+ You can install using `gem install fled`.
18
+
20
19
  ### Philosophy
21
20
 
22
21
  `fled` only generates text, it does not perform any operation directly.
23
22
 
24
- The design optimises for making the edits very simple. The consequence of
25
- this is that very small edits can have large consequences, which makes
26
- this a **very dangerous** tool. But so is `rm` and the rest of the shell anyway...
23
+ The design optimises for making the edits very simple. This means that very small
24
+ edits can have large consequences, which makes this a **very dangerous** tool.
25
+ But so is `rm` and the rest of the shell anyway...
27
26
 
28
27
  ### Caveats
29
28
 
@@ -35,6 +34,10 @@ cases defined, any help is much appreciated.
35
34
 
36
35
  You should be scared when using `fled`.
37
36
 
37
+ ### Test status
38
+
39
+ [![Build Status](https://secure.travis-ci.org/ddlsmurf/fled.png?branch=master&this_url_now_ends_with=.png)](http://travis-ci.org/ddlsmurf/fled)
40
+
38
41
  ### Examples
39
42
 
40
43
  Print help text and option list
@@ -163,7 +166,7 @@ If an indent is forgotten:
163
166
 
164
167
  Generates:
165
168
 
166
- mv folder/folder_two/file_three folder/file_one/file_three
169
+ mv folder/folder_two/file_three folder/file_three
167
170
 
168
171
  ### All together
169
172
 
@@ -224,7 +227,28 @@ Generates:
224
227
  mv folder sub_sub_folder/sub_folder/folder
225
228
  mv sub_sub_folder/file.txt sub_sub_folder/sub_folder/folder/file.txt
226
229
 
230
+ ## Changelog
231
+
232
+ *Version v0.0.2*
233
+
234
+ - Fix: Unreadable directories now ignored
235
+ - Fix: Version display and DRYed
236
+ - Fix: Moving files under files now moves up to parent folder of destination
237
+ - Meta: Travis-CI integration
238
+
239
+ *Version v0.0.1*
240
+
241
+ - First version
242
+
243
+ ## Disclaimer
244
+
245
+ Warning: This is a very dangerous tool. The author recommends you do not
246
+ use it. The author cannot be held responsible in any case.
247
+
227
248
  ## Contributors
228
249
 
229
250
  - [Eric Doughty-Papassideris](http://github.com/ddlsmurf)
230
251
 
252
+ ## Licence
253
+
254
+ [GPLv3](http://www.gnu.org/licenses/gpl-3.0.html)
data/bin/fled CHANGED
@@ -146,7 +146,7 @@ class App
146
146
  end
147
147
 
148
148
  def output_version
149
- $stderr.puts "#{File.basename(__FILE__)} version #{VERSION}"
149
+ $stderr.puts "#{File.basename(__FILE__)} version #{FlEd::VERSION}"
150
150
  end
151
151
  end
152
152
  App.new.run
@@ -17,6 +17,7 @@ module DTC
17
17
  @folders.pop
18
18
  end
19
19
  def self.browse path, visitor, max_depth = -1
20
+ return unless File.readable?(path)
20
21
  dir = Dir.new(path)
21
22
  return unless visitor.enter_folder path
22
23
  dir.each do |f|
@@ -89,7 +89,7 @@ module FlEd
89
89
  next if path.any? { |o| o[:error] }
90
90
  if target[:name] != "" && !target[:uid]
91
91
  operations << [:mk, self.path_of(target).map { |o| o[:name] }]
92
- fake_source = {:name => target[:name]}
92
+ fake_source = {:name => target[:name], :dir => true}
93
93
  fake_source[:parent] = running_source[path.last[:source][:uid]] unless path.empty?
94
94
  target_uid = "new_#{running_source.count}"
95
95
  target_uid += "_" while @objects_by_id[target_uid] || running_source[target_uid]
@@ -111,11 +111,16 @@ module FlEd
111
111
  if new_name != target[:name]
112
112
  pending_renames << [:renamed, target, target[:name]]
113
113
  end
114
+ if (target_parent = target[:parent])
115
+ until !target_parent || !target_parent[:source] || target_parent[:source][:dir]
116
+ target_parent = target_parent[:parent]
117
+ end
118
+ end
114
119
  source_path = running_source.path_of(source).map { |o| o[:name] }
115
120
  target[:name] = source[:name] = new_name
116
121
  operations << [:moved,
117
122
  source_path,
118
- self.path_of(target).map { |o| o[:name] }
123
+ self.path_of(target_parent).map { |o| o[:name] } + [target[:name]]
119
124
  ]
120
125
  if target[:parent]
121
126
  source[:parent] = running_source[target[:parent][:uid]]
data/lib/fled.rb CHANGED
@@ -4,7 +4,7 @@ require 'shellwords'
4
4
  module FlEd
5
5
  require 'fled/file_listing'
6
6
 
7
- VERSION = '0.0.1'
7
+ VERSION = '0.0.2'
8
8
 
9
9
  def self.operation_list_to_bash ops
10
10
  ops = ops.map do |op|
data/tests/readme.rb CHANGED
@@ -75,11 +75,6 @@ end
75
75
  readme = ExampleDSLWriter.run do
76
76
  h1 "FlEd", '`fled` lets you organise your files and folders in your favourite editor'
77
77
 
78
- h2 "Disclaimer", <<-MD
79
- Warning: This is a very dangerous tool. The author recommends you do not
80
- use it. The author cannot be held responsible in any case.
81
- MD
82
-
83
78
  h2 "Introduction", <<-MD
84
79
  `fled` enumerates a folder and its files, and generates a text listing.
85
80
  You can then edit that listing in your favourite editor, and save changes.
@@ -90,12 +85,16 @@ readme = ExampleDSLWriter.run do
90
85
 
91
86
  MD
92
87
 
88
+ h3 "Install", <<-MD
89
+ You can install using `gem install fled`.
90
+ MD
91
+
93
92
  h3 "Philosophy", <<-MD
94
93
  `fled` only generates text, it does not perform any operation directly.
95
94
 
96
- The design optimises for making the edits very simple. The consequence of
97
- this is that very small edits can have large consequences, which makes
98
- this a **very dangerous** tool. But so is `rm` and the rest of the shell anyway...
95
+ The design optimises for making the edits very simple. This means that very small
96
+ edits can have large consequences, which makes this a **very dangerous** tool.
97
+ But so is `rm` and the rest of the shell anyway...
99
98
  MD
100
99
 
101
100
  h3 "Caveats", <<-MD
@@ -108,6 +107,8 @@ readme = ExampleDSLWriter.run do
108
107
  You should be scared when using `fled`.
109
108
  MD
110
109
 
110
+ h3 "Test status", "[![Build Status](https://secure.travis-ci.org/ddlsmurf/fled.png?branch=master&this_url_now_ends_with=.png)](http://travis-ci.org/ddlsmurf/fled)"
111
+
111
112
  h3 "Examples"
112
113
  [
113
114
  ["Print help text and option list", "fled --help"],
@@ -250,7 +251,29 @@ readme = ExampleDSLWriter.run do
250
251
  file.txt :3
251
252
  EXAMPLE
252
253
 
254
+ h2 "Changelog"
255
+ ({
256
+ 'v0.0.1' => ['First version'],
257
+ 'v0.0.2' => [
258
+ 'Fix: Unreadable directories now ignored',
259
+ 'Fix: Version display and DRYed',
260
+ 'Fix: Moving files under files now moves up to parent folder of destination',
261
+ 'Meta: Travis-CI integration',
262
+ ],
263
+ }).sort { |a, b| b[0] <=> a[0] }.each do |version, changes|
264
+ em "Version #{version}"
265
+ changes.each { |change| li change }
266
+ end
267
+
268
+ h2 "Disclaimer", <<-MD
269
+ Warning: This is a very dangerous tool. The author recommends you do not
270
+ use it. The author cannot be held responsible in any case.
271
+ MD
272
+
253
273
  h2 "Contributors"
254
274
  li "[Eric Doughty-Papassideris](http://github.com/ddlsmurf)"
275
+
276
+ h2 "Licence", "[GPLv3](http://www.gnu.org/licenses/gpl-3.0.html)"
277
+
255
278
  end
256
279
  puts readme
@@ -165,6 +165,33 @@ class TestOperations < Test::Unit::TestCase
165
165
  TEST
166
166
  assert_equal [[:mv, 'folder/sous/truc', 'truc']], ops
167
167
  end
168
+ def test_reparent_under_file
169
+ ops = @fs.operations_if_edited_as <<-TEST
170
+ folder :0
171
+ sous :1
172
+ truc :2
173
+ truc.txt :3
174
+ TEST
175
+ assert_equal [[:mv, "folder/truc.txt", "folder/sous/truc.txt"]], ops
176
+ end
177
+ def test_reparent_under_file_at_root
178
+ ops = TestFS.new do
179
+ folder(0) {
180
+ file_one(1)
181
+ file_two(2)
182
+ file_three(3)
183
+ }
184
+ end.operations_if_edited_as <<-TEST
185
+ file_one :1
186
+ file_two :2
187
+ file_three :3
188
+ TEST
189
+ assert_equal [
190
+ [:mv, "folder/file_one", "file_one"],
191
+ [:mv, "folder/file_two", "file_two"],
192
+ [:mv, "folder/file_three", "file_three"],
193
+ ], ops
194
+ end
168
195
  def test_reparent_impact_on_mkdir
169
196
  ops = @fs.operations_if_edited_as <<-TEST
170
197
  folder :0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fled
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: