sysadmin 0.0.5 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -4,39 +4,14 @@ require 'rubygems'
4
4
 
5
5
  require 'rspec/core'
6
6
  require 'rspec/core/rake_task'
7
- RSpec::Core::RakeTask.new(:spec) do |spec|
8
- spec.rspec_opts = ["-c"]
9
- spec.pattern = FileList['spec/**/*_spec.rb']
10
- end
11
-
12
- namespace :spec do
13
- desc "Run RSpec for plugins"
14
- RSpec::Core::RakeTask.new(:plugins) do |spec|
15
- spec.rspec_opts = ["-c"]
16
- spec.pattern = FileList['spec/plugins/**/*_spec.rb']
17
- end
18
7
 
19
- desc "Run RSpec for main procedure"
20
- RSpec::Core::RakeTask.new(:lib) do |spec|
21
- spec.rspec_opts = ["-c"]
22
- spec.pattern = FileList['spec/lib/**/*_spec.rb']
8
+ task :spec do
9
+ RSpec::Core::RakeTask.new(:spec) do |spec|
10
+ spec.rspec_opts = ["-c","-fs"]
11
+ spec.pattern = FileList['spec/**/*_spec.rb']
23
12
  end
24
13
  end
25
14
 
26
- require 'jeweler'
27
- Jeweler::Tasks.new do |gem|
28
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
29
- gem.name = "sysadmin"
30
- gem.homepage = "http://github.com/id774/sysadmin"
31
- gem.license = "GPL"
32
- gem.summary = %Q{Sysadmin Ruby}
33
- gem.description = %Q{System Administration General Library}
34
- gem.email = "idnanashi@gmail.com"
35
- gem.authors = ["id774"]
36
- # dependencies defined in Gemfile
37
- end
38
- Jeweler::RubygemsDotOrgTasks.new
39
-
40
15
  if /^1\.9\./ =~ RUBY_VERSION
41
16
  desc "Run RSpec code examples with simplecov"
42
17
  task :simplecov do
@@ -46,7 +21,7 @@ if /^1\.9\./ =~ RUBY_VERSION
46
21
  else
47
22
  desc "Run RSpec code examples with rcov"
48
23
  RSpec::Core::RakeTask.new(:rcov) do |spec|
49
- spec.pattern = FileList['spec/**/*_spec.rb']
24
+ spec.pattern = FileList['spec/lib/**/*_spec.rb']
50
25
  exclude_files = [
51
26
  "gems",
52
27
  ]
@@ -55,17 +30,16 @@ else
55
30
  end
56
31
  end
57
32
 
58
- namespace :test do
59
- desc "Run Tests"
60
- require 'rake/testtask'
61
- Rake::TestTask.new("test") do |t|
62
- ruby "test/*_test.rb"
63
- Dir::glob('test/lib').each do |d|
64
- Dir::foreach(d) do |f|
65
- if (FileTest.file?(File.join(d, f)))
66
- ruby File.join(d, f)
67
- end
68
- end
69
- end
70
- end
33
+ require 'jeweler'
34
+ Jeweler::Tasks.new do |gem|
35
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
36
+ gem.name = "sysadmin"
37
+ gem.homepage = "http://github.com/id774/sysadmin"
38
+ gem.license = "GPL"
39
+ gem.summary = %Q{Sysadmin Ruby}
40
+ gem.description = %Q{System Administration General Library}
41
+ gem.email = "idnanashi@gmail.com"
42
+ gem.authors = ["id774"]
43
+ # dependencies defined in Gemfile
71
44
  end
45
+ Jeweler::RubygemsDotOrgTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.1.0
data/doc/ChangeLog CHANGED
@@ -1,3 +1,17 @@
1
+ === 0.1.0 / 2012-07-17
2
+
3
+ * Re-construction
4
+
5
+ * Removed Sysadmin::FileHandler and Sysadmin::FileString
6
+
7
+ * New module added "FileExtension" and "DirExtension"
8
+
9
+ They extend the Ruby classes.
10
+ Backward compatibility is nothing perfectly.
11
+
12
+ * Testing framework migration from Test::Unit to RSpec
13
+
14
+
1
15
  === 0.0.5 / 2012-06-06
