sys-uptime 0.7.3-universal-mingw32 → 0.8.0-universal-mingw32

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: d7827091dd7125a7ad60624559b9b7f54e71b8cc6618f05a9cc170dbe537e2ec
4
- data.tar.gz: 62e980ba422eb79f8b460cb9608b5b3debab1fb2a086ee58cf230f11cd249eb8
3
+ metadata.gz: 3761fa13b2099bd51df8a9a22df86e50cc2305ed08a4fca545ef3c3110c9754b
4
+ data.tar.gz: f98b626af7fd8d6add60ba4ccf819ad9e849981025341486d44c399e4abf1b0c
5
5
  SHA512:
6
- metadata.gz: 4304da8a34289d133c89a77ba5dc7c9ac3731380f1061a5b3fd5070b04768cd6119976b4abd70acb9d95d567a9403fb5b702473d4f9f2074a3e0f57bc972595f
7
- data.tar.gz: 8f6de7fa09186f89b73e1340ef7867310bbecf4bb60628c06ef94fc31a9b3fe78b34dc46025abd76a1421b0bf5453fbf3bfa9481e72cbc644bbac9b6fff35e5f
6
+ metadata.gz: 31108c76cdc01e9589b4a2dc215b39773beb39ac5e3e253c229ea66f162d14ae9daddf5f4fc8297c8196c8a489c49cbb19260133c1123f843441eb123608f43d
7
+ data.tar.gz: 6e3105965409ef9fb9f54648cd534008738ca551a58de65bc4293ba25211f9f5a4c8c9a72acf55c12ec46f78d83a2ee32163e56fee3e5bc7aa46d790ca179dbf
checksums.yaml.gz.sig CHANGED
Binary file
@@ -1,4 +1,21 @@
1
- == 0.7.3 - 31-Dec-2019
1
+ ## 0.8.0 - 7-Jul-2025
2
+ * Use sysconf instead of hard coded value for ticks on Unixy platforms.
3
+
4
+ ## 0.7.6 - 9-Apr-2023
5
+ * Constructor is now officially private, as are several constants that were
6
+ never meant to be public.
7
+ * Lots of rubocop suggested updates.
8
+ * Minor refactoring for Windows.
9
+ * Minor updates, including Rakefile and gemspec metadata.
10
+
11
+ ## 0.7.5 - 29-Oct-2020
12
+ * Switched docs to markdown format.
13
+ * Added a Gemfile.
14
+
15
+ ## 0.7.4 - 18-Mar-2020
16
+ * Added a LICENSE file as per the requirements of the Apache-2.0 license.
17
+
18
+ ## 0.7.3 - 31-Dec-2019
2
19
  * Attempting to call Sys::Uptime.new will now raise an error. I thought
3
20
  this was already the case, but apparently one of the tests was bad.
4
21
  * Added explicit .rdoc extensions to various text files so that github
@@ -7,48 +24,48 @@
7
24
  * Updated the gemspec to reflect the filename updates, as well as the
8
25
  added development dependency.
9
26
 
10
- == 0.7.2 - 4-Nov-2018
27
+ ## 0.7.2 - 4-Nov-2018
11
28
  * Added metadata to the gemspec.
12
29
  * The VERSION constant is now frozen.
13
30
  * Updated cert.
14
31
 
15
- == 0.7.1 - 14-May-2016
32
+ ## 0.7.1 - 14-May-2016
16
33
  * Altered internal layout, which also fixed a require bug. Thanks go
17
34
  to jkburges for the spot.
18
35
  * Moved the VERSION constant into a single file shared by all platforms.
19
36
 
20
- == 0.7.0 - 3-Oct-2015
37
+ ## 0.7.0 - 3-Oct-2015
21
38
  * Changed license to Apache 2.0.
22
39
  * Added a cert. This gem is now signed.
23
40
  * Added a sys-uptime.rb file for convenience.
24
41
  * Gem related tasks in the Rakefile now assume Rubygems 2.x.
25
42
 
26
- == 0.6.2 - 8-Nov-2014
43
+ ## 0.6.2 - 8-Nov-2014
27
44
  * Minor updates to gemspec and Rakefile.
28
45
 
29
- == 0.6.1 - 22-Oct-2012
46
+ ## 0.6.1 - 22-Oct-2012
30
47
  * Refactored a private method in the MS Windows source.
31
48
  * Minor fix for one private method test.
32
49
  * Fixed an RbConfig vs Config warning. Thanks Pedro Carrico.
33
50
 
34
- == 0.6.0 - 11-Dec-2011
51
+ ## 0.6.0 - 11-Dec-2011
35
52
  * Switched Unix code to use FFI.
36
53
  * Removed all of the C related tasks from the Rakefile and added the gem:build
37
54
  and gem:install tasks.
38
55
  * Internal directory layout changes, with appropriate changes to the gemspec.
39
56
 
40
- == 0.5.3 - 7-May-2009
57
+ ## 0.5.3 - 7-May-2009
41
58
  * Altered the Uptime.seconds implementation on Linux so that it works with
42
59
  both Ruby 1.8.x and 1.9.x. Thanks go to Alexey Chebotar for the spot.
43
60
 
44
- == 0.5.2 - 13-Dec-2008
61
+ ## 0.5.2 - 13-Dec-2008
45
62
  * Fixed a date/time issue in the Windows version caused by Ruby itself.
