dato 0.3.8 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 891d66575da4adc07c30e50a32fbd58a1c4aa220
4
- data.tar.gz: ac0d03088779bd0951f89ba7b0c5280580974212
3
+ metadata.gz: 4a049988df0dbd7359ffb3ba6c1d6636d4a65e2b
4
+ data.tar.gz: 59de0d31929d6732e26aabe60bebb26e123652ed
5
5
  SHA512:
6
- metadata.gz: 9d58c57016a7f4df7579dd47d209c6ee15bd64833d4344ca2e839a2aea1ab5b5d4e29399064fe51d9b822bc7d8c2f695cf465cd7ba9d8bc95d96f41b9e3ded2d
7
- data.tar.gz: b4ee25de9041b0f1fc66b70f3d73cfaefcddfa3f4a6d4fbcc1292792998679c2d0a7a5aca0b868eabbb0b623940940df4ba4b4784d9fecad0437180605f03ea0
6
+ metadata.gz: cd26bb40b37068991ba945e8dc2622170c312a7bbc449ef3736bc13bb59ff925d14f4899e2c0016c0614cbe30c2cd416db00bb438030b4cb92338a8b744569a2
7
+ data.tar.gz: 50b9b91829ff3004f2a3c2b2b34b6850ea9a0627cee86653c1f0cc2d7f291efcec3a187454353b1e77c9acd33815787277e3ee5f1efcfd02a02933354fe62f38
@@ -45,4 +45,5 @@ Gem::Specification.new do |spec|
45
45
  spec.add_runtime_dependency 'cacert'
46
46
  spec.add_runtime_dependency 'dotenv'
47
47
  spec.add_runtime_dependency 'pusher-client'
48
+ spec.add_runtime_dependency 'listen'
48
49
  end
@@ -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
- Dump::Runner.new(config_file, client).run
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
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Dato
3
- VERSION = '0.3.8'
3
+ VERSION = '0.3.9'
4
4
  end
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.8
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-07 00:00:00.000000000 Z
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