2
16
 
3
17
  * Add Class
data/doc/README CHANGED
@@ -22,39 +22,42 @@ $ gem install sysadmin
22
22
  Module
23
23
  ======
24
24
 
25
- - Sysadmin::FileString
25
+ - Sysadmin::FileExtension
26
26
 
27
- String manipulation in the file.
27
+ Extend the File class.
28
28
 
29
- - Sysadmin::FileHandler
29
+ - Sysadmin::DirExtension
30
30
 
31
- Extend the File class.
31
+ Extend the Dir class.
32
32
 
33
33
 
34
34
  ======
35
35
  Method
36
36
  ======
37
37
 
38
- * Sysadmin::FileString.append(file, str)
38
+ * File.zread (file)
39
+
40
+ Referred by Sysadmin::FileHandler.
41
+ Read the file regardless of the uncompressed / compressed gz.
42
+
43
+ * File.append_line(file, str)
39
44
 
40
45
  Append a string to a file.
41
46
 
42
- * Sysadmin::FileString.newfile(file, str)
47
+ * File.new_line(file, str)
43
48
 
44
49
  Create a new file.
45
50
 
46
- * Sysadmin::FileString.replace(file, src, out)
51
+ * File.replace_line(file, src, out)
47
52
 
48
53
  Replace the string in the file.
49
54
 
50
- * Sysadmin :: FileString.delete(file, str)
55
+ * FileString.remove_line(file, str)
51
56
 
52
57
  Remove the rows that match the string from the file.
53
58
 
59
+ * Dir.filelist(dir, subdirectory=false)
54
60
 
55
- * File.zread (file)
56
-
57
- Referred by Sysadmin::FileHandler.
58
- Read the file regardless of the uncompressed / compressed gz.
61
+ Return the file lists in the directory.
59
62
 
60
63
 
data/doc/README.ja CHANGED
@@ -22,39 +22,42 @@ $ gem install sysadmin
22
22
  モジュール
23
23
  ==========
24
24
 
25
- - Sysadmin::FileString
25
+ - Sysadmin::FileExtension
26
26
 
27
- ファイル内の文字列操作をおこなう
27
+ File クラスを拡張する
28
28
 
29
- - Sysadmin::FileHandler
29
+ - Sysadmin::DirExtension
30
30
 
31
- File クラスを拡張する
31
+ Dir クラスを拡張する
32
32
 
33
33
 
34
34
  ========
35
35
  メソッド
36
36
  ========
37
37
 
38
- * Sysadmin::FileString.append(file, str)
38
+ * File.zread(file)
39
+
40
+ Sysadmin::FileHandler を呼ぶと追加される
41
+ gz 圧縮 / 非圧縮に関わらずファイルを読み込む
42
+
43
+ * File.append_line(file, str)
39
44
 
40
45
  ファイルに文字列を追記する
41
46
 
42
- * Sysadmin::FileString.newfile(file, str)
47
+ * File.new_line(file, str)
43
48
 
44
49
  ファイルを新規作成する
45
50
 
46
- * Sysadmin::FileString.replace(file, src, out)
51
+ * File.replace_line(file, src, out)
47
52
 
48
53
  ファイル内の文字列を置換する
49
54
 
50
- * Sysadmin::FileString.delete(file, str)
55
+ * File.remove_line(file, str)
51
56
 
52
57
  ファイルから文字列にマッチする行を取り除く
53
58
 
59
+ * Dir.filelist(dir, subdirectory=false)
54
60
 
55
- * File.zread(file)
56
-
57
- Sysadmin::FileHandler を呼ぶと追加される
58
- gz 圧縮 / 非圧縮に関わらずファイルを読み込む
61
+ ディレクトリ内のファイル一覧を配列で返す
59
62
 
60
63
 
data/lib/sysadmin.rb CHANGED
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env ruby
2
- # Name:: Sysadmin::Ruby
2
+ # Name:: Sysadmin
3
3
  # Author:: 774 <http://id774.net>
4
4
  # Created:: Mar 23, 2012