46
63
  * Fixed the Uptime.seconds, Uptime.minutes and Uptime.hours methods on MS
47
64
  Windows.
48
65
  * Renamed the test file to 'test_sys_uptime.rb'.
49
66
  * Some minor updates to the Rakefile.
50
67
 
51
- == 0.5.1 - 26-Jul-2007
68
+ ## 0.5.1 - 26-Jul-2007
52
69
  * Fixed bug in the MS Windows version caused by incorrect parsing of an
53
70
  MS specific date format (caused by a bug in Ruby 1.8.6). Thanks go to
54
71
  Robert H. for the spot.
@@ -57,7 +74,7 @@
57
74
  * Added an 'install_gem' Rake task, and updated the README installation
58
75
  instructions.
59
76
 
60
- == 0.5.0 - 30-Mar-2007
77
+ ## 0.5.0 - 30-Mar-2007
61
78
  * For platforms that use C code, the code now always uses the sysctl()
62
79
  function if supported by your system. This replaces the platform specific
63
80
  checks I was doing for the various BSD flavors.
@@ -67,20 +84,20 @@
67
84
  * Added a Rakefile - users should now use the 'test' and 'install' rake tasks.
68
85
  * Updates to the MANIFEST, README and uptime.txt files.
69
86
 
70
- == 0.4.5 - 19-Nov-2006
87
+ ## 0.4.5 - 19-Nov-2006
71
88
  * Internal layout changes, minor doc updates and gemspec improvements.
72
89
  * No code changes.
73
90
 
74
- == 0.4.4 - 30-Jun-2006
91
+ ## 0.4.4 - 30-Jun-2006
75
92
  * Added inline rdoc documentation to the source files.
76
93
  * Added a gemspec.
77
94
 
78
- == 0.4.3 - 18-Dec-2005
95
+ ## 0.4.3 - 18-Dec-2005
79
96
  * Changed the Linux version to pure Ruby. The current method of determining
80
97
  uptime in unix.c does not work in Linux kernel 2.6+. So, from now on it
81
98
  reads out of /proc/uptime.
82
99
 
83
- == 0.4.2 - 6-May-2005
100
+ ## 0.4.2 - 6-May-2005
84
101
  * Fixed a potential boot_time bug.
85
102
  * Removed the version.h file. It's no longer needed since the Windows
86
103
  version is pure Ruby.
@@ -92,13 +109,13 @@
92
109
  * Made most documents rdoc friendly.
93
110
  * Moved project to RubyForge.
94
111
 
95
- == 0.4.1 - 14-Dec-2004
112
+ ## 0.4.1 - 14-Dec-2004
96
113
  * Moved freebsd code into unix.c file.
97
114
  * Should now work past 249 days (2**31) on systems that have utmpx.h.
98
115
  * Fixed a bug with regards to boot_time, where it was possible that it would
99
116
  simply be empty.
100
117
 
101
- == 0.4.0 - 8-Jul-2004
118
+ ## 0.4.0 - 8-Jul-2004
102
119
  * Removed all reference to the CLK_TCK constant, as per documentation from
103
120
  Richard Stevens that it is deprecated and that sysconf() should be used
104
121
  instead (well, I knew about this, but ignored it until now).
@@ -118,18 +135,18 @@
118
135
  * Removed the uptime.html file - you may generate that on your own.
119
136
  * Added warranty and license info.
120
137
 
121
- == 0.3.2 - 30-Dec-2003
138
+ ## 0.3.2 - 30-Dec-2003
122
139
  * Cleaned up some warnings that showed up with -Wall on some unix platforms
123
140
  (int vs long format, explicit include)
124
141
  * Minor test suite and extconf.rb changes
125
142
 
126
- == 0.3.1 - 25-Jun-2003
143
+ ## 0.3.1 - 25-Jun-2003
127
144
  * Modified test files to handle HP-UX extensions
128
145
  * Minor doc updates
129
146
  * Added the dhms() method. Actually, this was in the 0.3.0
130
147
  release, I just forgot to mention it in this file :)
131
148
 
132
- == 0.3.0 - 22-Jun-2003
149
+ ## 0.3.0 - 22-Jun-2003
133
150
  * Added OS X support - thanks go to Mike Hall for the patch
134
151
  * Fixed incorrect values in FreeBSD (again Mike Hall)
135
152
  * Modified tc_unix.rb test suite to handle OS X, along with a bit
@@ -138,7 +155,7 @@
138
155
  * Separated FreeBSD/OS X source into its own file (freebsd.c).
139
156
  The #ifdefs were starting to get too ugly for me
140
157
 
141
- == 0.2.1 - 13-May-2003
158
+ ## 0.2.1 - 13-May-2003
142
159
  * Fixed bug in extconf.rb file, and made some major changes
143
160
  * Modified test.rb for those without TestUnit
144
161
  * Modified TestUnit tests - some bogus tests were removed
@@ -148,7 +165,7 @@
148
165
  * Docs automatically included in doc directory (i.e. no more interactive
149
166
  document creation)
150
167
 
151
- == 0.2.0 - 13-Mar-2003
168
+ ## 0.2.0 - 13-Mar-2003
152
169
  * Added MS Windows support
153
170
  * Added a VERSION constant
154
171
  * Added a test suite (for those with TestUnit installed)
