net-ftp-list 1.0 → 2.0.0

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/Rakefile CHANGED
@@ -1,51 +1,52 @@
1
- # -*- ruby -*-
1
+ require 'rubygems'
2
2
  require 'rake'
3
- require 'rake/clean'
4
- require 'rake/gempackagetask'
5
- require 'rake/testtask'
6
-
7
- NAME = 'net-ftp-list'
8
- VERS = '1.0'
9
-
10
- CLEAN.include ['**/*.log', '*.gem']
11
- CLOBBER.include ['**/*.log']
12
3
 
13
- spec = Gem::Specification.new do |s|
14
- s.name = NAME
15
- s.version = VERS
16
- s.platform = Gem::Platform::RUBY
17
- s.has_rdoc = true
18
- s.extra_rdoc_files = ["README.txt"]
19
- s.summary = 'Parse FTP LIST command output.'
20
- s.description = s.summary
21
- s.author = 'Shane Hanna'
22
- s.email = 'shane@statelesssystems.com'
23
- s.homepage = 'http://statelesssystems.com'
24
-
25
- s.files = FileList['Rakefile', '**/*.{rb,txt}'].to_a
26
- s.test_files = FileList['tests/*.rb'].to_a
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "net-ftp-list"
8
+ gem.summary = %Q{Parse FTP LIST command output.}
9
+ gem.email = "enquiries@statelesssystems.com"
10
+ gem.homepage = "http://github.com/stateless-systems/net-ftp-list"
11
+ gem.authors = ["Stateless Systems"]
12
+ end
13
+ rescue LoadError
14
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
27
15
  end
28
16
 
29
- desc 'Default: Run unit tests.'
30
- task :default => :test
31
-
32
- Rake::GemPackageTask.new(spec) do |p|
33
- p.need_tar = true
34
- p.gem_spec = spec
17
+ require 'rake/testtask'
18
+ Rake::TestTask.new(:test) do |test|
19
+ test.libs << 'lib' << 'test'
20
+ test.pattern = 'test/**/*_test.rb'
21
+ test.verbose = true
35
22
  end
36
23
 
37
- desc 'Run the unit tests.'
38
- Rake::TestTask.new do |t|
39
- t.verbose = true
24
+ begin
25
+ require 'rcov/rcovtask'
26
+ Rcov::RcovTask.new do |test|
27
+ test.libs << 'test'
28
+ test.pattern = 'test/**/*_test.rb'
29
+ test.verbose = true
30
+ end
31
+ rescue LoadError
32
+ task :rcov do
33
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
34
+ end
40
35
  end
41
36
 