5
- # Updated:: Jun 06, 2012
5
+ # Updated:: Jul 17, 2012
6
6
  # Copyright:: 774 Copyright (c) 2012
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
9
9
  module Sysadmin
10
- VERSION = "0.0.5"
10
+ VERSION = "0.1.0"
11
11
  USER_DIR = "/."
12
12
  ROOT_DIR = File.expand_path("..", File.dirname(__FILE__))
13
13
  $:.unshift ROOT_DIR
14
14
  $:.unshift ROOT_DIR + '/lib'
15
15
  $:.unshift ROOT_DIR + '/lib/sysadmin'
16
16
 
17
- require 'file_string'
18
- require 'file_handler'
17
+ require 'file_ext'
18
+ require 'dir_ext'
19
19
  end
@@ -0,0 +1,35 @@
1
+ # Name:: Sysadmin::DirExtension
2
+ # Author:: 774 <http://id774.net>
3
+ # Created:: Jul 17, 2012
4
+ # Updated:: Jul 17, 2012
5
+ # Copyright:: 774 Copyright (c) 2012
6
+ # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
7
+
8
+ module Sysadmin
9
+ module DirExtension
10
+
11
+ def Dir.filelist(dir, sub_directory = false)
12
+ array = Array.new
13
+ if (FileTest.file?(dir))
14
+ array << dir
15
+ else
16
+ if sub_directory
17
+ dir = dir + "/**/"
18
+ else
19
+ dir = dir + "/"
20
+ end
21
+ Dir::glob(dir).each do |d|
22
+ if (FileTest.directory?(d))
23
+ Dir::foreach(d) do |f|
24
+ if (FileTest.file?(d+f))
25
+ array << d+f
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ return array
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,70 @@
1
+ # Name:: Sysadmin::FileExtension
2
+ # Author:: 774 <http://id774.net>
3
+ # Created:: Jul 17, 2012
4
+ # Updated:: Jul 17, 2012
5
+ # Copyright:: 774 Copyright (c) 2012
6
+ # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
7
+
8
+ module Sysadmin
9
+ module FileExtension
10
+ require 'zlib'
11
+ Zlib::GZIP_MAGIC = "\x1F\x8B"
12
+ Zlib::GZIP_MAGIC.force_encoding("ASCII-8BIT") if RUBY_VERSION >= "1.9"
13
+
14
+ def File.zread(file)
15
+ Object.module_eval do
16
+ open(file) {|f|
17
+ magic = f.read(2)
18
+ f.rewind
19
+ if magic == Zlib::GZIP_MAGIC
20
+ Zlib::GzipReader.wrap(f) {|gz|gz.read}
21
+ else
22
+ f.read
23
+ end
24
+ }
25
+ end
26
+ end
27
+
28
+ def File.append_line(file, str)
29
+ if File.exist?(file)
30
+ f = open(file, 'a')
31
+ else
32
+ f = open(file, 'w')
33
+ end
34
+ f << str
35
+ f << "\n"
36
+ f.close
37
+ end
38
+
39
+ def File.new_line(file, str)
40
+ f = open(file, 'w')
41
+ f << str
42
+ f << "\n"
43
+ f.close
44
+ end
45
+
46
+ def File.replace_line(file, src, out)
47
+ open(file, "r+") { |f|
48
+ f.rewind
49
+ body = f.read
50
+ body = body.gsub(src) { |tmp|
51
+ out
52
+ }
53
+ f.rewind
54
+ f.puts body
55
+ f.truncate(f.tell)
56
+ }
57
+ end
58
+
59
+ def File.remove_line(file, str)
60
+ out = ""
61
+ IO.foreach(file) { |line|
62
+ out << line unless line.include?(str)
63
+ }
64
+ open(file, "w") { |f|
65
+ f.write out
66
+ }
67
+ end
68
+
69
+ end
70
+ end
data/script/build CHANGED
@@ -15,7 +15,7 @@ kickstart() {
15
15
  }
16
16
 
17
17
  run_tests() {
18
- rake test
18
+ rake spec
19
19
  }
20
20
 
