debsfromrepos 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -5,6 +5,8 @@
5
5
  This is a small lib to get the names and descriptions for the availables
6
6
  packages at specific (or group of them) Debian/Ubuntu repository.
7
7
 
8
+ The description can be obtained in a specific language.
9
+
8
10
  == Installation
9
11
 
10
12
 
@@ -26,21 +28,30 @@ and ask for the right <tt>Packages.gz</tt> url for a specific Debian/Ubuntu serv
26
28
  server = "http://us.archive.ubuntu.com/ubuntu"
27
29
  suite = "oneiric"
28
30
  component = "main"
29
- repository = DebsFromRepos::ListUrl.new(server, suite, component)
30
- repository.get_url
31
+ language = "es"
32
+ repository = DebsFromRepos::ListUrl.new(server, suite, component, language)
33
+ packages_url = repository.get_packages_url
31
34
  # => "http://us.archive.ubuntu.com/ubuntu/dists/oneiric/main/binary-i386/Packages.gz"
35
+ translations_url = repository.get_translations_url
36
+ # => "http://us.archive.ubuntu.com/ubuntu/dists/oneiric/main/i18n/Translation-es.gz"
32
37
 
33
38
  you also can change the <tt>suite</tt> or <tt>component</tt>
34
39
 
35
40
  repository.component = 'universe'
36
41
  # => "http://us.archive.ubuntu.com/ubuntu/dists/oneiric/universe/binary-i386/Packages.gz"
37
42
 
43
+ or ask for another <tt>language</tt>
44
+
45
+ repository.get_translations_url('it')
46
+ # => "http://us.archive.ubuntu.com/ubuntu/dists/oneiric/main/i18n/Translation-it.gz"
47
+
48
+
38
49
  and then get all the packages' names and descriptions on that component of
39
50
  that suite of that repository:
40
51
 
41
- pkgs = DebsFromRepos::Packages.new(repositories)
42
- pkgs.packages['2ping']
43
- # => "Ping utility to determine directional packet loss"
52
+ pkgs = DebsFromRepos::Packages.new(packages_url, translations_url)
53
+ pkgs.packages['zlib1g']
54
+ # => "Biblioteca de compresión, ejecutables"
44
55
 
45
56
  == Tests
46
57
 
@@ -25,7 +25,8 @@ sources_lists.each_pair do |server,suites|
25
25
  components.each_pair do |component,pkgs|
26
26
  packages[server][suite][component] = {}
27
27
  repo = DebsFromRepos::ListUrl.new(server,suite,component)
28
- pkgs = DebsFromRepos::Packages.new(repo.get_url)
28
+ pkgs_url, translations_url = repo.get_packages_url, repo.get_translations_url('es')
29
+ pkgs = DebsFromRepos::Packages.new(pkgs_url, translations_url)
29
30
  packages[server][suite][component] = pkgs.packages
30
31
  end
31
32
  end
@@ -1,15 +1,16 @@
1
1
  module DebsFromRepos
2
2
  class ListUrl
3
3
 
4
- attr_accessor :suite, :component
4
+ attr_accessor :suite, :component, :lang
5
5
 
6
- def initialize(url, suite='', component='')
6
+ def initialize(url, suite='', component='', lang=nil)
7
7
  @url = url
8
8
  @suite = suite
9
9
  @component = component
10
+ @lang = lang
10
11
  end
11
12
 
12
- def get_url
13
+ def get_packages_url
13
14
  if @suite.empty?
14
15
  $stderr.puts "ERROR: the suite was missing"
15
16
  return nil
@@ -23,5 +24,18 @@ module DebsFromRepos
23
24
  end
24
25
  "#{@url}/dists/#{@suite}/#{@component}/binary-i386/Packages.gz"
25
26
  end
27
+
28
+ def get_translations_url(lang=nil)
29
+ @lang = lang ? lang : @lang
30
+ unless @lang
31
+ $stderr.puts "ERROR: no language has been selected"
32
+ return nil
33
+ end
34
+ unless @lang.match(/^[a-z][a-z]$/)
35
+ $stderr.puts "ERROR: the language is wrong"
36
+ return nil
37
+ end
38
+ "#{@url}/dists/#{@suite}/#{@component}/i18n/Translation-#{@lang}.gz"
39
+ end
26
40
  end
27
41
  end
@@ -6,16 +6,22 @@ module DebsFromRepos
6
6
 
7
7
  attr_reader :packages
8
8
 
9
- def initialize(url)
10
- @url = url
11
- get_packages
9
+ def initialize(packages_url, translations_url=nil)
10
+ get_packages(packages_url)
11
+ if translations_url
12
+ lang_match = translations_url.match(/Translation-([a-z][a-z]).gz/)
13
+ if lang_match
14
+ lang = "-#{lang_match[1]}"
15
+ get_packages(translations_url, lang)
16
+ end
17
+ end
12
18
  end
