md5app 0.0.1
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.
- data/README.md +33 -0
- data/lib/md5app.rb +3 -0
- data/lib/md5app/md5_dir.rb +46 -0
- data/lib/md5app/railtie.rb +10 -0
- data/lib/md5app/tasks/run.rake +9 -0
- metadata +49 -0
data/README.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
md5app
|
|
2
|
+
======
|
|
3
|
+
|
|
4
|
+
Сохраняет md5 суммы файлов проекта в дирректорию log/md5app/
|
|
5
|
+
|
|
6
|
+
### Установка
|
|
7
|
+
|
|
8
|
+
```ruby
|
|
9
|
+
gem 'md5app'
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### Запуск
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
$ rake md5app:run
|
|
16
|
+
```
|
|
17
|
+
### Настройки
|
|
18
|
+
|
|
19
|
+
Есть возможность выборочного игнорирования определенных файлов и дирректорий
|
|
20
|
+
аналогично .gitignore
|
|
21
|
+
|
|
22
|
+
### Пример .md5ignore
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
.git
|
|
26
|
+
log
|
|
27
|
+
public/assets
|
|
28
|
+
public/uploads
|
|
29
|
+
tmp
|
|
30
|
+
```
|
|
31
|
+
### Запуск по расписанию
|
|
32
|
+
|
|
33
|
+
Рекомендуется использовать [whenewer gem](https://github.com/javan/whenever).
|
data/lib/md5app.rb
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require 'digest/md5'
|
|
2
|
+
|
|
3
|
+
module Md5app
|
|
4
|
+
class Md5Dir
|
|
5
|
+
def initialize(root, file=nil)
|
|
6
|
+
@file = file || STDOUT
|
|
7
|
+
@root = File.absolute_path(root)
|
|
8
|
+
unless File.exists?("#{@root}/.md5ignore")
|
|
9
|
+
@skip_paths = []
|
|
10
|
+
else
|
|
11
|
+
@skip_paths = File.new("#{@root}/.md5ignore").readlines.map do |line|
|
|
12
|
+
line = line[/\A#/] ? nil : line.chomp.strip
|
|
13
|
+
line = line && line.empty? ? nil : line
|
|
14
|
+
line
|
|
15
|
+
end.compact
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def build_tree
|
|
20
|
+
recursive(@root)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def recursive(dir, depth=0)
|
|
24
|
+
Dir.chdir(dir) do
|
|
25
|
+
Dir.entries(Dir.pwd).sort.each do |entry|
|
|
26
|
+
next if ['.', '..'].include?(entry)
|
|
27
|
+
|
|
28
|
+
skip = false
|
|
29
|
+
@skip_paths.each do |mask|
|
|
30
|
+
skip = File.fnmatch("#{@root}/#{mask}", File.absolute_path(entry))
|
|
31
|
+
break if skip
|
|
32
|
+
end
|
|
33
|
+
next if skip
|
|
34
|
+
|
|
35
|
+
if File.file?(entry)
|
|
36
|
+
@file.print Digest::MD5.hexdigest(File.read(entry)), ' ', File.absolute_path(entry), "\n"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
if File.directory?(entry) && !File.symlink?(entry)
|
|
40
|
+
recursive(entry, depth + 1)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
namespace :md5app do
|
|
2
|
+
task :run do
|
|
3
|
+
Dir.mkdir('log') unless Dir.exists?('log')
|
|
4
|
+
Dir.mkdir('log/md5app') unless Dir.exists?('log/md5app')
|
|
5
|
+
file = File.new("log/md5app/#{Time.now.strftime("%Y%m%d%H%M%S")}.log", 'w+')
|
|
6
|
+
Md5app::Md5Dir.new(Rails.root.to_s, file).build_tree
|
|
7
|
+
file.close
|
|
8
|
+
end
|
|
9
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: md5app
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
prerelease:
|
|
5
|
+
version: 0.0.1
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Alexander Kiseliov
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2013-01-16 00:00:00.000000000 Z
|
|
13
|
+
dependencies: []
|
|
14
|
+
description: Logs md5 sum of project files
|
|
15
|
+
email: aakiselev@at-consulting.ru
|
|
16
|
+
executables: []
|
|
17
|
+
extensions: []
|
|
18
|
+
extra_rdoc_files: []
|
|
19
|
+
files:
|
|
20
|
+
- README.md
|
|
21
|
+
- lib/md5app/tasks/run.rake
|
|
22
|
+
- lib/md5app/md5_dir.rb
|
|
23
|
+
- lib/md5app/railtie.rb
|
|
24
|
+
- lib/md5app.rb
|
|
25
|
+
homepage: https://github.com/at-consulting/md5app
|
|
26
|
+
licenses: []
|
|
27
|
+
post_install_message:
|
|
28
|
+
rdoc_options: []
|
|
29
|
+
require_paths:
|
|
30
|
+
- lib
|
|
31
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
32
|
+
requirements:
|
|
33
|
+
- - ! '>='
|
|
34
|
+
- !ruby/object:Gem::Version
|
|
35
|
+
version: '0'
|
|
36
|
+
none: false
|
|
37
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - ! '>='
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '0'
|
|
42
|
+
none: false
|
|
43
|
+
requirements: []
|
|
44
|
+
rubyforge_project:
|
|
45
|
+
rubygems_version: 1.8.24
|
|
46
|
+
signing_key:
|
|
47
|
+
specification_version: 3
|
|
48
|
+
summary: md5app
|
|
49
|
+
test_files: []
|