21
21
  main() {
@@ -0,0 +1,43 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Sysadmin::DirExtension, 'Dir クラス拡張' do
6
+ context 'で filelist メソッドを呼ぶ場合' do
7
+ describe 'ディレクトリ名を指定すると' do
8
+ it "ディレクトリ内のファイル一覧が返却される" do
9
+ test_dir = File.expand_path("../../test_dir", File.dirname(__FILE__))
10
+ Dir.filelist(test_dir).should have(2).items
11
+ end
12
+ end
13
+
14
+ describe 'ファイル名を指定すると' do
15
+ it "ファイル名が返却される" do
16
+ test_dir = File.expand_path("../../test_dir/file2", File.dirname(__FILE__))
17
+ Dir.filelist(test_dir).should have(1).items
18
+ end
19
+ end
20
+
21
+ describe 'サブディレクトリを true にしてディレクトリを指定すると' do
22
+ it "サブディレクトリ内のファイルも返却される" do
23
+ test_dir = File.expand_path("../../test_dir", File.dirname(__FILE__))
24
+ Dir.filelist(test_dir, sub_directory = true).should have(6).items
25
+ end
26
+ end
27
+
28
+ describe 'サブディレクトリを false にしてディレクトリを指定すると' do
29
+ it "ディレクトリ内のファイル一覧が返却される (サブディレクトリは見ない)" do
30
+ test_dir = File.expand_path("../../test_dir", File.dirname(__FILE__))
31
+ Dir.filelist(test_dir, sub_directory = false).should have(2).items
32
+ end
33
+ end
34
+
35
+ describe 'サブディレクトリを true にしてファイル名を指定しても' do
36
+ it "ファイル名が返却される (サブディレクトリは見ない)" do
37
+ test_dir = File.expand_path("../../test_dir/file2", File.dirname(__FILE__))
38
+ Dir.filelist(test_dir).should have(1).items
39
+ end
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,118 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+ require 'tempfile'
5
+ require 'zlib'
6
+
7
+ describe Sysadmin::FileExtension, 'File クラス拡張' do
8
+ context 'で非圧縮のファイルを zread した場合' do
9
+ it "正しく読み込まれる" do
10
+ try = "uncompressed"
11
+ expect = "uncompressed\n"
12
+ @uncompressed = Tempfile::new("test.txt")
13
+ File.append_line(@uncompressed.path, try)
14
+
15
+ File.zread(@uncompressed.path).should == expect
16
+ @uncompressed.close
17
+ end
18
+ end
19
+
20
+ context 'で圧縮されたファイルを zread した場合' do
21
+ it "正しく読み込まれる" do
22
+ try = "compressed"
23
+ expect = "compressed\n"
24
+ @compressed = Tempfile::new("test2.txt")
25
+ Zlib::GzipWriter.open(@compressed.path) do |gz|
26
+ gz.puts try
27
+ end
28
+
29
+ File.zread(@compressed.path).should == expect
30
+ @compressed.close
31
+ end
32
+ end
33
+
34
+ context 'で append_line メソッドを呼ぶと' do
35
+ it "ファイル末尾に文字列行が追加される" do
36
+ @testfile = Tempfile::new("test.txt")
37
+ src = 'hoge'
38
+ expect = "hoge\n"
39
+
40
+ 3.times do
41
+ File.append_line(@testfile.path, src)
42
+ end
43
+
44
+ open(@testfile.path) { |file|
45
+ while line = file.gets
46
+ line.should == expect
47
+ end
48
+ }
49
+ @testfile.close
50
+ end
51
+ end
52
+
53
+ context 'で replace_line メソッドを呼ぶと' do
54
+ it "ファイル内の文字列が置換される" do
55
+ @testfile = Tempfile::new("test.txt")
56
+ src = 'hoge'
57
+ try = 'fuga'
58
+ expect = "fuga\n"
59
+
60
+ 3.times do
61
+ File.append_line(@testfile.path, src)
62
+ end
63
+ File.replace_line(@testfile.path, src, try)
64
+
65
+ open(@testfile.path) { |file|
66
+ while line = file.gets
67
+ line.should == expect
68
+ end
69
+ }
70
+ @testfile.close
71
+ end
72
+ end
73
+
74
+ context 'で remove_line メソッドを呼ぶと' do
75
+ it "ファイル内の引数に適合した行が削除される" do
76
+ @testfile = Tempfile::new("test.txt")
77
+ src = 'hoge'
78
+ replace = 'fuga'
79
+ erase = 'hoge'
80
+ expect = "fuga\n"
81
+
82
+ 3.times do
83
+ File.append_line(@testfile.path, src)
84
+ end
85
+ File.replace_line(@testfile.path, src, replace)
86
+ 2.times do
87
+ File.append_line(@testfile.path, src)
88
+ end
89
+ File.remove_line(@testfile.path, erase)
90
+
91
+ open(@testfile.path) { |file|
92
+ while line = file.gets
93
+ line.should == expect
94
+ end
95
+ }
96
+ @testfile.close
97
+ end
98
+ end
99
+
100
+ context 'で new_line メソッドを呼ぶと' do
101
+ it "文字列行のファイルが新規作成される" do
102
+ @testfile = Tempfile::new("test.txt")
103
+ init = 'init'
104
+ second = 'second'
105
+ expect = "second\n"
106
+
107
+ File.new_line(@testfile.path, init)
108
+ File.new_line(@testfile.path, second)
109
+
110
+ open(@testfile.path) { |file|
111
+ while line = file.gets
112
+ line.should == expect
113
+ end
114
+ }
115
+ @testfile.close
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,13 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe Sysadmin, 'sysadmin' do
6
+ context 'のバージョンを参照した場合' do
7
+ it "バージョンが正しく表示される" do
8
+ expect = '0.1.0'
9
+ Sysadmin.const_get(:VERSION).should be_true
10
+ Sysadmin.const_get(:VERSION).should == expect
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), ".."))
4
+ $LOAD_PATH.unshift APP_ROOT
5
+ $LOAD_PATH.unshift File.join(APP_ROOT)
6
+ $LOAD_PATH.unshift File.join(APP_ROOT, 'lib')
7
+
8
+ require 'sysadmin'
9
+
10
+ if ENV['COVERAGE'] == 'on'
11
+ require 'simplecov'
12
+ require 'simplecov-rcov'
13
+ SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
14
+
15
+ SimpleCov.start do
16
+ add_filter "spec"
17
+ add_filter "vendor"
18
+ end
19
+ end
20
+
21
+ unless /^1\.9\./ =~ RUBY_VERSION
22
+ require 'rspec'
23
+ end
24
+
25
+ RSpec.configure do |config|
26
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/sysadmin.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "sysadmin"
8
- s.version = "0.0.5"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["id774"]
12
- s.date = "2012-06-06"
12
+ s.date = "2012-07-17"
13
13
  s.description = "System Administration General Library"
