upm 0.1.9 → 0.1.10

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2f969ff4647460fdbbd74e46dce038f1faf7d227f05bf1798fbfa682132ed3c7
4
- data.tar.gz: 51e1fb0bb7874548fee681d9a2775b3c758af6703c0e61553273fcc5b62cac7b
3
+ metadata.gz: 2f8e2c0aca1eba8bc509f6f89582039a586d77e943ffced223e343860dfd378b
4
+ data.tar.gz: 5934a3b056109aceaa4f48e7d9403af2b9187fc4d64654596e4d99c97f1ce14a
5
5
  SHA512:
6
- metadata.gz: 5cb6838c1f72cd573cee81ee4df3750005dc92e8d458622aad04355a6341f36afc7c621f3764e926901f99109430013a4a119a00ca4c0cf4875cb3e0e026295f
7
- data.tar.gz: 2b56430e000bef935520e43225b332fc0f9c6838e5a0ebe20325db28527f0be725827f8bc391bdecac1014f6bab4c9baaaf30350a26c8e136894425cbf1ccc5b
6
+ metadata.gz: e660590380098da3bb5faf99a8d57f7e87aaa8d310a4d9526f743a7b76a40071fd3ba83bd06b6de4bcd002bbf5ea3630cea0e12df7e1ebe3b15e964e9aaf575f
7
+ data.tar.gz: 48986e26050f65d7665092cf48458cf88ef179edc5bf09550d52c8a92026acfdb16e973e5d99c2264c7b75e00f6a2b7e31922bcaacbaa1fcbadfa61a42873732
data/TODO.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # TODO
2
2
 
3
+ ## Performance
4
+
5
+ It's currently very clunky on the rpi2.
6
+
7
+ ## Custom help for command
8
+
9
+ eg: command "something", help: "does stuff", root: true do ... end
10
+
3
11
  ## Pipes and filters
4
12
 
5
13
  * `Tool::DSL#run` is currently somewhat awkward; it would be simpler if returned an `Enumerator`, which could then be filtered (ie: highlight/grep), or concatenated to other `Enumerator`s.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.9
1
+ 0.1.10
@@ -0,0 +1,29 @@
1
+ require 'open-uri'
2
+ require 'upm/colored'
3
+
4
+ class FreshportsSearch
5
+ NUM_RESULTS = 20
6
+ SEARCH_URL = "https://www.freshports.org/search.php?query=%s&num=#{NUM_RESULTS}&stype=name&method=match&deleted=excludedeleted&start=1&casesensitivity=caseinsensitive"
7
+ SVN_URL = "svn://svn.FreeBSD.org/ports/head/%s/%s"
8
+
9
+ def print(results)
10
+ results.each do |path, desc, version|
11
+ _, category, package = path.split("/")
12
+ puts "<9>#{category}<8>/<11>#{package} <8>(<7>#{version}<8>)".colorize
13
+ puts " #{desc}"
14
+ puts " #{SVN_URL % [category, package]}".light_green
15
+ end
16
+ end
17
+
18
+ def search!(query)
19
+ puts "<8>* <7>Searching for <15>#{query}<7>...".colorize
20
+ html = open(SEARCH_URL % query, &:read)
21
+ puts
22
+ results = html.scan(%r{<DT>\s*<BIG><B><a href="([^"]+)/">.+?</BIG>\s*<span class="[^"]+">([^<]+)</span><br>\s*<b>\s*([^<]+)\s*</b>}im)
23
+ print(results)
24
+ end
25
+ end
26
+
27
+ if __FILE__ == $0
28
+ FreshportsSearch.new.search!("silver_searcher")
29
+ end
data/lib/upm/tool.rb CHANGED
@@ -19,8 +19,9 @@ module UPM
19
19
  COMMAND_HELP = {
20
20
  "install" => "install a package",
21
21
  "remove/uninstall" => "remove a package",
22
- "build" => "compile a package from source and install it",
23
- "search" => "using the fastest known API or service",
22
+ "search" => "search packages",
23
+ "search-sources" => "search package source (for use with 'build' command)",
24
+ "build" => "build a package from source and install it",
24
25
  "list" => "list installed packages (or search their names if extra arguments are supplied)",
25
26
  "info" => "show metadata about a package",
26
27
  "update/sync" => "retrieve the latest package list or manifest",
@@ -54,6 +55,7 @@ module UPM
54
55
  "s" => "search",
55
56
  "f" => "files",
56
57
  "r" => "remove",
58
+ "source-search" => "search-sources",
57
59
  }
58
60
 
59
61
  def initialize(name, &block)
