manifest-dl 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +29 -17
- data/lib/manifest-dl.rb +22 -18
- data/lib/manifest-dl/version.rb +2 -2
- data/manifest-dl.gemspec +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc716ceae8c6a8d54cd5c4156fd0702ee4536f2e
|
4
|
+
data.tar.gz: 232fe98b96f4beb249b2077c6c9fd309a7012116
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf2e8d4e8a3860be0e750804cd96eea75a624a6fbe94920499257c1eaab80e7ac86369cfb4fe3e410262ea4095f0ed5a59f2831478c5cdb85679fa1ec2d55d68
|
7
|
+
data.tar.gz: 64ed81694a1acdcad6fe0ebc496e32b213563d97309e823b57997a55f5211c2acd3ca90ddc6b3efdce65bca74cbe222725cc51a0224ac3d48e227f6f43072a1b
|
data/README.md
CHANGED
@@ -2,30 +2,29 @@
|
|
2
2
|
|
3
3
|
File : README.md
|
4
4
|
Maintainer : Felix C. Stegerman <flx@obfusk.net>
|
5
|
-
Date : 2014-10-
|
5
|
+
Date : 2014-10-20
|
6
6
|
|
7
7
|
Copyright : Copyright (C) 2014 Felix C. Stegerman
|
8
|
-
Version : v0.1.
|
8
|
+
Version : v0.1.1
|
9
9
|
|
10
10
|
[]: }}}1
|
11
11
|
|
12
|
-
<!--
|
13
12
|
[![Gem Version](https://badge.fury.io/rb/manifest-dl.png)](https://rubygems.org/gems/manifest-dl)
|
14
|
-
-->
|
15
13
|
|
16
14
|
## Description
|
17
15
|
[]: {{{1
|
18
16
|
|
19
|
-
manifest-dl - download extra files for your app
|
17
|
+
manifest-dl - download extra files for your ruby app
|
20
18
|
|
21
19
|
Sometimes you have a (web) app that needs some extra files (e.g.
|
22
|
-
terms and conditions) that you don't want to
|
23
|
-
manually, but prefer (e.g. because they're not very
|
24
|
-
have in your version control system.
|
20
|
+
assets like videos or terms and conditions) that you don't want to
|
21
|
+
have to upload manually, but prefer (e.g. because they're not very
|
22
|
+
small) not to have in your version control system.
|
25
23
|
|
26
24
|
manifest-dl allows you to specify the paths, urls and checksums in a
|
27
|
-
manifest and automatically downloads those extra files for you (
|
28
|
-
updates them when they -- i.e.
|
25
|
+
manifest and automatically downloads those extra files for you (from
|
26
|
+
a website or cloud storage) and updates them when they -- i.e.
|
27
|
+
their checksums -- change.
|
29
28
|
|
30
29
|
NB: uses `curl` to download files; you'll need to have it installed.
|
31
30
|
|
@@ -34,25 +33,38 @@
|
|
34
33
|
## Examples
|
35
34
|
[]: {{{1
|
36
35
|
|
37
|
-
|
38
|
-
|
36
|
+
### Rails
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
# Gemfile
|
39
40
|
gem 'manifest-dl', require: 'manifest-dl/rails'
|
40
41
|
```
|
41
42
|
|
42
|
-
`config/manifest-dl.yaml`:
|
43
43
|
```yaml
|
44
|
+
# config/manifest-dl.yaml
|
44
45
|
- path: public/uploads/t-and-c.pdf
|
45
|
-
|
46
|
-
|
46
|
+
url: https://example.com/path/to/tandc.pdf
|
47
|
+
sha512sum: 9c573b5ed223f076b4f0c9483608c2d341eb8...
|
48
|
+
|
49
|
+
- path: public/uploads/video.mp4
|
50
|
+
url: https://cloud.example.com/share/my-video.mp4
|
51
|
+
sha512sum: f7fbba6e0636f890e56fbbf3283e524c6fa32...
|
47
52
|
```
|
48
53
|
|
49
|
-
`.gitignore`
|
50
54
|
```
|
55
|
+
# .gitignore
|
51
56
|
/.manifest-dl-cache
|
52
57
|
```
|
53
58
|
|
54
59
|
```bash
|
55
|
-
rake manifest:dl
|
60
|
+
rake manifest:dl # run!
|
61
|
+
```
|
62
|
+
|
63
|
+
### Standalone
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
require 'manifest-rb'
|
67
|
+
ManifestRB.run!
|
56
68
|
```
|
57
69
|
|
58
70
|
[]: }}}1
|
data/lib/manifest-dl.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# File : manifest-dl.rb
|
4
4
|
# Maintainer : Felix C. Stegerman <flx@obfusk.net>
|
5
|
-
# Date : 2014-10-
|
5
|
+
# Date : 2014-10-20
|
6
6
|
#
|
7
7
|
# Copyright : Copyright (C) 2014 Felix C. Stegerman
|
8
8
|
# Licence : LGPLv3+
|
@@ -22,15 +22,19 @@ module ManifestDL
|
|
22
22
|
class SystemError < StandardError; end
|
23
23
|
class VerificationError < StandardError; end
|
24
24
|
|
25
|
-
DEFAULT_CONFIG =
|
26
|
-
DEFAULT_CACHE =
|
25
|
+
DEFAULT_CONFIG = './config/manifest-dl.yaml'
|
26
|
+
DEFAULT_CACHE = './.manifest-dl-cache'
|
27
27
|
|
28
28
|
# --
|
29
29
|
|
30
30
|
# download files in manifest
|
31
|
-
def self.run!(
|
32
|
-
|
33
|
-
|
31
|
+
def self.run!(opts = {})
|
32
|
+
quiet = opts.fetch(:quiet) { false }
|
33
|
+
config_file = opts.fetch(:config_file) { DEFAULT_CONFIG }
|
34
|
+
cache_dir = opts.fetch(:cache_dir) { DEFAULT_CACHE }
|
35
|
+
YAML.load(File.read(config_file)).map do |item|
|
36
|
+
_check! item
|
37
|
+
_dl?(item, cache_dir) ? _dl!(item, quiet, cache_dir) : nil;
|
34
38
|
end .compact
|
35
39
|
end
|
36
40
|
|
@@ -47,7 +51,7 @@ module ManifestDL
|
|
47
51
|
end
|
48
52
|
|
49
53
|
# download, verify, mv file
|
50
|
-
def self._dl!(item, quiet
|
54
|
+
def self._dl!(item, quiet, cache_dir)
|
51
55
|
$stderr.puts "==> #{item['path']}" unless quiet
|
52
56
|
Dir.mktmpdir do |dir|
|
53
57
|
tempfile = Pathname.new(dir).join('dl').to_s
|
@@ -55,22 +59,22 @@ module ManifestDL
|
|
55
59
|
_verify! tempfile, item['sha512sum']
|
56
60
|
FileUtils.mkdir_p File.dirname(item['path'])
|
57
61
|
FileUtils.mv tempfile, item['path'], force: true
|
58
|
-
_cache! item['path'], item['sha512sum']
|
62
|
+
_cache! item['path'], item['sha512sum'], cache_dir
|
59
63
|
end
|
60
64
|
item['path']
|
61
65
|
end
|
62
66
|
|
63
67
|
# should file be downloaded?
|
64
68
|
# (i.e. does not exist or sum has changed)
|
65
|
-
def self._dl?(item)
|
69
|
+
def self._dl?(item, cache_dir)
|
66
70
|
return true unless File.exist? item['path']
|
67
|
-
_cached_sha512sum(item['path']) != item['sha512sum']
|
71
|
+
_cached_sha512sum(item['path'], cache_dir) != item['sha512sum']
|
68
72
|
end
|
69
73
|
|
70
74
|
# --
|
71
75
|
|
72
76
|
# download file w/ curl
|
73
|
-
def self._curl!(url, file, quiet
|
77
|
+
def self._curl!(url, file, quiet)
|
74
78
|
args = %w{ curl -L } + (quiet ? %w{ -s } : []) + ['-o', file, '--', url]
|
75
79
|
# no shell b/c multiple args!
|
76
80
|
system(*args) or raise SystemError 'curl returned non-zero'
|
@@ -88,22 +92,22 @@ module ManifestDL
|
|
88
92
|
|
89
93
|
# get item's cached sha512sum;
|
90
94
|
# returns nil if cache file does not exist
|
91
|
-
def self._cached_sha512sum(path)
|
92
|
-
file = _cachefile path
|
95
|
+
def self._cached_sha512sum(path, cache_dir)
|
96
|
+
file = _cachefile cache_dir, path
|
93
97
|
File.exist?(file) ? File.read(file) : nil
|
94
98
|
end
|
95
99
|
|
96
100
|
# cache item's sha512sum (based on sha1sum of path)
|
97
|
-
def self._cache!(path, sum)
|
98
|
-
FileUtils.mkdir_p
|
99
|
-
File.write _cachefile(path), sum
|
101
|
+
def self._cache!(path, sum, cache_dir)
|
102
|
+
FileUtils.mkdir_p cache_dir
|
103
|
+
File.write _cachefile(cache_dir, path), sum
|
100
104
|
nil
|
101
105
|
end
|
102
106
|
|
103
107
|
# cache file path
|
104
|
-
def self._cachefile(path)
|
108
|
+
def self._cachefile(cache_dir, path)
|
105
109
|
sha1 = Digest::SHA1.hexdigest path
|
106
|
-
Pathname.new(
|
110
|
+
Pathname.new(cache_dir).join(sha1).to_s
|
107
111
|
end
|
108
112
|
|
109
113
|
end
|
data/lib/manifest-dl/version.rb
CHANGED
data/manifest-dl.gemspec
CHANGED
@@ -3,10 +3,10 @@ require File.expand_path('../lib/manifest-dl/version', __FILE__)
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'manifest-dl'
|
5
5
|
s.homepage = 'https://github.com/obfusk/manifest-dl'
|
6
|
-
s.summary = 'download extra files for your app'
|
6
|
+
s.summary = 'download extra files for your ruby app'
|
7
7
|
|
8
8
|
s.description = <<-END.gsub(/^ {4}/, '')
|
9
|
-
download extra files for your app
|
9
|
+
download extra files for your ruby app
|
10
10
|
|
11
11
|
...
|
12
12
|
END
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: manifest-dl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix C. Stegerman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
description: |
|
28
|
-
download extra files for your app
|
28
|
+
download extra files for your ruby app
|
29
29
|
|
30
30
|
...
|
31
31
|
email:
|
@@ -65,6 +65,6 @@ rubyforge_project:
|
|
65
65
|
rubygems_version: 2.2.2
|
66
66
|
signing_key:
|
67
67
|
specification_version: 4
|
68
|
-
summary: download extra files for your app
|
68
|
+
summary: download extra files for your ruby app
|
69
69
|
test_files: []
|
70
70
|
has_rdoc:
|