14
14
  s.email = "idnanashi@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -28,15 +28,22 @@ Gem::Specification.new do |s|
28
28
  "doc/README",
29
29
  "doc/README.ja",
30
30
  "lib/sysadmin.rb",
31
- "lib/sysadmin/file_handler.rb",
32
- "lib/sysadmin/file_string.rb",
31
+ "lib/sysadmin/dir_ext.rb",
32
+ "lib/sysadmin/file_ext.rb",
33
33
  "script/.gitkeep",
34
34
  "script/build",
35
+ "spec/lib/sysadmin/dir_ext_spec.rb",
36
+ "spec/lib/sysadmin/file_ext_spec.rb",
37
+ "spec/lib/sysadmin_spec.rb",
38
+ "spec/spec_helper.rb",
39
+ "spec/test_dir/.dir1/.file6",
40
+ "spec/test_dir/.file1",
41
+ "spec/test_dir/dir2/dir4/file4",
42
+ "spec/test_dir/dir2/file3",
43
+ "spec/test_dir/dir3/file5",
44
+ "spec/test_dir/dir6/dir7/.file7",
45
+ "spec/test_dir/file2",
35
46
  "sysadmin.gemspec",
36
- "test/lib/file_handler_test.rb",
37
- "test/lib/file_string_1_test.rb",
38
- "test/lib/file_string_2_test.rb",
39
- "test/sysadmin_test.rb",
40
47
  "vendor/.gitkeep"
41
48
  ]