13
19
 
14
20
  private
15
- def get_packages
16
- @packages = Hash.new
21
+ def get_packages(url, lang="")
22
+ @packages ||= Hash.new
17
23
  begin
18
- zip_file = Zlib::GzipReader.new(open(@url))
24
+ zip_file = Zlib::GzipReader.new(open(url))
19
25
  packages_lines = zip_file.readlines("\n\n")
20
26
  rescue Exception => e
21
27
  packages_lines = []
@@ -25,7 +31,7 @@ module DebsFromRepos
25
31
  next unless name_match
26
32
  name = name_match[1]
27
33
  description = ''
28
- description_match = line.match(/Description:\s(.+)\n/)
34
+ description_match = line.match(/Description#{lang}:\s(.+)\n/)
29
35
  description = description_match[1] if description_match
30
36
  @packages[name] = description
31
37
  end
@@ -1,3 +1,3 @@
1
1
  module DebsFromRepos
2
- VERSION = '0.1.2'
2
+ VERSION = '0.1.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: debsfromrepos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,62 +10,25 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
  date: 2012-01-07 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: rake
16
- requirement: &82973890 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :development
23
- prerelease: false
24
- version_requirements: *82973890
25
- - !ruby/object:Gem::Dependency
26
- name: cucumber
27
- requirement: &82973680 !ruby/object:Gem::Requirement
28
- none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
33
- type: :development
34
- prerelease: false
35
- version_requirements: *82973680
36
- - !ruby/object:Gem::Dependency
37
- name: json
38
- requirement: &82973470 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
43
- version: '0'
44
- type: :development
45
- prerelease: false
46
- version_requirements: *82973470
47
- - !ruby/object:Gem::Dependency
48
- name: rdoc
49
- requirement: &82973260 !ruby/object:Gem::Requirement
50
- none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- type: :development
56
- prerelease: false
57
- version_requirements: *82973260
13
+ dependencies: []
58
14
  description: ! "\n\n== Description\n\nThis is a small lib to get the names and descriptions
59
15
  for the availables\npackages at specific (or group of them) Debian/Ubuntu repository.\n\n==
60
16
  Usage\n\nYou have a example of how the library works at the <tt>examples/</tt> directory:\n\n
61
17
  \ examples/repo2json.rb\n\nBasicaly you require the lib\n\n require 'debsfromrepos'\n\nand
62
18
  ask for the right <tt>Packages.gz</tt> url for a specific Debian/Ubuntu server\n\n
63
19
  \ server = \"http://us.archive.ubuntu.com/ubuntu\"\n suite = \"oneiric\"\n component
64
- = \"main\"\n repository = DebsFromRepos::ListUrl.new(server, suite, component)\n
65
- \ repository.get_url\n # => \"http://us.archive.ubuntu.com/ubuntu/dists/oneiric/main/binary-i386/Packages.gz\"\n\nand
20
+ = \"main\"\n language = \"es\"\n repository = DebsFromRepos::ListUrl.new(server,
21
+ suite, component, language)\n packages_url = repository.get_packages_url\n # =>
22
+ \"http://us.archive.ubuntu.com/ubuntu/dists/oneiric/main/binary-i386/Packages.gz\"\n
23
+ \ translations_url = repository.get_translations_url\n # => \"http://us.archive.ubuntu.com/ubuntu/dists/oneiric/main/i18n/Translation-es.gz\"\n\nyou
24
+ also can change the <tt>suite</tt> or <tt>component</tt>\n\n repository.component
25
+ = \"universe\"\n # => \"http://us.archive.ubuntu.com/ubuntu/dists/oneiric/universe/binary-i386/Packages.gz\"\n\nor
26
+ ask for another <tt>language</tt>\n\n repository.get_translations_url(\"it\")\n
27
+ \ # => \"http://us.archive.ubuntu.com/ubuntu/dists/oneiric/main/i18n/Translation-it.gz\"\n\n\nand
66
28
  then get all the packages' names and descriptions on that component of\nthat suite
67
- of that repository:\n\n pkgs = DebsFromRepos::Packages.new(repositories)\n pkgs.packages['2ping']\n
68
- \ # => \"Ping utility to determine directional packet loss\"\n "
29
+ of that repository:\n\n pkgs = DebsFromRepos::Packages.new(packages_url, translations_url)\n
30
+ \ pkgs.packages[\"zlib1g\"]\n # => \"Biblioteca de compresión, ejecutables\"\n
31
+ \ "
69
32
  email: jojeda@emergya.com
70
33
  executables: []
71
34
  extensions: []
@@ -88,7 +51,6 @@ rdoc_options:
88
51
  - debsfromrepos
89
52
  - --main
90
53
  - README.rdoc
91
- - --ri
92
54
  require_paths:
93
55
  - lib
94
56
  - lib