data/lib/upm/tool_dsl.rb CHANGED
@@ -17,8 +17,15 @@ module UPM
17
17
  @cmds ||= {}
18
18
 
19
19
  if block_given?
20
- @cmds[name] = block
20
+
21
+ if root and Process.uid != 0
22
+ exec("sudo", $PROGRAM_NAME, *ARGV)
23
+ else
24
+ @cmds[name] = block
25
+ end
26
+
21
27
  elsif shell_command
28
+
22
29
  if shell_command.is_a? String
23
30
  shell_command = shell_command.split
24
31
  elsif not shell_command.is_a? Array
@@ -29,6 +36,7 @@ module UPM
29
36
  query = highlight && args.join(" ")
30
37
  run(*shell_command, *args, paged: paged, root: root, highlight: query)
31
38
  end
39
+
32
40
  end
33
41
  end
34
42
 
@@ -97,6 +105,13 @@ module UPM
97
105
  end
98
106
  end
99
107
 
108
+ def curl(url)
109
+ IO.popen(["curl", "-Ss", url], &:read)
110
+ rescue Errno::ENOENT
111
+ puts "Error: 'curl' isn't installed. You need this!"
112
+ exit 1
113
+ end
114
+
100
115
  def print_files(*paths, include: nil, exclude: nil)
101
116
  lesspipe do |less|
102
117
  paths.each do |path|
@@ -1,4 +1,3 @@
1
-
2
1
  UPM::Tool.new "pacman" do
3
2
 
4
3
  os "arch"
@@ -10,16 +9,14 @@ UPM::Tool.new "pacman" do
10
9
  command "upgrade", [*bin, "-Syu"], root: true
11
10
  command "remove", [*bin, "-R"], root: true
12
11
 
13
- # command "check", [*bin, "-Qkk"]
14
- command "verify" do |args|
12
+ command "verify", root: true do |args|
15
13
  require 'upm/pacman_verifier'
16
14
  UPM::PacmanVerifier.new.verify!(*args)
17
15
  end
18
16
 
19
17
  command "audit", "arch-audit", paged: true
20
18
  command "files", [*bin, "-Ql"], paged: true
21
- command "search", [*bin, "-Ss"], paged: true
22
-
19
+ command "search", [*bin, "-Ss"], paged: true, highlight: true
23
20
 
24
21
  command "info" do |args|
25
22
  run(*bin, "-Qi", *args, paged: true) || run(*bin, "-Si", *args, paged: true)
@@ -108,7 +105,4 @@ UPM::Tool.new "pacman" do
108
105
 
109
106
  end
110
107
 
111
-
112
108
  end
113
-
114
-
data/lib/upm/tools/pkg.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'upm/freshports_search'
2
+
1
3
  UPM::Tool.new "pkg" do
2
4
 
3
5
  os "FreeBSD"
@@ -11,6 +13,24 @@ UPM::Tool.new "pkg" do
11
13
 
12
14
  command "files", "pkg list", paged: true
13
15
  command "search", "pkg search", paged: true, highlight: true
16
+ command "search-sources" do |*args|
17
+ query = args.join(" ")
18
+ FreshportsSearch.new.search!(query)
19
+ end
20
+
21
+ command "build" do |*args|
22
+ # svn checkout --depth empty svn://svn.freebsd.org/ports/head /usr/ports
23
+ # cd /usr/ports
24
+ # svn update --set-depth files
25
+ # svn update Mk
26
+ # svn update Templates
27
+ # svn update Tools
28
+ # svn update --set-depth files $category
29
+ # cd $category
30
+ # svn update $port
31
+ puts "Not implemented"
32
+ end
33
+
14
34
  command "info", "pkg info", paged: true
15
35
 
16
36
  command "list" do |args|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - epitron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-21 00:00:00.000000000 Z
11
+ date: 2018-05-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Wrap all known command-line package tools with a consistent and pretty
14
14
  interface.
@@ -31,6 +31,7 @@ files:
31
31
  - lib/upm.rb
32
32
  - lib/upm/colored.rb
33
33
  - lib/upm/core_ext.rb
34
+ - lib/upm/freshports_search.rb
34
35
  - lib/upm/lesspipe.rb
35
36
  - lib/upm/log_parser.rb
36
37
  - lib/upm/pacman_verifier.rb
@@ -63,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
64
  version: '0'
64
65
  requirements: []
65
66
  rubyforge_project:
66
- rubygems_version: 2.7.6
67
+ rubygems_version: 2.7.7
67
68
  signing_key:
68
69
  specification_version: 4
69
70
  summary: Universal Package Manager