42
- desc 'Package and install as gem.'
43
- task :install do
44
- sh %{rake package}
45
- sh %{sudo gem install pkg/#{NAME}-#{VERS}}
46
- end
37
+ task :default => :test
47
38
 
48
- desc 'Uninstall the gem.'
49
- task :uninstall => [:clean] do
50
- sh %{sudo gem uninstall #{NAME}}
39
+ require 'rake/rdoctask'
40
+ Rake::RDocTask.new do |rdoc|
41
+ if File.exist?('VERSION.yml')
42
+ config = YAML.load(File.read('VERSION.yml'))
43
+ version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
44
+ else
45
+ version = ""
46
+ end
47
+
48
+ rdoc.rdoc_dir = 'rdoc'
49
+ rdoc.title = "net-ftp-list #{version}"
50
+ rdoc.rdoc_files.include('README*')
51
+ rdoc.rdoc_files.include('lib/**/*.rb')
51
52
  end
@@ -0,0 +1,4 @@
1
+ ---
2
+ :minor: 0
3
+ :patch: 0
4
+ :major: 2
@@ -5,6 +5,7 @@ require 'net/ftp/list/parser'
5
5
  # the whole thing is searched in reverse order.
6
6
  require 'net/ftp/list/unix'
7
7
  require 'net/ftp/list/microsoft'
8
+ require 'net/ftp/list/netware'
8
9
 
9
10
  module Net #:nodoc:
10
11
  class FTP #:nodoc:
@@ -0,0 +1,50 @@
1
+ require 'net/ftp/list/parser'
2
+
3
+ module Net
4
+ class FTP
5
+ module List
6
+
7
+ # Parse Netware like FTP LIST entries.
8
+ #
9
+ # == MATCHES
10
+ #
11
+ # d [RWCEAFMS] dpearce 512 Jun 27 23:46 public.www
12
+ #
13
+ # == SYNOPSIS
14
+ #
15
+ # entry = Net::FTP::List::Netware.new('d [RWCEAFMS] dpearce 512 Jun 27 23:46 public.www')
16
+ # entry.dir? # => true
17
+ # entry.basename # => 'public.www'
18
+ class Netware < Parser
19
+
20
+ # Stolen straight from the ASF's commons Java FTP LIST parser library.
21
+ # http://svn.apache.org/repos/asf/commons/proper/net/trunk/src/java/org/apache/commons/net/ftp/
22
+
23
+ REGEXP = %r!^
24
+ (d|-){1}\s+
25
+ \[(.*?)\]\s+
26
+ (\S+)\s+(\d+)\s+
27
+ (\S+\s+\S+\s+((\d+:\d+)|(\d{4})))
28
+ \s+(.*)
29
+ $!x
30
+
31
+ # Parse a Netware like FTP LIST entries.
32
+ def initialize(raw)
33
+ super(raw)
34
+ match = REGEXP.match(raw.strip) or raise ParserError
35
+
36
+ if match[1] == 'd'
37
+ @dir = true
38
+ else
39
+ @file = true
40
+ end
41
+
42
+ # TODO: Permissions, users, groups, date/time.
43
+
44
+ @basename = match[9]
45
+ end
46
+ end
47
+
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,32 @@
1
+ require 'test/unit'
2
+ require 'net/ftp/list'
3
+
4
+ class TestNetFTPListNetware < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @dir = Net::FTP::List.parse('d [RWCEAFMS] dpearce 512 Jun 27 23:46 public.www')
8
+ @file = Net::FTP::List.parse('- [RWCEAFMS] dpearce 2767 Jun 22 06:22 about.html')
9
+ end
10
+
11
+ def test_parse_new
12
+ assert_instance_of Net::FTP::List::Netware, @dir, 'LIST Netware directory'
13
+ assert_instance_of Net::FTP::List::Netware, @file, 'LIST Netware file'
14
+ end
15
+
16
+ def test_rubbish_lines
17
+ assert_instance_of Net::FTP::List::Unknown, Net::FTP::List.parse("++ bah! ++")
18
+ end
19
+
20
+ def test_ruby_netware_like_dir
21
+ assert_equal 'public.www', @dir.basename
22
+ assert @dir.dir?
23
+ assert !@dir.file?
24
+ end
25
+
26
+ def test_ruby_netware_like_file
27
+ assert_equal 'about.html', @file.basename
28
+ assert @file.file?
29
+ assert !@file.dir?
30
+ end
31
+
32
+ end
metadata CHANGED
@@ -1,53 +1,67 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: net-ftp-list
5
3
  version: !ruby/object:Gem::Version
6
- version: "1.0"
7
- date: 2008-05-23 00:00:00 +10:00
8
- summary: Parse FTP LIST command output.
9
- require_paths:
10
- - lib
11
- email: shane@statelesssystems.com
12
- homepage: http://statelesssystems.com
13
- rubyforge_project:
14
- description: Parse FTP LIST command output.
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 2.0.0
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
- - Shane Hanna
7
+ - Stateless Systems
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-05-05 00:00:00 +10:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: enquiries@statelesssystems.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.txt
31
24
  files:
25
+ - README.txt
32
26
  - Rakefile
27
+ - VERSION.yml
28
+ - lib/net/ftp/list.rb
33
29
  - lib/net/ftp/list/microsoft.rb
30
+ - lib/net/ftp/list/netware.rb
34
31
  - lib/net/ftp/list/parser.rb
35
32
  - lib/net/ftp/list/unix.rb
36
- - lib/net/ftp/list.rb
37
33
  - test/test_net_ftp_list_microsoft.rb
34
+ - test/test_net_ftp_list_netware.rb
38
35
  - test/test_net_ftp_list_unix.rb
39
- - README.txt
40
- test_files: []
41
-
42
- rdoc_options: []
43
-
44
- extra_rdoc_files:
45
- - README.txt
46
- executables: []
47
-
48
- extensions: []
36
+ has_rdoc: true
37
+ homepage: http://github.com/stateless-systems/net-ftp-list
38
+ licenses: []
49
39
 
40
+ post_install_message:
41
+ rdoc_options:
42
+ - --charset=UTF-8
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
50
+ version:
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ version:
50
57
  requirements: []
51
58
 
52
- dependencies: []
53
-
59
+ rubyforge_project:
60
+ rubygems_version: 1.3.5
61
+ signing_key:
62
+ specification_version: 2
63
+ summary: Parse FTP LIST command output.
64
+ test_files:
65
+ - test/test_net_ftp_list_unix.rb
66
+ - test/test_net_ftp_list_netware.rb
67
+ - test/test_net_ftp_list_microsoft.rb