linux_stat 0.3.1 → 0.3.3

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: 918383341aa375e1414e08c13b38829373caa174c64769541955180ce9d6e09c
4
- data.tar.gz: b821c81eee9bf5c9061057ab653e336adbbeaacf51d9b4141e6a1d72073058b6
3
+ metadata.gz: a392f3c04781b05bb96636a882b6e69143bef15befb094f980c7b542923e0649
4
+ data.tar.gz: 4ef67fa10ab4210090790b368852cac7deee99965560b201f136f0cd093e9a87
5
5
  SHA512:
6
- metadata.gz: 580b5af4a00f4b2078e2d7cf9e249ba9648a5ab5965fe26c15f73c0cb843eeae6470e00d28fb096100f7b5445e47fcdce354c713c3aff4139fcb8a53221d68f0
7
- data.tar.gz: 6ebaa17fd1aaf45910a297df8b992e495e3f8c594c2b69181bdd1c9536bb2be40a8ad4fb569f4be076aac1eaf70fc0d86d7930eedde79615db6ffcfcb498dc50
6
+ metadata.gz: 816e423f9a22797022d87a347dbcde20277d0b1d6fa8cc90001367cbdf2012e625400c2a659bbbd308fcf58363c19f2af88ec39d5bcc1fa04ccd4f61d77371b7
7
+ data.tar.gz: dfae97ea5bd4ef7c0daa4c784d7d951b915121753d8b61363624aaaa12e9559968e623638004accb8438a77b820913e726856e166bd437f1073047b936a83ba1
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # LinuxStat
2
- ![logo](https://raw.githubusercontent.com/Souravgoswami/linux_stat/master/logo/logo.jpg)
2
+ ![logo](https://raw.githubusercontent.com/Souravgoswami/linux_stat/master/images/logo.jpg)
3
3
 
4
4
  For reading the HTML version, visit [linux_stat](https://souravgoswami.github.io/linux_stat/).
5
5
 
@@ -312,18 +312,23 @@ If some error is *raised* it should be reported as a bug.
312
312
  1. Just add `gem linux_stat`:
313
313
 
314
314
  ```
315
- bundle add linux_stat
315
+ $ bundle add linux_stat
316
316
  ```
317
317
 
318
318
  You can use LinuxStat directly in rails.
319
319
 
320
- ![RailsApp](https://raw.githubusercontent.com/Souravgoswami/linux_stat/master/logo/rails.gif)
320
+ ![RailsApp](https://raw.githubusercontent.com/Souravgoswami/linux_stat/master/images/rails.gif)
321
321
 
322
- Don't need to worry about versions if you are using anything > 0.2.1.
323
322
 
324
- Newer versions will have bug fixes, performance improvements and new features but the return types of old methods will always be the same across upgrades > 0.2.1.
323
+ ## Android
325
324
 
326
- Even if we remove something, there will be always a deprecation warning for some months or for even a year before we actually remove it.
325
+ LinuxStat does support Android OS. But it's not rigorously tested on all device like android apps.
326
+
327
+ But in Termux you can just run LinuxStat without facing issues.
328
+
329
+ ![termux](https://raw.githubusercontent.com/Souravgoswami/linux_stat/master/images/termux.webp)
330
+
331
+ Issues regarding running LinuxStat on termux are also welcomed.
327
332
 
328
333
  ## Development
329
334
 
@@ -1,5 +1,7 @@
1
1
  #include <sys/statvfs.h>
2
2
  #include "ruby.h"
3
+ #pragma GCC optimize ("O3")
4
+ #pragma clang optimize on
3
5
 
4
6
  static VALUE statfs(VALUE obj, VALUE dir) {
5
7
  struct statvfs buf ;
@@ -8,16 +10,16 @@ static VALUE statfs(VALUE obj, VALUE dir) {
8
10
 
9
11
  if(statvfs(d, &buf) < 0) return hash ;
10
12
 
11
- rb_hash_aset(hash, ID2SYM(rb_intern("block_size")), INT2NUM(buf.f_bsize)) ;
12
- rb_hash_aset(hash, ID2SYM(rb_intern("fragment_size")), INT2NUM(buf.f_frsize)) ;
13
- rb_hash_aset(hash, ID2SYM(rb_intern("blocks")), INT2NUM(buf.f_blocks)) ;
14
- rb_hash_aset(hash, ID2SYM(rb_intern("block_free")), INT2NUM(buf.f_bfree)) ;
15
- rb_hash_aset(hash, ID2SYM(rb_intern("block_avail_unpriv")), INT2NUM(buf.f_bavail)) ;
16
- rb_hash_aset(hash, ID2SYM(rb_intern("inodes")), INT2NUM(buf.f_files)) ;
17
- rb_hash_aset(hash, ID2SYM(rb_intern("free_inodes")), INT2NUM(buf.f_ffree)) ;
18
- rb_hash_aset(hash, ID2SYM(rb_intern("filesystem_id")), INT2NUM(buf.f_fsid)) ;
19
- rb_hash_aset(hash, ID2SYM(rb_intern("mount_flags")), INT2NUM(buf.f_flag)) ;
20
- rb_hash_aset(hash, ID2SYM(rb_intern("max_filename_length")), INT2NUM(buf.f_namemax)) ;
13
+ rb_hash_aset(hash, ID2SYM(rb_intern("block_size")), INT2FIX(buf.f_bsize)) ;
14
+ rb_hash_aset(hash, ID2SYM(rb_intern("fragment_size")), INT2FIX(buf.f_frsize)) ;
15
+ rb_hash_aset(hash, ID2SYM(rb_intern("blocks")), INT2FIX(buf.f_blocks)) ;
16
+ rb_hash_aset(hash, ID2SYM(rb_intern("block_free")), INT2FIX(buf.f_bfree)) ;
17
+ rb_hash_aset(hash, ID2SYM(rb_intern("block_avail_unpriv")), INT2FIX(buf.f_bavail)) ;
18
+ rb_hash_aset(hash, ID2SYM(rb_intern("inodes")), INT2FIX(buf.f_files)) ;
19
+ rb_hash_aset(hash, ID2SYM(rb_intern("free_inodes")), INT2FIX(buf.f_ffree)) ;
20
+ rb_hash_aset(hash, ID2SYM(rb_intern("filesystem_id")), INT2FIX(buf.f_fsid)) ;
21
+ rb_hash_aset(hash, ID2SYM(rb_intern("mount_flags")), INT2FIX(buf.f_flag)) ;
22
+ rb_hash_aset(hash, ID2SYM(rb_intern("max_filename_length")), INT2FIX(buf.f_namemax)) ;
21
23
 
22
24
  return hash ;
23
25
  }
@@ -0,0 +1,7 @@
1
+ require 'mkmf'
2
+
3
+ unless (have_header('sys/utsname.h') && have_header('ruby.h'))
4
+ abort('Missing header')
5
+ end
6
+
7
+ create_makefile 'linux_stat/utsname'
@@ -0,0 +1,29 @@
1
+ #include <sys/utsname.h>
2
+ #include "ruby.h"
3
+ #pragma GCC optimize ("O3")
4
+ #pragma clang optimize on
5
+
6
+ static struct utsname buf ;
7
+ static short status ;
8
+
9
+ void init_buf() {
10
+ status = uname(&buf) ;
11
+ }
12
+
13
+ static VALUE getMachine(VALUE obj) {
14
+ VALUE machine = status < 0 ? rb_str_new_cstr("") : rb_str_new_cstr(buf.machine) ;
15
+ return machine ;
16
+ }
17
+
18
+ static VALUE getNodename(VALUE obj) {
19
+ VALUE nodename = status < 0 ? rb_str_new_cstr("") : rb_str_new_cstr(buf.nodename) ;
20
+ return nodename ;
21
+ }
22
+
23
+ void Init_utsname() {
24
+ init_buf() ;
25
+
26
+ VALUE _uname = rb_define_module("Uname") ;
27
+ rb_define_module_function(_uname, "machine", getMachine, 0) ;
28
+ rb_define_module_function(_uname, "nodename", getNodename, 0) ;
29
+ }
@@ -1,8 +1,6 @@
1
- # require 'linux_stat/fs_stat'
2
-
3
1
  module LinuxStat
4
2
  module Filesystem
5
- extend FS
3
+ prepend FS
6
4
 
7
5
  class << self
8
6
  # stat(fs = '/')
@@ -29,7 +27,7 @@ module LinuxStat
29
27
  }
30
28
  end
31
29
 
32
- # stat(fs = '/')
30
+ # total(fs = '/')
33
31
  # Where fs is the directory of the file system (like / or /tmp/ or /run/media/thumbdrive).
34
32
  # It returns the total size of a given disk in bytes.
35
33
  #
@@ -41,7 +39,7 @@ module LinuxStat
41
39
  s[:block_size] * s[:blocks]
42
40
  end
43
41
 
44
- # stat(fs = '/')
42
+ # free(fs = '/')
45
43
  # Where fs is the directory of the file system (like / or /tmp/ or /run/media/thumbdrive).
46
44
  # It returns the total free space in a disk in bytes.
47
45
  # It is to be noted that free is not same as available.
@@ -55,7 +53,7 @@ module LinuxStat
55
53
  s[:block_size] * s[:block_free]
56
54
  end
57
55
 
58
- # stat(fs = '/')
56
+ # used(fs = '/')
59
57
  # Where fs is the directory of the file system (like / or /tmp/ or /run/media/thumbdrive).
60
58
  # It returns the used space of a given disk in bytes.
61
59
  #
@@ -67,7 +65,7 @@ module LinuxStat
67
65
  s[:blocks].-(s[:block_free]) * s[:block_size]
68
66
  end
69
67
 
70
- # stat(fs = '/')
68
+ # available(fs = '/')
71
69
  # Where fs is the directory of the file system (like / or /tmp/ or /run/media/thumbdrive).
72
70
  # It returns the total free space in a disk in bytes.
73
71
  # It is to be noted that free is not same as available.
@@ -81,7 +79,7 @@ module LinuxStat
81
79
  s[:block_size] * s[:block_avail_unpriv]
82
80
  end
83
81
 
84
- # stat(fs = '/')
82
+ # stat_raw(fs = '/')
85
83
  # Where fs is the directory of the file system (like / or /tmp/ or /run/media/thumbdrive).
86
84
  #
87
85
  # It returns a Hash with the following data (for example):
@@ -133,6 +133,8 @@ module LinuxStat
133
133
  end
134
134
  end
135
135
 
136
+ alias release version
137
+
136
138
  # Reads maximum 1024 bytes from /proc/version and returns the string.
137
139
  # The output is also cached ; as changing the value in runtime is unexpected.
138
140
  def string
data/lib/linux_stat/os.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  module LinuxStat
2
2
  module OS
3
+ prepend Uname
4
+
3
5
  class << self
4
6
  # Reads /etc/os-release and returns a Hash. For example:
5
7
  # {:NAME=>"Arch Linux", :PRETTY_NAME=>"Arch Linux", :ID=>"arch", :BUILD_ID=>"rolling", :ANSI_COLOR=>"38;2;23;147;209", :HOME_URL=>"https://www.archlinux.org/", :DOCUMENTATION_URL=>"https://wiki.archlinux.org/", :SUPPORT_URL=>"https://bbs.archlinux.org/", :BUG_REPORT_URL=>"https://bugs.archlinux.org/", :LOGO=>"archlinux"}
@@ -51,6 +53,18 @@ module LinuxStat
51
53
  end
52
54
  end
53
55
 
56
+ # Uses utsname.h to determine the machine
57
+ # It returns a String but if the info isn't available, it will return an empty String
58
+ def machine
59
+ @@machine ||= Uname.machine
60
+ end
61
+
62
+ # Uses utsname.h to determine the system nodename
63
+ # It returns String but if the info isn't available, it will return an empty String
64
+ def nodename
65
+ @@nodename ||= Uname.nodename
66
+ end
67
+
54
68
  # Reads /etc/hostname and returns the hostname.
55
69
  # The return type is String.
56
70
  # If the info info isn't available, it will return 'localhost'.
@@ -62,10 +76,13 @@ module LinuxStat
62
76
  end
63
77
  end
64
78
 
65
- # Reads ruby configuration and tries to guess if the system is 32 bit or 64 bit.
66
- # The return type is Integer.
79
+ # Reads ruby configuration and tries to guess if the system is 64 bit.
80
+ # If it fails then it runs utsname.h to guess the machine.
81
+ # It the machine is 64 bits, it will return 64, else it returns 32.
82
+ #
83
+ # The return type is strictly Integer and doesn't fail.
67
84
  def bits
68
- @@bits ||= if RbConfig::CONFIG['host_cpu'].end_with?('64') || RUBY_PLATFORM[/x86_64/]
85
+ @@bits ||= if RbConfig::CONFIG['host_cpu'].end_with?('64') || RUBY_PLATFORM.end_with?('64') || machine.end_with?('64')
69
86
  64
70
87
  else
71
88
  32
@@ -1,3 +1,3 @@
1
1
  module LinuxStat
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.3"
3
3
  end
data/lib/linux_stat.rb CHANGED
@@ -5,9 +5,13 @@ require "linux_stat/cpu"
5
5
  require "linux_stat/kernel"
6
6
  require "linux_stat/memory"
7
7
  require "linux_stat/net"
8
+
9
+ require 'linux_stat/utsname'
8
10
  require "linux_stat/os"
11
+
9
12
  require "linux_stat/process"
10
13
  require "linux_stat/swap"
11
14
  require "linux_stat/mounts"
15
+
12
16
  require "linux_stat/fs_stat"
13
17
  require "linux_stat/filesystem"
metadata CHANGED
@@ -1,20 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linux_stat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sourav Goswami
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-01 00:00:00.000000000 Z
11
+ date: 2020-12-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Efficient linux system reporting gem. Linux Only | Efficient | Reliable
14
14
  email:
15
15
  - souravgoswami@protonmail.com
16
16
  executables: []
17
17
  extensions:
18
+ - ext/utsname/extconf.rb
18
19
  - ext/fs_stat/extconf.rb
19
20
  extra_rdoc_files:
20
21
  - README.md
@@ -25,6 +26,8 @@ files:
25
26
  - bin/setup
26
27
  - ext/fs_stat/extconf.rb
27
28
  - ext/fs_stat/fs_stat.c
29
+ - ext/utsname/extconf.rb
30
+ - ext/utsname/utsname.c
28
31
  - lib/linux_stat.rb
29
32
  - lib/linux_stat/battery.rb
30
33
  - lib/linux_stat/bios.rb