putqr 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/bin/putqr +47 -6
- data/lib/putqr.rb +17 -2
- data/lib/putqr/version.rb +2 -1
- metadata +9 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d3b1f8aa611f02bcf99143d51829ad21604efafaec1ff0c56a5e4e1e2501ebe
|
4
|
+
data.tar.gz: 7761362ac607108d1c937b2bdc033f373e190a4acd1f99754f14007d2b818974
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9aff03258b067beefd1eba58e7112561aa3bf8f56ba50eeb80118db0b5deb5993fa1442a4121dd906a38ec1648d101dbdc22dce649c27ca06a9bb861563ec812
|
7
|
+
data.tar.gz: e1df7bb54e98649158d11511b1feb344494df646b667f322e9f0a8e6052311ef16aaaf2459db69d36818e62d0405a39f2cf8b603c06b31b14b0a519714681f6c
|
data/README.md
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
# putqr
|
2
2
|
|
3
|
+
[](https://rubygems.org/gems/putqr)
|
4
|
+
|
3
5
|
Display a QR code in your terminal.
|
4
6
|
|
5
7
|
If you're using [iTerm2](https://iterm2.com) on macOS,
|
6
8
|
the QR code will be displayed as an image.
|
7
9
|
|
10
|
+

|
11
|
+
|
8
12
|
## Install
|
9
13
|
|
10
14
|
Install `putqr` from [RubyGems](https://rubygems.org/):
|
data/bin/putqr
CHANGED
@@ -1,15 +1,56 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
+
require 'optparse'
|
4
5
|
require 'putqr'
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
STDERR.puts 'warning: only encoding first argument' if ARGV.size > 1
|
9
|
-
else
|
10
|
-
content = STDIN.read
|
7
|
+
def print_version
|
8
|
+
puts "putqr #{PutQR::VERSION} (#{PutQR::DATE})"
|
11
9
|
end
|
12
10
|
|
13
|
-
|
11
|
+
# rubocop:disable Metrics/MethodLength
|
12
|
+
def parse_options
|
13
|
+
{}.tap do |options|
|
14
|
+
OptionParser.new do |opts|
|
15
|
+
opts.banner = 'Usage: putqr [options] [message]'
|
16
|
+
|
17
|
+
opts.on('--[no-]image',
|
18
|
+
'display as an image (on by default if supported)') do |image|
|
19
|
+
options[:image] = image
|
20
|
+
end
|
21
|
+
|
22
|
+
opts.on('--version',
|
23
|
+
'print the version') do
|
24
|
+
print_version
|
25
|
+
exit
|
26
|
+
end
|
27
|
+
end.parse!
|
28
|
+
end
|
29
|
+
end
|
30
|
+
# rubocop:enable Metrics/MethodLength
|
31
|
+
|
32
|
+
def parse_arguments
|
33
|
+
if ARGV.any?
|
34
|
+
STDERR.puts 'warning: only encoding first message argument' if ARGV.size > 1
|
35
|
+
ARGV.first
|
36
|
+
else
|
37
|
+
STDIN.read.chomp
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def render(message, options)
|
42
|
+
qrcode = PutQR::QRCode.new(message)
|
43
|
+
|
44
|
+
case options[:image]
|
45
|
+
when true then qrcode.render_image
|
46
|
+
when false then qrcode.render_ansi
|
47
|
+
else qrcode.render
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
options = parse_options
|
52
|
+
message = parse_arguments
|
53
|
+
output = render(message, options)
|
54
|
+
|
14
55
|
exit(1) if output.nil?
|
15
56
|
puts output
|
data/lib/putqr.rb
CHANGED
@@ -20,7 +20,7 @@ module PutQR
|
|
20
20
|
!qrcode.nil?
|
21
21
|
end
|
22
22
|
|
23
|
-
# Render the QR code
|
23
|
+
# Render the QR code using the best method available for the terminal.
|
24
24
|
# Returns a string.
|
25
25
|
def render
|
26
26
|
if ENV['TERM_PROGRAM'].start_with? 'iTerm'
|
@@ -36,15 +36,30 @@ module PutQR
|
|
36
36
|
qrcode.as_ansi if valid?
|
37
37
|
end
|
38
38
|
|
39
|
+
# Render the QR code as an inline image.
|
40
|
+
# Returns a string.
|
41
|
+
def render_image
|
42
|
+
render_image_iterm2
|
43
|
+
end
|
44
|
+
|
39
45
|
# Render the QR code as an inline image for iTerm2.
|
40
46
|
# Returns a string.
|
41
47
|
def render_image_iterm2
|
42
48
|
return nil unless valid?
|
43
49
|
|
50
|
+
# References:
|
51
|
+
# https://iterm2.com/documentation-images.html
|
52
|
+
# https://iterm2.com/utilities/imgcat
|
53
|
+
|
54
|
+
# tmux requires some extra work for unrecognised escape code sequences
|
55
|
+
screen = ENV['TERM'].start_with? 'screen'
|
56
|
+
prefix = screen ? "\ePtmux;\e\e]" : "\e]"
|
57
|
+
suffix = screen ? "\a\e\\" : "\a"
|
58
|
+
|
44
59
|
png = qrcode.as_png(size: 600)
|
45
60
|
png_base64 = Base64.encode64(png.to_s).chomp
|
46
61
|
options = 'inline=1'
|
47
|
-
"
|
62
|
+
"#{prefix}1337;File=#{options}:#{png_base64}#{suffix}"
|
48
63
|
end
|
49
64
|
|
50
65
|
def self.generate_qrcode(content)
|
data/lib/putqr/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: putqr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Liam Cooke
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rqrcode
|
@@ -36,10 +36,15 @@ files:
|
|
36
36
|
- bin/putqr
|
37
37
|
- lib/putqr.rb
|
38
38
|
- lib/putqr/version.rb
|
39
|
-
homepage: https://
|
39
|
+
homepage: https://liamcooke.com/code/putqr/
|
40
40
|
licenses:
|
41
41
|
- MIT
|
42
|
-
metadata:
|
42
|
+
metadata:
|
43
|
+
bug_tracker_uri: https://github.com/ljcooke/putqr/issues
|
44
|
+
changelog_uri: https://github.com/ljcooke/putqr/blob/master/CHANGELOG.md
|
45
|
+
documentation_uri: https://www.rubydoc.info/gems/putqr
|
46
|
+
homepage_uri: https://liamcooke.com/code/putqr/
|
47
|
+
source_code_uri: https://github.com/ljcooke/putqr
|
43
48
|
post_install_message:
|
44
49
|
rdoc_options: []
|
45
50
|
require_paths:
|