dato 0.3.8 → 0.3.9
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/dato.gemspec +1 -0
- data/lib/dato/cli.rb +61 -1
- data/lib/dato/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a049988df0dbd7359ffb3ba6c1d6636d4a65e2b
|
4
|
+
data.tar.gz: 59de0d31929d6732e26aabe60bebb26e123652ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd26bb40b37068991ba945e8dc2622170c312a7bbc449ef3736bc13bb59ff925d14f4899e2c0016c0614cbe30c2cd416db00bb438030b4cb92338a8b744569a2
|
7
|
+
data.tar.gz: 50b9b91829ff3004f2a3c2b2b34b6850ea9a0627cee86653c1f0cc2d7f291efcec3a187454353b1e77c9acd33815787277e3ee5f1efcfd02a02933354fe62f38
|
data/dato.gemspec
CHANGED
data/lib/dato/cli.rb
CHANGED
@@ -3,6 +3,9 @@ require 'thor'
|
|
3
3
|
require 'dato/dump/runner'
|
4
4
|
require 'dato/dump/ssg_detector'
|
5
5
|
require 'dato/migrate_slugs/runner'
|
6
|
+
require 'dato/watch/site_change_watcher'
|
7
|
+
require 'listen'
|
8
|
+
require 'thread'
|
6
9
|
|
7
10
|
module Dato
|
8
11
|
class Cli < Thor
|
@@ -11,8 +14,10 @@ module Dato
|
|
11
14
|
desc 'dump', 'dumps DatoCMS content into local files'
|
12
15
|
option :config, default: 'dato.config.rb'
|
13
16
|
option :token, default: ENV['DATO_API_TOKEN'], required: true
|
17
|
+
option :watch, default: false, type: :boolean
|
14
18
|
def dump
|
15
19
|
config_file = File.expand_path(options[:config])
|
20
|
+
watch_mode = options[:watch]
|
16
21
|
|
17
22
|
client = Dato::Site::Client.new(
|
18
23
|
options[:token],
|
@@ -22,7 +27,46 @@ module Dato
|
|
22
27
|
}
|
23
28
|
)
|
24
29
|
|
25
|
-
|
30
|
+
if watch_mode
|
31
|
+
site_id = client.request(:get, '/site')['data']['id']
|
32
|
+
|
33
|
+
semaphore = Mutex.new
|
34
|
+
|
35
|
+
thread_safe_dump(semaphore, config_file, client)
|
36
|
+
|
37
|
+
Dato::Watch::SiteChangeWatcher.new(site_id).connect do
|
38
|
+
thread_safe_dump(semaphore, config_file, client)
|
39
|
+
end
|
40
|
+
|
41
|
+
watch_config_file(config_file) do
|
42
|
+
thread_safe_dump(semaphore, config_file, client)
|
43
|
+
end
|
44
|
+
|
45
|
+
sleep
|
46
|
+
else
|
47
|
+
Dump::Runner.new(config_file, client).run
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
desc 'check', 'checks the presence of a DatoCMS token'
|
52
|
+
def check
|
53
|
+
exit 0 if ENV['DATO_API_TOKEN']
|
54
|
+
|
55
|
+
say 'Site token is not specified!'
|
56
|
+
token = ask "Please paste your DatoCMS site read-only API token:\n>"
|
57
|
+
|
58
|
+
if !token || token.empty?
|
59
|
+
puts 'Missing token'
|
60
|
+
exit 1
|
61
|
+
end
|
62
|
+
|
63
|
+
File.open('.env', 'a') do |file|
|
64
|
+
file.puts "DATO_API_TOKEN=#{token}"
|
65
|
+
end
|
66
|
+
|
67
|
+
say 'Token added to .env file.'
|
68
|
+
|
69
|
+
exit 0
|
26
70
|
end
|
27
71
|
|
28
72
|
desc 'migrate-slugs', 'migrates a Site so that it uses slug fields'
|
@@ -38,5 +82,21 @@ module Dato
|
|
38
82
|
|
39
83
|
MigrateSlugs::Runner.new(client, options[:skip_id_prefix]).run
|
40
84
|
end
|
85
|
+
|
86
|
+
no_tasks do
|
87
|
+
def watch_config_file(config_file, &block)
|
88
|
+
Listen.to(
|
89
|
+
File.dirname(config_file),
|
90
|
+
only: /#{Regexp.quote(File.basename(config_file))}/,
|
91
|
+
&block
|
92
|
+
).start
|
93
|
+
end
|
94
|
+
|
95
|
+
def thread_safe_dump(semaphore, config_file, client)
|
96
|
+
semaphore.synchronize do
|
97
|
+
Dump::Runner.new(config_file, client).run
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
41
101
|
end
|
42
102
|
end
|
data/lib/dato/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dato
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefano Verna
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -346,6 +346,20 @@ dependencies:
|
|
346
346
|
- - ">="
|
347
347
|
- !ruby/object:Gem::Version
|
348
348
|
version: '0'
|
349
|
+
- !ruby/object:Gem::Dependency
|
350
|
+
name: listen
|
351
|
+
requirement: !ruby/object:Gem::Requirement
|
352
|
+
requirements:
|
353
|
+
- - ">="
|
354
|
+
- !ruby/object:Gem::Version
|
355
|
+
version: '0'
|
356
|
+
type: :runtime
|
357
|
+
prerelease: false
|
358
|
+
version_requirements: !ruby/object:Gem::Requirement
|
359
|
+
requirements:
|
360
|
+
- - ">="
|
361
|
+
- !ruby/object:Gem::Version
|
362
|
+
version: '0'
|
349
363
|
description: Ruby client for DatoCMS API
|
350
364
|
email:
|
351
365
|
- s.verna@cantierecreativo.net
|