Class: Specinfra::Command::Windows::Base::File

Inherits:
Specinfra::Command::Windows::Base show all
Defined in:
lib/specinfra/command/windows/base/file.rb

Class Method Summary collapse

Methods inherited from Specinfra::Command::Windows::Base

create

Class Method Details

.check_contains(file, pattern) ⇒ Object



89
90
91
92
93
# File 'lib/specinfra/command/windows/base/file.rb', line 89

def check_contains(file, pattern)
  Backend::PowerShell::Command.new do
    exec %Q!(Get-Content("#{file}") | Out-String) -match '#{convert_regexp(pattern)}'!
  end
end

.check_contains_within(file, pattern, from = nil, to = nil) ⇒ Object



95
96
97
98
99
100
101
102
# File 'lib/specinfra/command/windows/base/file.rb', line 95

def check_contains_within file, pattern, from=nil, to=nil
  from ||= '^'
  to ||= '$'
  Backend::PowerShell::Command.new do
    using 'crop_text.ps1'
    exec %Q!(CropText -text (Get-Content("#{file}") | Out-String) -fromPattern '#{convert_regexp(from)}' -toPattern '#{convert_regexp(to)}') -match '#{pattern}'!
  end
end

.check_exists(file) ⇒ Object



3
4
5
6
7
8
# File 'lib/specinfra/command/windows/base/file.rb', line 3

def check_exists(file)
  cmd = %Q!Test-Path -Path "#{file}"!
  Backend::PowerShell::Command.new do
    exec cmd
  end
end

.check_has_version(name, version) ⇒ Object



104
105
106
107
# File 'lib/specinfra/command/windows/base/file.rb', line 104

def check_has_version(name,version)
  cmd = "((Get-Command '#{name}').FileVersionInfo.ProductVersion -eq '#{version}') -or ((Get-Command '#{name}').FileVersionInfo.FileVersion -eq '#{version}')"
  Backend::PowerShell::Command.new { exec cmd }
end

.check_is_accessible_by_user(file, user, access) ⇒ Object



57
58
59
60
61
62
63
64
65
66
# File 'lib/specinfra/command/windows/base/file.rb', line 57

def check_is_accessible_by_user(file, user, access)
  case access
  when 'r'
    check_is_readable(file, user)
  when 'w'
    check_is_writable(file, user)
  when 'x'
    check_is_executable(file, user)
  end
end

.check_is_directory(dir) ⇒ Object



17
18
19
20
21
22
# File 'lib/specinfra/command/windows/base/file.rb', line 17

def check_is_directory(dir)
  cmd = item_has_attribute dir, 'Directory'
  Backend::PowerShell::Command.new do
    exec cmd
  end
end

.check_is_executable(file, by_whom) ⇒ Object



82
83
84
85
86
87
# File 'lib/specinfra/command/windows/base/file.rb', line 82

def check_is_executable(file, by_whom)
  Backend::PowerShell::Command.new do
    using 'check_file_access_rules.ps1'
    exec "CheckFileAccessRules -path '#{file}' -identity '#{get_identity by_whom}' -rules @('FullControl', 'Modify', 'ReadAndExecute', 'ExecuteFile')"
  end
end

.check_is_file(file) ⇒ Object



10
11
12
13
14
15
# File 'lib/specinfra/command/windows/base/file.rb', line 10

def check_is_file(file)
  cmd = item_has_attribute file, 'Archive'
  Backend::PowerShell::Command.new do
    exec cmd
  end
end

.check_is_hidden(file) ⇒ Object



24
25
26
27
28
29
# File 'lib/specinfra/command/windows/base/file.rb', line 24

def check_is_hidden(file)
  cmd = item_has_attribute file, 'Hidden'
  Backend::PowerShell::Command.new do
    exec cmd
  end
end

.check_is_owned_by(file, owner) ⇒ Object



109
110
111
112
113
# File 'lib/specinfra/command/windows/base/file.rb', line 109

def check_is_owned_by(file, owner)
  Backend::PowerShell::Command.new do
    exec "$(if((Get-Item '#{file}').GetAccessControl().Owner -match '#{owner}' -or ((Get-Item '#{file}').GetAccessControl().Owner -match '#{owner}').Length -gt 0){ $TRUE } else { $FALSE })"
  end
end

.check_is_readable(file, by_whom) ⇒ Object



68
69
70
71
72
73
# File 'lib/specinfra/command/windows/base/file.rb', line 68

def check_is_readable(file, by_whom)
  Backend::PowerShell::Command.new do
    using 'check_file_access_rules.ps1'
    exec "CheckFileAccessRules -path '#{file}' -identity '#{get_identity by_whom}' -rules @('FullControl', 'Modify', 'ReadAndExecute', 'Read', 'ListDirectory')"
  end
end

.check_is_readonly(file) ⇒ Object



31
32
33
34
35
36
# File 'lib/specinfra/command/windows/base/file.rb', line 31

def check_is_readonly(file)
  cmd = item_has_attribute file, 'ReadOnly'
  Backend::PowerShell::Command.new do
    exec cmd
  end
end

.check_is_system(file) ⇒ Object



38
39
40
41
42
43
# File 'lib/specinfra/command/windows/base/file.rb', line 38

def check_is_system(file)
  cmd = item_has_attribute file, 'System'
  Backend::PowerShell::Command.new do
    exec cmd
  end
end

.check_is_writable(file, by_whom) ⇒ Object



75
76
77
78
79
80
# File 'lib/specinfra/command/windows/base/file.rb', line 75

def check_is_writable(file, by_whom)
  Backend::PowerShell::Command.new do
    using 'check_file_access_rules.ps1'
    exec "CheckFileAccessRules -path '#{file}' -identity '#{get_identity by_whom}' -rules @('FullControl', 'Modify', 'Write')"
  end
end

.get_content(file) ⇒ Object



45
46
47
# File 'lib/specinfra/command/windows/base/file.rb', line 45

def get_content(file)
  %Q!Get-Content("#{file}") | Write-Host!
end

.get_md5sum(file) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/specinfra/command/windows/base/file.rb', line 49

def get_md5sum(file)
  <<-EOT
  $md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
  $sum = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes("#{file}")))
  echo $sum.ToLower().Replace("-","")
  EOT
end