pipark 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 16a953e0d6a1e73e4e56e474b2c3a4b255e8ef9446f4527134458032f86b03f3
4
+ data.tar.gz: af53d006e3cebeafab803d148b7ba17d9c1fa47bf44ffe76fe7f25835b4d2450
5
+ SHA512:
6
+ metadata.gz: ecfe6db4a9348b8ac98b4ae2582f2630b80c6e5f82ee8e496ea2b6c4b9a7cff74ccf5cebe21f555199acf8fb3b1903b9fd4b595b420aeee57056052925f588c8
7
+ data.tar.gz: 3dfa7daf5829382f162a40b41d80d1e5b74318a0161ae6ad911a913d06f09a1236fff4f8f467dfb055cac222be434ded578dce175621025d79121c2d115d02de
@@ -0,0 +1,97 @@
1
+ module Pipark
2
+
3
+ class << self
4
+
5
+ # Creates a Host object for the address.
6
+ def host(address)
7
+ Host.new(address)
8
+ end
9
+
10
+ alias pi host
11
+
12
+ # Creates a Host object for localhost.
13
+ def localhost
14
+ host 'localhost'
15
+ end
16
+
17
+ # Returns true if the address can be pinged.
18
+ def pingable?(address)
19
+ system "ping -c 1 #{address} > /dev/null 2>&1"
20
+ end
21
+
22
+ end
23
+
24
+
25
+ class Host
26
+
27
+ attr_reader :address
28
+
29
+ def initialize(address)
30
+ @address = address
31
+ end
32
+
33
+ # Returns a programmer-friendly representation of the host.
34
+ def inspect
35
+ %Q(Pipark::Host "#{address}")
36
+ end
37
+
38
+ # Flushes cached attributes.
39
+ def flush
40
+ @cache = {}
41
+ end
42
+
43
+ # Returns true if the host is localhost.
44
+ def localhost?
45
+ @localhost ||= %w(localhost 127.0.0.1 ::1).include? address
46
+ end
47
+
48
+ # Returns true if the host can be pinged.
49
+ def pingable?
50
+ Pipark.pingable? address
51
+ end
52
+
53
+ # Returns the host's hostname.
54
+ def hostname
55
+ cache['hostname'] ||= file_read('/etc/hostname').chomp
56
+ end
57
+
58
+ # Returns the host's Raspberry Pi model.
59
+ def model
60
+ cache['model'] ||= file_read('/proc/device-tree/model').chop
61
+ end
62
+
63
+ # Returns the hosts's CPU temperature.
64
+ def cpu_temperature
65
+ file_read('/sys/class/thermal/thermal_zone0/temp').chomp.to_i
66
+ end
67
+
68
+ # Returns information about the host's operating system.
69
+ def os_release
70
+ cache['os-release'] ||=
71
+ file_read('/etc/os-release').lines.map { |l| l.chomp.split('=') }.map { |k,v| [k,v.chomp.gsub('"','')] }.to_h
72
+ end
73
+
74
+ private
75
+
76
+ def cache
77
+ @cache ||= {}
78
+ end
79
+
80
+ def file_read(file)
81
+ if localhost?
82
+ File.read(file)
83
+ else
84
+ `ssh #{address} cat #{file}`
85
+ end
86
+ end
87
+
88
+ def _view_21x8
89
+ view = 'RPi ' + hostname.rjust(17) + "\n\n"
90
+ view << os_release['NAME'].center(21) + "\n"
91
+ view << os_release['VERSION'].center(21) + "\n\n"
92
+ view << " CPU %2d °C\n" % (cpu_temperature*0.001)
93
+ end
94
+
95
+ end
96
+
97
+ end
@@ -0,0 +1,11 @@
1
+ module Pipark
2
+
3
+ # pipark version.
4
+ VERSION = '0.1.0'
5
+
6
+ # Returns Pipark::VERSION.
7
+ def self.version
8
+ VERSION
9
+ end
10
+
11
+ end
data/lib/pipark.rb ADDED
@@ -0,0 +1,10 @@
1
+ module Pipark
2
+ end
3
+
4
+ %w(
5
+
6
+ version
7
+
8
+ host
9
+
10
+ ).each { |m| require "pipark/#{m}" }
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pipark
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - lllist.eu
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-05-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/pipark.rb
20
+ - lib/pipark/host.rb
21
+ - lib/pipark/version.rb
22
+ homepage: https://github.com/lllisteu/pipark
23
+ licenses:
24
+ - MIT
25
+ metadata:
26
+ homepage_uri: https://github.com/lllisteu/pipark
27
+ changelog_uri: https://github.com/lllisteu/pipark/blob/master/History.md
28
+ documentation_uri: https://www.rubydoc.info/gems/pipark
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: 2.5.0
38
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubygems_version: 3.3.11
45
+ signing_key:
46
+ specification_version: 4
47
+ summary: Pea-brained control of Raspberry Pi's
48
+ test_files: []