@@ -157,7 +174,7 @@
157
174
  * Changelog and Manifest are now CHANGES and MANIFEST, respectively
158
175
  * Many changes to extconf.rb
159
176
 
160
- == 0.1.3 - 6-Jan-2003
177
+ ## 0.1.3 - 6-Jan-2003
161
178
  * Added a VERSION class method
162
179
  * Added a copyright notice
163
180
  * Fixed up the docs a bit and moved them to the doc directory
@@ -165,14 +182,14 @@
165
182
  * Modified test.rb script to make it better
166
183
  * Changed install instructions slightly
167
184
 
168
- == 0.1.2 - 25-Aug-2002
185
+ ## 0.1.2 - 25-Aug-2002
169
186
  * Slight change to preprocessor commands to avoid redefining CLK_TCK on
170
187
  those systems that define it in time.h
171
188
  * Added an INSTALL file
172
189
 
173
- == 0.1.1 - 21-Jun-2002
190
+ ## 0.1.1 - 21-Jun-2002
174
191
  * The CLK_TCK constant wasn't necessarily being set correctly, which could
175
192
  lead to some odd results. This has been fixed.
176
193
 
177
- == 0.1.0 - 17-Jun-2002
194
+ ## 0.1.0 - 17-Jun-2002
178
195
  * Initial release
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,177 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
@@ -1,4 +1,5 @@
1
1
  * CHANGES.rdoc
2
+ * LICENSE
2
3
  * MANIFEST.rdoc
3
4
  * Rakefile
4
5
  * README.rdoc