42
49
  s.homepage = "http://github.com/id774/sysadmin"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sysadmin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-06 00:00:00.000000000 Z
12
+ date: 2012-07-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cucumber
@@ -78,15 +78,22 @@ files:
78
78
  - doc/README
79
79
  - doc/README.ja
80
80
  - lib/sysadmin.rb
81
- - lib/sysadmin/file_handler.rb
82
- - lib/sysadmin/file_string.rb
81
+ - lib/sysadmin/dir_ext.rb
82
+ - lib/sysadmin/file_ext.rb
83
83
  - script/.gitkeep
84
84
  - script/build
85
+ - spec/lib/sysadmin/dir_ext_spec.rb
86
+ - spec/lib/sysadmin/file_ext_spec.rb
87
+ - spec/lib/sysadmin_spec.rb
88
+ - spec/spec_helper.rb
89
+ - spec/test_dir/.dir1/.file6
90
+ - spec/test_dir/.file1
91
+ - spec/test_dir/dir2/dir4/file4
92
+ - spec/test_dir/dir2/file3
93
+ - spec/test_dir/dir3/file5
94
+ - spec/test_dir/dir6/dir7/.file7
95
+ - spec/test_dir/file2
85
96
  - sysadmin.gemspec
86
- - test/lib/file_handler_test.rb
87
- - test/lib/file_string_1_test.rb
88
- - test/lib/file_string_2_test.rb
89
- - test/sysadmin_test.rb
90
97
  - vendor/.gitkeep
91
98
  homepage: http://github.com/id774/sysadmin
92
99
  licenses:
