os-1.1.4/0000755000004100000410000000000014166457431012201 5ustar www-datawww-dataos-1.1.4/Gemfile.lock0000644000004100000410000000047114166457431014425 0ustar www-datawww-dataPATH remote: . specs: os (1.0.1) GEM remote: http://rubygems.org/ specs: diff-lcs (1.1.3) power_assert (1.0.2) rake (0.9.6) test-unit (3.2.3) power_assert PLATFORMS ruby x86-mingw32 DEPENDENCIES rake (~> 0.8) rspec (~> 2.5.0) test-unit (~> 3) BUNDLED WITH 2.1.4 os-1.1.4/README.md0000644000004100000410000000504414166457431013463 0ustar www-datawww-dataThe OS gem allows for some easy telling if you're on windows or not. ```ruby require 'os' >> OS.windows? => true # or OS.doze? >> OS.bits => 32 >> OS.java? => true # if you're running in jruby. Also OS.jruby? >> OS.ruby_bin => "c:\ruby18\bin\ruby.exe" # or "/usr/local/bin/ruby" or what not >> OS.posix? => false # true for linux, os x, cygwin >> OS.mac? # or OS.osx? or OS.x? => false >> OS.dev_null => "NUL" # or "/dev/null" depending on which platform >> OS.rss_bytes => 12300033 # number of rss bytes this process is using currently. Basically "total in memory footprint" (doesn't include RAM used by the process that's in swap/page file) >> puts OS.report ==> # a yaml report of helpful values --- arch: x86_64-darwin10.6.0 target_os: darwin10.6.0 target_vendor: apple target_cpu: x86_64 target: x86_64-apple-darwin10.6.0 host_os: darwin10.6.0 host_vendor: apple host_cpu: i386 host: i386-apple-darwin10.6.0 RUBY_PLATFORM: x86_64-darwin10.6.0 >> OS.cpu_count => 2 # number of cores, doesn't include hyper-threaded cores. >> OS.open_file_command => "start" # or open on mac, or xdg-open on linux (all designed to open a file) >> OS::Underlying.windows? => true # true for cygwin or MRI, whereas OS.windows? is false for cygwin >> OS::Underlying.bsd? => true # true for OS X >> OS::Underlying.docker? => false # true if running inside a Docker container >> pp OS.parse_os_release ==> # A hash of details on the current Linux distro (or an exception if not Linux) {:NAME=>"Ubuntu", :VERSION=>"18.04.4 LTS (Bionic Beaver)", :ID=>"ubuntu", :ID_LIKE=>"debian", :PRETTY_NAME=>"Ubuntu 18.04.4 LTS", :VERSION_ID=>"18.04", :HOME_URL=>"https://www.ubuntu.com/", :SUPPORT_URL=>"https://help.ubuntu.com/", :BUG_REPORT_URL=>"https://bugs.launchpad.net/ubuntu/", :PRIVACY_POLICY_URL=> "https://www.ubuntu.com/legal/terms-and-policies/privacy-policy", :VERSION_CODENAME=>"bionic", :UBUNTU_CODENAME=>"bionic"} ``` If there are any other features you'd like, let me know, I'll do what I can to add them :) http://github.com/rdp/os for feedback et al Related projects: rubygems: ```ruby Gem::Platform.local Gem.ruby ``` The reason Gem::Platform.local felt wrong to me is that it treated cygwin as windows--which for most build environments, is wrong. Hence the creation of this gem. the facets gem (has a class similar to rubygems, above) ```ruby require 'facets/platform' Platform.local ``` the ["platform" gem](http://rubydoc.info/github/ffi/ffi/master/FFI/Platform), itself (a different gem) ```ruby FFI::Platform::OS ``` License: MIT (see LICENSE file) os-1.1.4/spec/0000755000004100000410000000000014166457431013133 5ustar www-datawww-dataos-1.1.4/spec/osx_spec.rb0000644000004100000410000000144614166457431015310 0ustar www-datawww-datarequire File.expand_path('spec_helper.rb', File.dirname(__FILE__)) describe 'For OSX (Snow Leopard, 10.6),' do before(:each) do ENV.stub!(:[]).with('OS').and_return(nil) # Issues stubbing RUBY_PLATFORM, using RbConfig instead. # Kernel.stub!(:RUBY_PLATFORM => "x86_64-darwin10.6") RbConfig::CONFIG.stub!(:[]).with('host_os').and_return("darwin10.6.0") RbConfig::CONFIG.stub!(:[]).with('host_cpu').and_return('i386') end describe OS do subject { OS } # class, not instance it { should be_mac } it { should be_x } # OS.x? it { should be_osx } it { should be_posix } it { should_not be_windows } end describe OS::Underlying do subject { OS::Underlying } # class, not instance it { should be_bsd } it { should_not be_windows } end end os-1.1.4/spec/linux_spec.rb0000644000004100000410000000226214166457431015633 0ustar www-datawww-datarequire 'rubygems' if RUBY_VERSION < '1.9.0' require File.dirname(__FILE__) + '/../lib/os.rb' # load before sane to avoid sane being able to requir the gemified version... require 'rspec' # rspec2 describe 'For Linux, (Ubuntu, Ubuntu 10.04 LTS) ' do before(:each) do ENV.should_receive(:[]).with('OS').any_number_of_times.and_return() ## Having difficulties finding a stub for RUBY_PLATFORM # Looking into something like: http://stackoverflow.com/questions/1698335/can-i-use-rspec-mocks-to-stub-out-version-constants # For now, simply using RbConfig::CONFIG # Kernel.stub!(:const_get).with('RUBY_PLATFORM').and_return("i686-linux") RbConfig::CONFIG.stub!(:[]).with('host_os').and_return('linux_gnu') RbConfig::CONFIG.stub!(:[]).with('host_cpu').and_return('i686') end describe OS do subject { OS } # class, not instance it { should be_linux } it { should be_posix } it { should_not be_mac } it { should_not be_osx } it { should_not be_windows } end describe OS::Underlying do subject { OS::Underlying } # class, not instance it { should be_linux } it { should_not be_bsd } it { should_not be_windows } end end os-1.1.4/spec/os_spec.rb0000644000004100000410000001246114166457431015117 0ustar www-datawww-datarequire File.expand_path('spec_helper.rb', File.dirname(__FILE__)) describe "OS" do it "identifies whether windows? or posix?" do if ENV['OS'] == 'Windows_NT' unless RUBY_PLATFORM =~ /cygwin/ assert OS.windows? == true assert OS.doze? == true assert OS.posix? == false # can fail in error at times...I guess because some other spec has reset ENV on us... else assert OS::Underlying.windows? assert OS.windows? == false assert OS.posix? == true end assert OS::Underlying.windows? elsif [/linux/, /darwin/].any? {|posix_pattern| (RbConfig::CONFIG["host_os"] =~ posix_pattern) || RUBY_PLATFORM =~ posix_pattern } assert OS.windows? == false assert OS.posix? == true assert !OS::Underlying.windows? else pending "create test" end end it "has a bits method" do if RUBY_PLATFORM =~ /mingw32/ assert OS.bits == 32 elsif RUBY_PLATFORM =~ /64/ # linux... assert OS.bits == 64 elsif RUBY_PLATFORM =~ /i686/ assert OS.bits == 32 elsif RUBY_PLATFORM =~ /java/ && RbConfig::CONFIG['host_os'] =~ /32$/ assert OS.bits == 32 elsif RUBY_PLATFORM =~ /java/ && RbConfig::CONFIG['host_cpu'] =~ /i386/ assert OS.bits == 32 elsif RUBY_PLATFORM =~ /i386/ assert OS.bits == 32 else pending "os bits not tested!" + RUBY_PLATFORM + ' ' + RbConfig::CONFIG['host_os'] end end it "should have an iron_ruby method" do if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'ironruby' assert OS.iron_ruby? == true else assert OS.iron_ruby? == false end end it "should know if you're on java" do if RUBY_PLATFORM == 'java' assert OS.java? == true # must be [true | false] else assert OS.java? == false end end it "should have a ruby_bin method" do if OS.windows? assert OS.ruby_bin.include?('.exe') if OS.iron_ruby? assert OS.ruby_bin.include?('ir.exe') else assert OS.ruby_bin.include?('ruby.exe') end else assert OS.ruby_bin.include?('ruby') && OS.ruby_bin.include?('/') end if OS.java? assert OS.ruby_bin.include?('jruby') # I think end end it "should have a cygwin? method" do if RUBY_PLATFORM =~ /cygwin/ assert OS.cygwin? == true else assert OS.cygwin? == false end end it "should have a functional mac? method" do if RUBY_PLATFORM =~ /darwin/ assert OS.mac? == true else if OS.host_os == 'darwin' assert OS.mac? == true else assert OS.mac? == false end end end it "should have a way to get rss_bytes on each platform" do bytes = OS.rss_bytes assert bytes > 0 # should always be true assert bytes.is_a?(Numeric) # don't want strings from any platform... end it "should tell you what the right /dev/null is" do if OS.windows? OS.dev_null.should == "NUL" else OS.dev_null.should == "/dev/null" end end it "should have a jruby method" do if defined?(RUBY_DESCRIPTION) && RUBY_DESCRIPTION =~ /^(jruby|java)/ assert OS.jruby? else assert !OS.jruby? end end it "has working cpu count method" do cpu_count = OS.cpu_count assert cpu_count >= 1 assert (cpu_count & (cpu_count - 1)) == 0 # CPU count is normally a power of 2 end it "has working cpu count method with no env. variable" do OS.instance_variable_set(:@cpu_count, nil) # reset it if OS.windows? ENV.delete('NUMBER_OF_PROCESSORS') assert OS.cpu_count >= 1 end end it "should have a start/open command helper" do if OS.doze? assert OS.open_file_command == "start" elsif OS.mac? assert OS.open_file_command == "open" else assert OS.open_file_command == "xdg-open" end end it "should provide a path to directory for application config" do ENV.stub(:[]) if OS.mac? ENV.stub(:[]).with('HOME').and_return('/home/user') assert OS.app_config_path('appname') == '/home/xdg/Library/Application Support/appname' elsif OS.doze? # TODO else ENV.stub(:[]).with('HOME').and_return('/home/user') assert OS.app_config_path('appname') == '/home/user/.config/appname' ENV.stub(:[]).with('XDG_CONFIG_HOME').and_return('/home/xdg/.config') assert OS.app_config_path('appname') == '/home/xdg/.config/appname' end end it "should have a freebsd? method" do if OS.host_os =~ /freebsd/ assert OS.freebsd? == true else assert OS.freebsd? == false end end end describe OS, "provides access to to underlying config values" do describe "#config, supplys the CONFIG hash" do subject { OS.config } specify { subject.should be_a(Hash) } it "should supply 'host_cpu'" do subject['host_cpu'].should eq(RbConfig::CONFIG['host_cpu']) end it "should supply 'host_os'" do subject['host_os'].should eq(RbConfig::CONFIG['host_os']) end end describe "by providing a delegate method for relevant keys in RbConfig::CONFIG" do %w(host host_cpu host_os).sort.each do |config_key| it "should delegate '#{config_key}'" do expected = "TEST #{config_key}" RbConfig::CONFIG.should_receive(:[]).with(config_key).and_return(expected) OS.send(config_key).should == expected end end end end os-1.1.4/spec/spec_helper.rb0000644000004100000410000000040514166457431015750 0ustar www-datawww-datarequire 'rubygems' if RUBY_VERSION < '1.9.0' require File.expand_path('../lib/os.rb', File.dirname(__FILE__)) require 'rspec' # rspec2 require 'rspec/autorun' RSpec.configure do |config| config.expect_with :rspec, :stdlib # enable `should` OR `assert` end os-1.1.4/LICENSE0000644000004100000410000000207214166457431013207 0ustar www-datawww-dataThe MIT License (MIT) Copyright (c) 2012 Roger Pack Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.os-1.1.4/os.gemspec0000644000004100000410000000374714166457431014202 0ustar www-datawww-data# Generated by jeweler # DO NOT EDIT THIS FILE DIRECTLY # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec' # -*- encoding: utf-8 -*- # stub: os 1.1.4 ruby lib Gem::Specification.new do |s| s.name = "os".freeze s.version = "1.1.4" s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= s.require_paths = ["lib".freeze] s.authors = ["rdp".freeze, "David McCullars".freeze] s.date = "2021-11-07" s.description = "The OS gem allows for some useful and easy functions, like OS.windows? (=> true or false) OS.bits ( => 32 or 64) etc\"".freeze s.email = "rogerpack2005@gmail.com".freeze s.extra_rdoc_files = [ "ChangeLog", "LICENSE", "README.md" ] s.files = [ ".autotest", ".document", "ChangeLog", "Gemfile", "Gemfile.lock", "LICENSE", "README.md", "Rakefile", "VERSION", "autotest/discover.rb", "lib/os.rb", "os.gemspec", "spec/linux_spec.rb", "spec/os_spec.rb", "spec/osx_spec.rb", "spec/spec_helper.rb" ] s.homepage = "http://github.com/rdp/os".freeze s.licenses = ["MIT".freeze] s.rubygems_version = "2.7.6".freeze s.summary = "Simple and easy way to know if you're on windows or not (reliably), as well as how many bits the OS is, etc.".freeze if s.respond_to? :specification_version then s.specification_version = 4 if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then s.add_development_dependency(%q.freeze, ["~> 0.8"]) s.add_development_dependency(%q.freeze, ["~> 3"]) s.add_development_dependency(%q.freeze, [">= 2.0"]) else s.add_dependency(%q.freeze, ["~> 0.8"]) s.add_dependency(%q.freeze, ["~> 3"]) s.add_dependency(%q.freeze, [">= 2.0"]) end else s.add_dependency(%q.freeze, ["~> 0.8"]) s.add_dependency(%q.freeze, ["~> 3"]) s.add_dependency(%q.freeze, [">= 2.0"]) end end os-1.1.4/.document0000644000004100000410000000007414166457431014021 0ustar www-datawww-dataREADME.rdoc lib/**/*.rb bin/* features/**/*.feature LICENSE os-1.1.4/.autotest0000644000004100000410000000076514166457431014062 0ustar www-datawww-data# autotest config for rspec # see: https://github.com/rspec/rspec/wiki/autotest Autotest.add_hook(:initialize) {|at| at.add_exception %r{^\.git} # ignore Version Control System at.add_exception %r{^pkg} # ignore gem pkg dir # at.add_exception %r{^./tmp} # ignore temp files, lest autotest will run again, and again... # at.clear_mappings # take out the default (test/test*rb) ## include specs at.add_mapping(%r{^lib/.*\.rb$}) {|f, _| Dir['spec/**/*_spec.rb'] } nil } os-1.1.4/Rakefile0000644000004100000410000000250214166457431013645 0ustar www-datawww-datarequire 'rubygems' if RUBY_VERSION < '1.9.0' # HOW TO DEPLOY # bump VERSION file manually # rake release seems all messed up, doesn't publish it anyway... # Don't forget to run rake gemspec with each release! ... I think... # then manually edit os.gemspec remove duplicatee rspecs, circular dependency on os? HUH? # # then gem build os.gemspec # rake build doesn't work??? # sooo... # ...gem push os-1.1.2.gem begin require 'jeweler' Jeweler::Tasks.new do |gem| gem.name = "os" gem.summary = %Q{Simple and easy way to know if you're on windows or not (reliably), as well as how many bits the OS is, etc.} gem.description = %Q{The OS gem allows for some useful and easy functions, like OS.windows? (=> true or false) OS.bits ( => 32 or 64) etc"} gem.email = "rogerpack2005@gmail.com" gem.homepage = "http://github.com/rdp/os" gem.authors = ["rdp", "David McCullars"] gem.license = "MIT" # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings # gem.add_development_dependency "fast_require" # gem.add_development_dependency "rspec", ">= 2.0" end rescue LoadError => e puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler #{e}" end require 'rspec/core/rake_task' RSpec::Core::RakeTask.new(:spec) task :default => :spec os-1.1.4/lib/0000755000004100000410000000000014166457431012747 5ustar www-datawww-dataos-1.1.4/lib/os.rb0000644000004100000410000001637714166457431013733 0ustar www-datawww-datarequire 'rbconfig' require 'yaml' # a set of friendly files for determining your Ruby runtime # treats cygwin as linux # also treats IronRuby on mono as...linux class OS attr_reader :config def self.config @config ||= RbConfig::CONFIG end # true if on windows [and/or jruby] # false if on linux or cygwin on windows def self.windows? @windows ||= begin if RUBY_PLATFORM =~ /cygwin/ # i386-cygwin false elsif ENV['OS'] == 'Windows_NT' true else false end end end # true for linux, os x, cygwin def self.posix? @posix ||= begin if OS.windows? begin begin # what if we're on interix... # untested, of course Process.wait fork{} true rescue NotImplementedError, NoMethodError false end end else # assume non windows is posix true end end end # true for linux, false for windows, os x, cygwin def self.linux? if (host_os =~ /linux/) true else false end end def self.freebsd? if (host_os =~ /freebsd/) true else false end end def self.iron_ruby? @iron_ruby ||= begin if defined?(RUBY_ENGINE) && (RUBY_ENGINE == 'ironruby') true else false end end end def self.bits @bits ||= begin if host_cpu =~ /_64$/ || RUBY_PLATFORM =~ /x86_64/ 64 elsif RUBY_PLATFORM == 'java' && ENV_JAVA['sun.arch.data.model'] # "32" or "64":http://www.ruby-forum.com/topic/202173#880613 ENV_JAVA['sun.arch.data.model'].to_i elsif host_cpu == 'i386' 32 elsif host_os =~ /32$/ # mingw32, mswin32 32 else # cygwin only...I think if 1.size == 8 64 else 32 end end end end def self.java? @java ||= begin if RUBY_PLATFORM =~ /java/ true else false end end end def self.ruby_bin @ruby_exe ||= begin File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT'] end end def self.mac? @mac = begin if host_os =~ /darwin/ true else false end end end def self.osx? mac? end def self.x? mac? end # amount of memory the current process "is using", in RAM # (doesn't include any swap memory that it may be using, just that in actual RAM) # raises 'unknown' on jruby currently def self.rss_bytes # attempt to do this in a jruby friendly way if OS::Underlying.windows? # MRI, Java, IronRuby, Cygwin if OS.java? # no win32ole on 1.5.x, so leave here for compatibility...maybe for awhile :P require 'java' mem_bean = java.lang.management.ManagementFactory.getMemoryMXBean mem_bean.heap_memory_usage.used + mem_bean.non_heap_memory_usage.used else wmi = nil begin require 'win32ole' wmi = WIN32OLE.connect("winmgmts://") rescue LoadError, NoMethodError => e # NoMethod for IronRuby currently [sigh] raise 'rss unknown for this platform ' + e.to_s end processes = wmi.ExecQuery("select * from win32_process where ProcessId = #{Process.pid}") memory_used = nil # only allow for one process... for process in processes raise "multiple processes same pid?" if memory_used memory_used = process.WorkingSetSize.to_i end memory_used end elsif OS.posix? # linux [though I've heard it works in OS X] `ps -o rss= -p #{Process.pid}`.to_i * 1024 # in kiloBytes else raise 'unknown rss for this platform' end end class Underlying def self.bsd? OS.osx? end def self.windows? ENV['OS'] == 'Windows_NT' end def self.linux? OS.host_os =~ /linux/ ? true : false end def self.docker? system('grep -q docker /proc/self/cgroup') if OS.linux? end end def self.cygwin? @cygwin = begin if RUBY_PLATFORM =~ /-cygwin/ true else false end end end def self.dev_null # File::NULL in 1.9.3+ @dev_null ||= begin if OS.windows? "NUL" else "/dev/null" end end end # provides easy way to see the relevant config entries def self.report relevant_keys = [ 'arch', 'host', 'host_cpu', 'host_os', 'host_vendor', 'target', 'target_cpu', 'target_os', 'target_vendor', ] RbConfig::CONFIG.reject {|key, val| !relevant_keys.include? key }.merge({'RUBY_PLATFORM' => RUBY_PLATFORM}).to_yaml end def self.cpu_count @cpu_count ||= case RUBY_PLATFORM when /darwin9/ `hwprefs cpu_count`.to_i when /darwin10/ (hwprefs_available? ? `hwprefs thread_count` : `sysctl -n hw.ncpu`).to_i when /linux/ `cat /proc/cpuinfo | grep processor | wc -l`.to_i when /freebsd/ `sysctl -n hw.ncpu`.to_i else if RbConfig::CONFIG['host_os'] =~ /darwin/ (hwprefs_available? ? `hwprefs thread_count` : `sysctl -n hw.ncpu`).to_i elsif self.windows? # ENV counts hyper threaded...not good. # out = ENV['NUMBER_OF_PROCESSORS'].to_i require 'win32ole' wmi = WIN32OLE.connect("winmgmts://") cpu = wmi.ExecQuery("select NumberOfCores from Win32_Processor") # don't count hyper-threaded in this cpu.to_enum.first.NumberOfCores else raise 'unknown platform processor_count' end end end def self.open_file_command if OS.doze? || OS.cygwin? "start" elsif OS.mac? "open" else # linux...what about cygwin? "xdg-open" end end def self.app_config_path(name) if OS.doze? if ENV['LOCALAPPDATA'] return File.join(ENV['LOCALAPPDATA'], name) end File.join ENV['USERPROFILE'], 'Local Settings', 'Application Data', name elsif OS.mac? File.join ENV['HOME'], 'Library', 'Application Support', name else if ENV['XDG_CONFIG_HOME'] return File.join(ENV['XDG_CONFIG_HOME'], name) end File.join ENV['HOME'], '.config', name end end def self.parse_os_release if OS.linux? && File.exist?('/etc/os-release') output = {} File.read('/etc/os-release').each_line do |line| parsed_line = line.chomp.tr('"', '').split('=') next if parsed_line.empty? output[parsed_line[0].to_sym] = parsed_line[1] end output else raise "File /etc/os-release doesn't exists or not Linux" end end class << self alias :doze? :windows? # a joke name but I use it and like it :P alias :jruby? :java? # delegators for relevant config values %w(host host_cpu host_os).each do |method_name| define_method(method_name) { config[method_name] } end end private def self.hwprefs_available? `which hwprefs` != '' end end os-1.1.4/autotest/0000755000004100000410000000000014166457431014051 5ustar www-datawww-dataos-1.1.4/autotest/discover.rb0000644000004100000410000000004414166457431016212 0ustar www-datawww-dataAutotest.add_discovery { "rspec2" } os-1.1.4/ChangeLog0000644000004100000410000000110514166457431013750 0ustar www-datawww-data1.1.4 Fix circular dependency 1.1.2 Make rss_bytes return bytes in linux/OS X, like it always should have 1.1.1 fix skip blank lines in OS#parse_os_release 1.1.0 Add app_config_path method Cleans up dev dependency specs Detect underlying Docker containers method Add Linux-specific OS#parse_os_release method 1.0.1 add within docker method 0.10.0 freebsd? also some cleanup 0.9.7 use same version number in VERSION and os.gemspec 0.9.6 add changelog, license 0.9.5 don't count hyper thread by default windows [TODO check linux ] os-1.1.4/Gemfile0000644000004100000410000000004614166457431013474 0ustar www-datawww-datasource "http://rubygems.org" gemspec os-1.1.4/VERSION0000644000004100000410000000000614166457431013245 0ustar www-datawww-data1.1.4