@@ -1,60 +1,67 @@
1
- == Description
1
+ [![Ruby](https://github.com/djberg96/sys-uptime/actions/workflows/ruby.yml/badge.svg)](https://github.com/djberg96/sys-uptime/actions/workflows/ruby.yml)
2
+
3
+ ## Description
2
4
  A Ruby interface for getting system uptime information.
3
5
 
4
- == Prerequisites
6
+ ## Prerequisites
5
7
  ffi 0.1.0 or later on Unixy platforms.
6
8
 
7
- == Installation
9
+ ## Installation
10
+
11
+ `gem install sys-uptime`
8
12
 
9
- gem install sys-uptime
13
+ ## Adding the trusted cert
14
+ `gem cert --add <(curl -Ls https://raw.githubusercontent.com/djberg96/sys-uptime/main/certs/djberg96_pub.pem)`
10
15
 
11
- == Synopsis
12
- require 'sys-uptime'
13
- include Sys
16
+ ## Synopsis
17
+ ```ruby
18
+ require 'sys-uptime'
19
+ include Sys
14
20
 
15
- # Get everything
16
- p Uptime.uptime
17
- p Uptime.dhms.join(', ')
21
+ # Get everything
22
+ p Uptime.uptime
23
+ p Uptime.dhms.join(', ')
18
24
 
19
- # Get individual units
20
- p Uptime.days
21
- p Uptime.hours
22
- p Uptime.minutes
23
- p Uptime.seconds
25
+ # Get individual units
26
+ p Uptime.days
27
+ p Uptime.hours
28
+ p Uptime.minutes
29
+ p Uptime.seconds
24
30
 
25
- # Get the boot time
26
- p Uptime.boot_time
31
+ # Get the boot time
32
+ p Uptime.boot_time
33
+ ```
27
34
 
28
- == Notes
29
- On MS Windows the +Uptime.uptime+ and +Uptime.boot_time+ methods optionally
35
+ ## Notes
36
+ On MS Windows the `Uptime.uptime` and `Uptime.boot_time` methods optionally
30
37
  takes a host name as a single argument. The default is localhost.
31
38
 
32
39
  The current time, users and load average are not included in this library
33
40
  module, even though you may be used to seeing them with the command
34
- line version of +uptime+.
41
+ line version of `uptime`.
35
42
 
36
- == Known Bugs
43
+ ## Known Bugs
37
44
  None that I am aware of. Please log any bugs you find on the project
38
45
  website at https://github.com/djberg96/sys-uptime.
39
46
 
40
- == Questions
47
+ ## Questions
41
48
  "Doesn't Struct::Tms do this?" - No.
42
49
 
43
- == License
50
+ ## License
44
51
  Apache-2.0
45
52
 
46
- == Copyright
47
- Copyright 2002-2019, Daniel J. Berger
53
+ ## Copyright
54
+ Copyright 2002-2025, Daniel J. Berger
48
55
 
49
56
  All Rights Reserved. This module is free software. It may be used,
50
57
  redistributed and/or modified under the same terms as Ruby itself.
51
58
 
52
- == Warranty
59
+ ## Warranty
53
60
  This library is provided "as is" and without any express or
54
61
  implied warranties, including, without limitation, the implied
55
62
  warranties of merchantability and fitness for a particular purpose.
56
63
 
57
- == Acknowledgements
64
+ ## Acknowledgements
58
65
  Andrea Fazzi for help with the FFI version.
59
66
 
60
67
  Mike Hall for help with the BSD side of things for the original C code.
@@ -63,5 +70,5 @@ Ola Eriksson, whose source code I shamelessly plagiarized to get a better
63
70
  implementation for systems that have the utmpx.h header file for the
64
71
  original C code.
65
72
 
66
- == Author
73
+ ## Author
67
74
  Daniel J. Berger
data/Rakefile CHANGED
@@ -2,23 +2,17 @@ require 'rake'
2
2
  require 'rake/clean'
3
3
  require 'rake/testtask'
4
4
  require 'rspec/core/rake_task'
5
+ require 'rubocop/rake_task'
5
6
 
6
- CLEAN.include("**/*.gem", "**/*.rbx", "**/*.rbc")
7
+ CLEAN.include("**/*.gem", "**/*.rbx", "**/*.rbc", "**/*.lock")
7
8
 
8
9
  namespace 'gem' do
9
10
  desc 'Build the sys-uptime gem'
10
11
  task :create => [:clean] do
11
12
  require 'rubygems/package'
12
- spec = eval(IO.read('sys-uptime.gemspec'))
13
+ spec = Gem::Specification.load('sys-uptime.gemspec')
13
14
  spec.signing_key = File.join(Dir.home, '.ssh', 'gem-private_key.pem')
14
-
15
- if File::ALT_SEPARATOR
16
- spec.platform = Gem::Platform.new(['universal','mingw32'])
17
- else
18
- spec.add_dependency('ffi', '>= 1.0.0')
19
- end
20
-
21
- Gem::Package.build(spec, true)
15
+ Gem::Package.build(spec)
22
16
  end
23
17
 
24
18
  desc 'Install the sys-uptime gem'
@@ -28,6 +22,8 @@ namespace 'gem' do
28
22
  end
29
23
  end
30
24
 
25
+ RuboCop::RakeTask.new
26
+
31
27
  desc "Run the test suite"
32
28
  RSpec::Core::RakeTask.new(:spec)
33
29
 
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ffi'
2
4
 
3
5
  # The Sys module serves as a namespace only.
4
6
  module Sys
5
-
6
7
  # The Uptime class encapsulates various bits of information regarding your
7
8
  # system's uptime, including boot time.
8
9
  class Uptime
@@ -12,8 +13,6 @@ module Sys
12
13
  # Error typically raised in one of the Uptime methods should fail.
13
14
  class Error < StandardError; end
14
15
 
15
- private
16
-
17
16
  # Hit this issue on Linux, not sure why
18
17
  begin
19
18
  find_type(:clock_t)
@@ -29,7 +28,7 @@ module Sys
29
28
  private_class_method :strerror, :sysconf, :time, :times, :new
30
29
 
31
30
  begin
32
- attach_function :sysctl, [:pointer, :uint, :pointer, :pointer, :pointer, :size_t], :int
31
+ attach_function :sysctl, %i[pointer uint pointer pointer pointer size_t], :int
33
32
  private_class_method :sysctl
34
33
  rescue FFI::NotFoundError
35
34
  attach_function :setutxent, [], :void
@@ -40,9 +39,15 @@ module Sys
40
39
 
41
40
  CTL_KERN = 1 # Kernel
42
41
  KERN_BOOTTIME = 21 # Time kernel was booted
43
- TICKS = 100 # Ticks per second (TODO: use sysconf)
44
42
  BOOT_TIME = 2 # Boot time
43
+ SC_CLK_TCK = 2 # Sysconf parameter for clock ticks per second
45
44
 
45
+ private_constant :CTL_KERN
46
+ private_constant :KERN_BOOTTIME
47
+ private_constant :BOOT_TIME
48
+ private_constant :SC_CLK_TCK
49
+
50
+ # Private wrapper class for struct tms
46
51
  class Tms < FFI::Struct
47
52
  layout(
48
53
  :tms_utime, :clock_t,
@@ -52,6 +57,9 @@ module Sys
52
57
  )
53
58
  end
54
59
 
60
+ private_constant :Tms
61
+
62
+ # Private wrapper class for struct timeval
55
63
  class Timeval < FFI::Struct
56
64
  layout(
57
65
  :tv_sec, :long,
@@ -59,6 +67,9 @@ module Sys
59
67
  )
60
68
  end
61
69
 
70
+ private_constant :Timeval
71
+
72
+ # Private wrapper class for struct exit_status
62
73
  class ExitStatus < FFI::Struct
63
74
  layout(
64
75
  :e_termination, :short,
@@ -66,6 +77,9 @@ module Sys
66
77
  )
67
78
  end
68
79
 
80
+ private_constant :ExitStatus
81
+
82
+ # Private wrapper class for struct utmpx
69
83
  class Utmpx < FFI::Struct
70
84
  layout(
71
85
  :ut_user, [:char, 32],
@@ -81,7 +95,18 @@ module Sys
81
95
  )
82
96
  end
83
97
 
84
- public
98
+ private_constant :Utmpx
99
+
100
+ # Get ticks per second using sysconf, fallback to 100 if not available
101
+ def self.ticks_per_second
102
+ @ticks_per_second ||= begin
103
+ sysconf(SC_CLK_TCK)
104
+ rescue
105
+ 100
106
+ end
107
+ end
108
+
109
+ private_class_method :ticks_per_second
85
110
 
86
111
  # Returns a Time object indicating the time the system was last booted.
87
112
  #
@@ -91,14 +116,14 @@ module Sys
91
116
  #
92
117
  def self.boot_time
93
118
  if RbConfig::CONFIG['host_os'] =~ /linux/i
94
- Time.now - self.seconds
119
+ Time.now - seconds
95
120
  elsif respond_to?(:sysctl, true)
96
121
  tv = Timeval.new
97
122
  mib = FFI::MemoryPointer.new(:int, 2).write_array_of_int([CTL_KERN, KERN_BOOTTIME])
98
123
  size = FFI::MemoryPointer.new(:long, 1).write_int(tv.size)
99
124
 
100
125
  if sysctl(mib, 2, tv, size, nil, 0) != 0
101
- raise SystemCallError, 'sysctl() - ' + strerror(FFI.errno)
126
+ raise SystemCallError, "sysctl function failed: #{strerror(FFI.errno)}"
102
127
  end
103
128
 
104
129
  Time.at(tv[:tv_sec], tv[:tv_usec])
@@ -126,24 +151,26 @@ module Sys
126
151
  #
127
152
  def self.seconds
128
153
  if RbConfig::CONFIG['host_os'] =~ /linux/i
154
+ # rubocop:disable Lint/RescueException
129
155
  begin
130
- IO.read('/proc/uptime').split.first.to_i
156
+ File.read('/proc/uptime').split.first.to_i
131
157
  rescue Exception => err
132
158
  raise Error, err
133
159
  end
160
+ # rubocop:enable Lint/RescueException
134
161
  elsif respond_to?(:sysctl, true)
135
162
  tv = Timeval.new
136
163
  mib = FFI::MemoryPointer.new(:int, 2).write_array_of_int([CTL_KERN, KERN_BOOTTIME])
137
164
  size = FFI::MemoryPointer.new(:long, 1).write_int(tv.size)
138
165
 
139
166
  if sysctl(mib, 2, tv, size, nil, 0) != 0
140
- raise SystemCallError, 'sysctl() - ' + strerror(FFI.errno)
167
+ raise SystemCallError, "sysctl function failed: #{strerror(FFI.errno)}"
141
168
  end
142
169
 
143
170
  time(nil) - tv[:tv_sec]
144
171
  else
145
172
  tms = Tms.new
146
- times(tms) / TICKS
173
+ times(tms) / ticks_per_second
147
174
  end
148
175
  end
149
176
 
@@ -187,11 +214,11 @@ module Sys
187
214
  def self.uptime
188
215
  secs = seconds
189
216
  days = secs / 86400
190
- secs -= days * 86400
217
+ secs -= days * 86400
191
218
  hours = secs / 3600
192
- secs -= hours * 3600
193
- mins = secs / 60
194
- secs -= mins * 60
219
+ secs -= hours * 3600
220
+ mins = secs / 60
221
+ secs -= mins * 60
195
222
 
196
223
  "#{days}:#{hours}:#{mins}:#{secs}"
197
224
  end
data/lib/sys/uptime.rb CHANGED
@@ -1,12 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  if File::ALT_SEPARATOR
2
4
  require_relative 'windows/sys/uptime'
3
5
  else
4
6
  require_relative 'unix/sys/uptime'
5
7
  end
6
8
 
9
+ # The Sys module serves as a namespace only.
7
10
  module Sys
11
+ # The Uptime class serves as a base singleton class to hang uptime related methods on.
8
12
  class Uptime
9
13
  # The version of the sys-uptime library
10
- VERSION = '0.7.3'.freeze
14
+ VERSION = '0.8.0'
15
+
16
+ private_class_method :new
11
17
  end
12
18
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'win32ole'
2
4
  require 'socket'
3
5
  require 'date'
@@ -5,11 +7,9 @@ require 'time'
5
7
 
6
8
  # The Sys module serves as a namespace only.
7
9
  module Sys
8
-
9
10
  # The Uptime class encapsulates various bits of information regarding your
10
11
  # system's uptime, including boot time.
11
12
  class Uptime
12
-
13
13
  # Error typically raised in one of the Uptime methods should fail.
14
14
  class Error < StandardError; end
15
15
 
@@ -26,15 +26,12 @@ module Sys
26
26
  cs = "winmgmts://#{host}/root/cimv2"
27
27
  begin
28
28
  wmi = WIN32OLE.connect(cs)
29
- rescue WIN32OLERuntimeError => e
30
- raise Error, e
29
+ rescue WIN32OLERuntimeError => err
30
+ raise Error, err
31
31
  else
32
- query = "select LastBootupTime from Win32_OperatingSystem"
33
- results = wmi.ExecQuery(query)
34
- results.each{ |ole|
35
- time_array = parse_ms_date(ole.LastBootupTime)
36
- return Time.mktime(*time_array)
37
- }
32
+ query = 'select LastBootupTime from Win32_OperatingSystem'
33
+ result = wmi.ExecQuery(query).itemIndex(0).LastBootupTime
34
+ Time.parse(result.split('.').first)
38
35
  end
39
36
  end
40
37
 
@@ -81,7 +78,7 @@ module Sys
81
78
  #
82
79
  # Sys::Uptime.hours # => 33
83
80
  #
84
- def self.hours(host=Socket.gethostname)
81
+ def self.hours(host = Socket.gethostname)
85
82
  minutes(host) / 60
86
83
  end
87
84
 
@@ -92,7 +89,7 @@ module Sys
92
89
  #
93
90
  # Sys::Uptime.minutes # => 1980
94
91
  #
95
- def self.minutes(host=Socket.gethostname)
92
+ def self.minutes(host = Socket.gethostname)
96
93
  seconds(host) / 60
97
94
  end
98
95
 
@@ -103,7 +100,7 @@ module Sys
103
100
  #
104
101
  # Sys::Uptime.seconds # => 118800
105
102
  #
106
- def self.seconds(host=Socket.gethostname)
103
+ def self.seconds(host = Socket.gethostname)
107
104
  get_seconds(host)
108
105
  end
109
106
 
@@ -114,7 +111,7 @@ module Sys
114
111
  #
115
112
  def self.parse_ms_date(str)
116
113
  return if str.nil?
117
- return Time.parse(str.split('.').first)
114
+ Time.parse(str.split('.').first)
118
115
  end
119
116
 
120
117
  private_class_method :parse_ms_date
@@ -139,7 +136,7 @@ module Sys
139
136
  # Returns the number of seconds since boot.
140
137
  #
141
138
  def self.get_seconds(host)
142
- (Time.now - boot_time).to_i
139
+ (Time.now - boot_time(host)).to_i
143
140
  end
144
141
 
145
142
  private_class_method :get_seconds
data/lib/sys-uptime.rb CHANGED
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'sys/uptime'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  #####################################################################
2
4
  # sys_uptime_spec.rb
3
5
  #
@@ -5,99 +7,105 @@
5
7
  # 'rake test' task, since it handles the pre-setup code for you.
6
8
  #####################################################################
7
9
  require 'sys/uptime'
8
- require 'test-unit'
10
+ require 'rspec'
9
11
  require 'socket'
10
12
 
11
- describe Sys::Uptime do
12
- example "version is set to expected value" do
13
- expect(Sys::Uptime::VERSION).to eql('0.7.3')
13
+ RSpec.describe Sys::Uptime do
14
+ let(:plausible_seconds) { ENV['CI'] ? 30 : 120 }
15
+
16
+ example 'version is set to expected value' do
17
+ expect(Sys::Uptime::VERSION).to eql('0.8.0')
14
18
  expect(Sys::Uptime::VERSION.frozen?).to be(true)
15
19
  end
16
20
 
17
- example "seconds method basic functionality" do
18
- expect(Sys::Uptime).to respond_to(:seconds)
19
- expect{ Sys::Uptime.seconds }.not_to raise_error
21
+ example 'constructor is private' do
22
+ expect{ described_class.new }.to raise_error(NoMethodError)
23
+ end
24
+
25
+ example 'seconds method basic functionality' do
26
+ expect(described_class).to respond_to(:seconds)
27
+ expect{ described_class.seconds }.not_to raise_error
20
28
  end
21
29
 
22
- example "seconds method returns a plausible value" do
23
- expect(Sys::Uptime.seconds).to be_kind_of(Integer)
24
- expect(Sys::Uptime.seconds).to be > 300
30
+ example 'seconds method returns a plausible value' do
31
+ expect(described_class.seconds).to be_a(Integer)
32
+ expect(described_class.seconds).to be > plausible_seconds
25
33
  end
26
34
 
27
- example "minutes method basic functionality" do
28
- expect(Sys::Uptime).to respond_to(:minutes)
29
- expect{ Sys::Uptime.minutes }.not_to raise_error
35
+ example 'minutes method basic functionality' do
36
+ expect(described_class).to respond_to(:minutes)
37
+ expect{ described_class.minutes }.not_to raise_error
30
38
  end
31
39
 
32
- example "minutes method returns a plausible value" do
33
- expect(Sys::Uptime.minutes).to be_kind_of(Integer)
34
- expect(Sys::Uptime.minutes).to be > 5
40
+ example 'minutes method returns a plausible value', :unless => ENV.fetch('CI', nil) do
41
+ expect(described_class.minutes).to be_a(Integer)
42
+ expect(described_class.minutes).to be > 3
35
43
  end
36
44
 
37
- example "hours method basic functionality" do
38
- expect(Sys::Uptime).to respond_to(:hours)
39
- expect{ Sys::Uptime.hours }.not_to raise_error
45
+ example 'hours method basic functionality' do
46
+ expect(described_class).to respond_to(:hours)
47
+ expect{ described_class.hours }.not_to raise_error
40
48
  end
41
49
 
42
- example "hours method returns a plausible value" do
43
- expect(Sys::Uptime.hours).to be_kind_of(Integer)
44
- expect(Sys::Uptime.hours).to be > 0
50
+ example 'hours method returns a plausible value' do
51
+ expect(described_class.hours).to be_a(Integer)
52
+ expect(described_class.hours).to be >= 0
45
53
  end
46
54
 
47
- example "days method basic functionality" do
48
- expect(Sys::Uptime).to respond_to(:days)
49
- expect{ Sys::Uptime.days }.not_to raise_error
55
+ example 'days method basic functionality' do
56
+ expect(described_class).to respond_to(:days)
57
+ expect{ described_class.days }.not_to raise_error
50
58
  end
51
59
 
52
- example "days method returns a plausible value" do
53
- expect(Sys::Uptime.days).to be_kind_of(Integer)
54
- expect(Sys::Uptime.days).to be >= 0
60
+ example 'days method returns a plausible value' do
61
+ expect(described_class.days).to be_a(Integer)
62
+ expect(described_class.days).to be >= 0
55
63
  end
56
64
 
57
- example "uptime method basic functionality" do
58
- expect(Sys::Uptime).to respond_to(:uptime)
59
- expect{ Sys::Uptime.uptime }.not_to raise_error
65
+ example 'uptime method basic functionality' do
66
+ expect(described_class).to respond_to(:uptime)
67
+ expect{ described_class.uptime }.not_to raise_error
60
68
  end
61
69
 
62
- example "uptime method returns a non-empty string" do
63
- expect(Sys::Uptime.uptime).to be_kind_of(String)
64
- expect(Sys::Uptime.uptime.empty?).to be(false)
70
+ example 'uptime method returns a non-empty string' do
71
+ expect(described_class.uptime).to be_a(String)
72
+ expect(described_class.uptime.empty?).to be(false)
65
73
  end
66
74
 
67
- example "uptime method does not accept any arguments", :unless => File::ALT_SEPARATOR do
68
- expect{ Sys::Uptime.uptime(1) }.to raise_error(ArgumentError)
75
+ example 'uptime method does not accept any arguments', :unless => File::ALT_SEPARATOR do
76
+ expect{ described_class.uptime(1) }.to raise_error(ArgumentError)
69
77
  end
70
78
 
71
- example "uptime accepts a host name on Windows", :if => File::ALT_SEPARATOR do
72
- expect{ Sys::Uptime.uptime(Socket.gethostname) }.not_to raise_error
79
+ example 'uptime accepts a host name on Windows', :if => File::ALT_SEPARATOR do
80
+ expect{ described_class.uptime(Socket.gethostname) }.not_to raise_error
73
81
  end
74
82
 
75
- example "dhms method basic functionality" do
76
- expect(Sys::Uptime).to respond_to(:dhms)
77
- expect{ Sys::Uptime.dhms }.not_to raise_error
78
- expect(Sys::Uptime.dhms).to be_kind_of(Array)
83
+ example 'dhms method basic functionality' do
84
+ expect(described_class).to respond_to(:dhms)
85
+ expect{ described_class.dhms }.not_to raise_error
86
+ expect(described_class.dhms).to be_a(Array)
79
87
  end
80
88
 
81
- example "dhms method returns an array of four elements" do
82
- expect(Sys::Uptime.dhms).not_to be_empty
83
- expect(Sys::Uptime.dhms.length).to eql(4)
89
+ example 'dhms method returns an array of four elements' do
90
+ expect(described_class.dhms).not_to be_empty
91
+ expect(described_class.dhms.length).to eq(4)
84
92
  end
85
93
 
86
- example "boot_time method basic functionality" do
87
- expect(Sys::Uptime).to respond_to(:boot_time)
88
- expect{ Sys::Uptime.boot_time }.not_to raise_error
94
+ example 'boot_time method basic functionality' do
95
+ expect(described_class).to respond_to(:boot_time)
96
+ expect{ described_class.boot_time }.not_to raise_error
89
97
  end
90
98
 
91
- example "boot_time method returns a Time object" do
92
- expect(Sys::Uptime.boot_time).to be_kind_of(Time)
99
+ example 'boot_time method returns a Time object' do
100
+ expect(described_class.boot_time).to be_a(Time)
93
101
  end
94
102
 
95
- example "Uptime class cannot be instantiated" do
96
- expect{ Sys::Uptime.new }.to raise_error(StandardError)
103
+ example 'Uptime class cannot be instantiated' do
104
+ expect{ described_class.new }.to raise_error(StandardError)
97
105
  end
98
106
 
99
- example "Ensure that ffi functions are private" do
100
- methods = Sys::Uptime.methods(false).map{ |e| e.to_s }
107
+ example 'Ensure that ffi functions are private' do
108
+ methods = described_class.methods(false).map(&:to_s)
101
109
  expect(methods).not_to include('time', 'times')
102
110
  end
103
111
  end
data/sys-uptime.gemspec CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'sys-uptime'
5
- spec.version = '0.7.3'
5
+ spec.version = '0.8.0'
6
6
  spec.author = 'Daniel J. Berger'
7
7
  spec.license = 'Apache-2.0'
8
8
  spec.email = 'djberg96@gmail.com'
@@ -12,16 +12,27 @@ Gem::Specification.new do |spec|
12
12
  spec.files = Dir["**/*"].reject{ |f| f.include?('git') }
13
13
  spec.cert_chain = ['certs/djberg96_pub.pem']
14
14
 
15
- spec.extra_rdoc_files = Dir["*.rdoc"]
16
- spec.add_development_dependency 'rspec', '~> 3'
15
+ if File::ALT_SEPARATOR
16
+ spec.platform = Gem::Platform.new(['universal', 'mingw32'])
17
+ else
18
+ spec.add_dependency('ffi', '~> 1.1')
19
+ end
20
+
21
+ spec.add_development_dependency('rake')
22
+ spec.add_development_dependency('rspec', '~> 3.9')
23
+ spec.add_development_dependency('rubocop')
24
+ spec.add_development_dependency('rubocop-rspec')
17
25
 
18
26
  spec.metadata = {
19
- 'homepage_uri' => 'https://github.com/djberg96/sys-uptime',
20
- 'bug_tracker_uri' => 'https://github.com/djberg96/sys-uptime/issues',
21
- 'changelog_uri' => 'https://github.com/djberg96/sys-uptime/blob/ffi/CHANGES',
22
- 'documentation_uri' => 'https://github.com/djberg96/sys-uptime/wiki',
23
- 'source_code_uri' => 'https://github.com/djberg96/sys-uptime',
24
- 'wiki_uri' => 'https://github.com/djberg96/sys-uptime/wiki'
27
+ 'homepage_uri' => 'https://github.com/djberg96/sys-uptime',
28
+ 'bug_tracker_uri' => 'https://github.com/djberg96/sys-uptime/issues',
29
+ 'changelog_uri' => 'https://github.com/djberg96/sys-uptime/blob/main/CHANGES.md',
30
+ 'documentation_uri' => 'https://github.com/djberg96/sys-uptime/wiki',
31
+ 'source_code_uri' => 'https://github.com/djberg96/sys-uptime',
32
+ 'wiki_uri' => 'https://github.com/djberg96/sys-uptime/wiki',
33
+ 'rubygems_mfa_required' => 'true',
34
+ 'github_repo' => 'https://github.com/djberg96/sys-uptime',
35
+ 'funding_uri' => 'https://github.com/sponsors/djberg96'
25
36
  }
26
37
 
27
38
  spec.description = <<-EOF
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,11 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sys-uptime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.8.0
5
5
  platform: universal-mingw32
6
6
  authors:
7
7
  - Daniel J. Berger
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain:
11
10
  - |
@@ -35,22 +34,64 @@ cert_chain:
35
34
  ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
36
35
  WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
37
36
  -----END CERTIFICATE-----
38
- date:
37
+ date: 1980-01-02 00:00:00.000000000 Z
39
38
  dependencies:
39
+ - !ruby/object:Gem::Dependency
40
+ name: rake
41
+ requirement: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ type: :development
47
+ prerelease: false
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
40
53
  - !ruby/object:Gem::Dependency
41
54
  name: rspec
42
55
  requirement: !ruby/object:Gem::Requirement
43
56
  requirements:
44
57
  - - "~>"
45
58
  - !ruby/object:Gem::Version
46
- version: '3'
59
+ version: '3.9'
47
60
  type: :development
48
61
  prerelease: false
49
62
  version_requirements: !ruby/object:Gem::Requirement
50
63
  requirements:
51
64
  - - "~>"
52
65
  - !ruby/object:Gem::Version
53
- version: '3'
66
+ version: '3.9'
67
+ - !ruby/object:Gem::Dependency
68
+ name: rubocop
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: rubocop-rspec
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
54
95
  description: |2
55
96
  The sys-uptime library is a simple interface for gathering uptime
56
97
  information. You can retrieve data in seconds, minutes, days, hours,
@@ -58,30 +99,20 @@ description: |2
58
99
  email: djberg96@gmail.com
59
100
  executables: []
60
101
  extensions: []
61
- extra_rdoc_files:
62
- - CHANGES.rdoc
63
- - MANIFEST.rdoc
64
- - README.rdoc
102
+ extra_rdoc_files: []
65
103
  files:
66
- - certs
104
+ - CHANGES.md
105
+ - Gemfile
106
+ - LICENSE
107
+ - MANIFEST.md
108
+ - README.md
109
+ - Rakefile
67
110
  - certs/djberg96_pub.pem
68
- - CHANGES.rdoc
69
- - examples
70
111
  - examples/uptime_test.rb
71
- - lib
72
- - lib/sys
73
- - lib/sys/unix
74
- - lib/sys/unix/sys
112
+ - lib/sys-uptime.rb
75
113
  - lib/sys/unix/sys/uptime.rb
76
114
  - lib/sys/uptime.rb
77
- - lib/sys/windows
78
- - lib/sys/windows/sys
79
115
  - lib/sys/windows/sys/uptime.rb
80
- - lib/sys-uptime.rb
81
- - MANIFEST.rdoc
82
- - Rakefile
83
- - README.rdoc
84
- - spec
85
116
  - spec/sys_uptime_spec.rb
86
117
  - sys-uptime.gemspec
87
118
  homepage: https://github.com/djberg96/sys-uptime
@@ -90,11 +121,13 @@ licenses:
90
121
  metadata:
91
122
  homepage_uri: https://github.com/djberg96/sys-uptime
92
123
  bug_tracker_uri: https://github.com/djberg96/sys-uptime/issues
93
- changelog_uri: https://github.com/djberg96/sys-uptime/blob/ffi/CHANGES
124
+ changelog_uri: https://github.com/djberg96/sys-uptime/blob/main/CHANGES.md
94
125
  documentation_uri: https://github.com/djberg96/sys-uptime/wiki
95
126
  source_code_uri: https://github.com/djberg96/sys-uptime
96
127
  wiki_uri: https://github.com/djberg96/sys-uptime/wiki
97
- post_install_message:
128
+ rubygems_mfa_required: 'true'
129
+ github_repo: https://github.com/djberg96/sys-uptime
130
+ funding_uri: https://github.com/sponsors/djberg96
98
131
  rdoc_options: []
99
132
  require_paths:
100
133
  - lib
@@ -109,8 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
142
  - !ruby/object:Gem::Version
110
143
  version: '0'
111
144
  requirements: []
112
- rubygems_version: 3.0.3
113
- signing_key:
145
+ rubygems_version: 3.6.9
114
146
  specification_version: 4
115
147
  summary: A Ruby interface for getting system uptime information.
116
148
  test_files:
metadata.gz.sig CHANGED
Binary file