@@ -1,29 +0,0 @@
1
- # Name:: Sysadmin::FileString
2
- # Author:: 774 <http://id774.net>
3
- # Created:: Jun 06, 2012
4
- # Updated:: Jun 06, 2012
5
- # Copyright:: 774 Copyright (c) 2012
6
- # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
7
-
8
-
9
- module Sysadmin
10
- module FileHandler
11
- require 'zlib'
12
- Zlib::GZIP_MAGIC = "\x1F\x8B"
13
- Zlib::GZIP_MAGIC.force_encoding("ASCII-8BIT") if RUBY_VERSION >= "1.9"
14
-
15
- def File.zread(file)
16
- Object.module_eval do
17
- open(file) {|f|
18
- magic = f.read(2)
19
- f.rewind
20
- if magic == Zlib::GZIP_MAGIC
21
- Zlib::GzipReader.wrap(f) {|gz|gz.read}
22
- else
23
- f.read
24
- end
25
- }
26
- end
27
- end
28
- end
29
- end
@@ -1,55 +0,0 @@
1
- # Name:: Sysadmin::FileString
2
- # Author:: 774 <http://id774.net>
3
- # Created:: Mar 23, 2012
4
- # Updated:: Jun 04, 2012
5
- # Copyright:: 774 Copyright (c) 2012
6
- # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
7
-
8
- module Sysadmin
9
- module FileString
10
- def self.append(file, str)
11
- if File.exist?(file)
12
- f = open(file, 'a')
13
- else
14
- f = open(file, 'w')
15
- end
16
- f << str
17
- f << "\n"
18
- f.close
19
- end
20
-
21
- def self.newfile(file, str)
22
- f = open(file, 'w')
23
- f << str
24
- f << "\n"
25
- f.close
26
- end
27
-
28
- def self.replaceFile(f, src, out)
29
- f.rewind
30
- body = f.read
31
- body = body.gsub(src) { |tmp|
32
- out
33
- }
34
- f.rewind
35
- f.puts body
36
- end
37
-
38
- def self.replace(file, src, out)
39
- open(file, "r+") { |f|
40
- replaceFile(f, src, out)
41
- f.truncate(f.tell)
42
- }
43
- end
44
-
45
- def self.delete(file, str)
46
- out = ""
47
- IO.foreach(file) { |line|
48
- out << line unless line.include?(str)
49
- }
50
- open(file, "w") { |f|
51
- f.write out
52
- }
53
- end
54
- end
55
- end
@@ -1,40 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
3
-
4
- require 'rubygems'
5
- require 'test/unit'
6
- require 'tempfile'
7
- require 'zlib'
8
- require 'sysadmin'
9
-
10
- class Test_FileHandler < Test::Unit::TestCase
11
- def test_zread_uncompressed
12
- @uncompressed = Tempfile::new("test.txt")
13
- try = "uncompressed"
14
- expect = "uncompressed\n"
15
-
16
- Sysadmin::FileString.append(@uncompressed.path, try)
17
-
18
- text = File.zread(@uncompressed.path)
19
- assert_not_nil(text)
20
- assert_equal(expect, text)
21
-
22
- @uncompressed.close
23
- end
24
-
25
- def test_zread_compressed
26
- try = "compressed"
27
- expect = "compressed\n"
28
-
29
- @compressed = Tempfile::new("test2.txt")
30
- Zlib::GzipWriter.open(@compressed.path) do |gz|
31
- gz.puts try
32
- end
33
-
34
- text = File.zread(@compressed.path)
35
- assert_not_nil(text)
36
- assert_equal(expect, text)
37
-
38
- @compressed.close
39
- end
40
- end
@@ -1,71 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
3
-
4
- require 'rubygems'
5
- require 'test/unit'
6
- require 'tempfile'
7
- require 'sysadmin'
8
-
9
- class Test_FileString < Test::Unit::TestCase
10
- def setup
11
- @testfile = Tempfile::new("test.txt")
12
- end
13
-
14
- def test_append
15
- src = 'hoge'
16
- expect = "hoge\n"
17
-
18
- 3.times do
19
- Sysadmin::FileString.append(@testfile.path, src)
20
- end
21
-
22
- open(@testfile.path) { |file|
23
- while line = file.gets
24
- assert_equal(expect, line)
25
- end
26
- }
27
- end
28
-
29
- def test_replace
30
- src = 'hoge'
31
- try = 'fuga'
32
- expect = "fuga\n"
33
-
34
- 3.times do
35
- Sysadmin::FileString.append(@testfile.path, src)
36
- end
37
- Sysadmin::FileString.replace(@testfile.path, src, try)
38
-
39
- open(@testfile.path) { |file|
40
- while line = file.gets
41
- assert_equal(expect, line)
42
- end
43
- }
44
- end
45
-
46
- def test_delete
47
- src = 'hoge'
48
- replace = 'fuga'
49
- erase = 'hoge'
50
- expect = "fuga\n"
51
-
52
- 3.times do
53
- Sysadmin::FileString.append(@testfile.path, src)
54
- end
55
- Sysadmin::FileString.replace(@testfile.path, src, replace)
56
- 2.times do
57
- Sysadmin::FileString.append(@testfile.path, src)
58
- end
59
- Sysadmin::FileString.delete(@testfile.path, erase)
60
-
61
- open(@testfile.path) { |file|
62
- while line = file.gets
63
- assert_equal(expect, line)
64
- end
65
- }
66
- end
67
-
68
- def teardown
69
- @testfile.close(true)
70
- end
71
- end
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
3
-
4
- require 'rubygems'
5
- require 'test/unit'
6
- require 'tempfile'
7
- require 'sysadmin'
8
-
9
- class Test_FileString < Test::Unit::TestCase
10
- def setup
11
- @testfile = Tempfile::new("test.txt")
12
- end
13
-
14
- def test_newfile
15
- init = 'init'
16
- second = 'second'
17
- expect = "second\n"
18
-
19
- Sysadmin::FileString.newfile(@testfile.path, init)
20
- Sysadmin::FileString.newfile(@testfile.path, second)
21
-
22
- open(@testfile.path) { |file|
23
- while line = file.gets
24
- assert_equal(expect, line)
25
- end
26
- }
27
- end
28
-
29
- def teardown
30
- @testfile.close(true)
31
- end
32
- end
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
3
-
4
- require 'rubygems'
5
- require 'test/unit'
6
- require 'tempfile'
7
- require 'sysadmin'
8
-
9
- class Test_Sysadmin < Test::Unit::TestCase
10
- def test_version
11
- expect = '0.0.5'
12
- version = Sysadmin.const_get(:VERSION)
13
- p "sysadmin #{version}"
14
- assert_equal(expect, version)
15
- end
16
- end