manifest-dl 0.1.0 → 0.1.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.
- 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
|
[](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:
|