drumknott 0.1.1 → 0.2.0

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: dc46dbcdf65393aaf4af4a5dc577c6adc135a969
4
- data.tar.gz: f097fd31a67193b6d7e4061c945114cfc959348e
3
+ metadata.gz: d8212f93f568255ff2ecd7e0f72b52682ad63c28
4
+ data.tar.gz: 8e3435731be5c384b1bd9c62516909e38a2f428d
5
5
  SHA512:
6
- metadata.gz: 710b67e0e866939d75ced56247cbf0d2ab2690e9d032bf494a893d0494d030c2c40db4cff85aa191b64e2b24ee68fd3811f7c92ff4189760ce010ff0f4771af9
7
- data.tar.gz: 2e2c1e6a77f8df3dd73795cd4fcc53855b1ee7a103a4ca1faf8534ac9a3cbe0fd116299be9ec0cc23719953b0344ddc5881f46fd5b0d5636f39886d8170680b0
6
+ metadata.gz: 41e3d9bacfdee43bc3c3c17c02b4eb6eecc4f08ccd3efe7c8ab55a6ae7770fe97d10e27a79696c5a3fbabf874a48ca0886974ddddb4990f5c17e920561af1899
7
+ data.tar.gz: b838d47ff33dd8af2111c4b0db26825a2316202a68da5adb4a184d675c838d7b86acdf959900825ecf1b373cc42fd0fe733e63b3588e122c6a031fdb2099e656
data/README.md CHANGED
@@ -10,11 +10,13 @@ Command line tool for the Drumknott search service. When invoked, it takes each
10
10
 
11
11
  From within the local Jekyll site directory, using the credentials provided by Drumknott:
12
12
 
13
- $ drumknott keys SITE_NAME SITE_KEY
13
+ $ drumknott keys SITE_NAME SITE_KEY INCLUDE_PAGES
14
14
  $ drumknott refresh
15
15
 
16
16
  The `keys` command will save your credentials to a `.drumknott` file in your site's directory. Do not commit this file to git! If you don't want to have that file saved, you can alternatively use the environment variables `DRUMKNOTT_NAME` and `DRUMKNOTT_KEY` respectively.
17
17
 
18
+ By default, both posts and normal pages will be uploaded to Drumknott. If you only wish to include posts, the INCLUDE_PAGES argument in the `keys` command should be `'no'`. This can also be managed via the `DRUMKNOTT_PAGES` environment variable.
19
+
18
20
  ## Development
19
21
 
20
22
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -31,5 +33,5 @@ Firstly, please note the Code of Conduct for all contributions to this project.
31
33
 
32
34
  ## Licence
33
35
 
34
- Copyright (c) 2015, Drumknott is developed and maintained by Pat Allan, and is
36
+ Copyright (c) 2016, Drumknott is developed and maintained by Pat Allan, and is
35
37
  released under the open MIT Licence.
data/drumknott.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  # coding: utf-8
2
2
  Gem::Specification.new do |spec|
3
3
  spec.name = "drumknott"
4
- spec.version = "0.1.1"
4
+ spec.version = "0.2.0"
5
5
  spec.authors = ["Pat Allan"]
6
6
  spec.email = ["pat@freelancing-gods.com"]
7
7
 
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.add_runtime_dependency 'faraday'
19
19
  spec.add_runtime_dependency 'json'
20
- spec.add_runtime_dependency 'jekyll'
20
+ spec.add_runtime_dependency 'jekyll', '>= 3.0'
21
21
 
22
22
  spec.add_development_dependency 'rspec'
23
23
  spec.add_development_dependency 'webmock'
data/lib/drumknott.rb CHANGED
@@ -7,5 +7,6 @@ module Drumknott
7
7
  end
8
8
 
9
9
  require 'drumknott/cli'
10
+ require 'drumknott/include_pages'
10
11
  require 'drumknott/keys'
11
12
  require 'drumknott/refresh'
data/lib/drumknott/cli.rb CHANGED
@@ -1,18 +1,19 @@
1
1
  class Drumknott::CLI
2
2
  EMPTY_CACHE = {}.freeze
3
3
 
4
- def self.call(command, arguments = [], name = nil, key = nil)
5
- new(command, arguments, name, key).call
4
+ def self.call(command, arguments = [], name = nil, key = nil, include_pages = nil)
5
+ new(command, arguments, name, key, include_pages).call
6
6
  end
7
7
 
8
- def initialize(command, arguments = [], name = nil, key = nil)
9
- @command, @arguments, @name, @key = command, arguments, name, key
8
+ def initialize(command, arguments = [], name = nil, key = nil, include_pages = nil)
9
+ @command, @arguments, @name, @key, @include_pages =
10
+ command, arguments, name, key, include_pages
10
11
  end
11
12
 
12
13
  def call
13
14
  case command
14
15
  when 'refresh'
15
- Drumknott::Refresh.call name, key
16
+ Drumknott::Refresh.call name, key, include_pages?
16
17
  when 'keys'
17
18
  Drumknott::Keys.call arguments
18
19
  else
@@ -53,4 +54,11 @@ Credentials for Drumknott are expected via environment variables, or via a
53
54
  def key
54
55
  @key || cache['key'] || ENV['DRUMKNOTT_KEY']
55
56
  end
57
+
58
+ def include_pages?
59
+ return @include_pages unless @include_pages.nil?
60
+ return cache['pages'] unless cache['pages'].nil?
61
+
62
+ Drumknott::IncludePages.call ENV['DRUMKNOTT_PAGES']
63
+ end
56
64
  end
@@ -0,0 +1,12 @@
1
+ class Drumknott::IncludePages
2
+ TRUE_OPTIONS = ['true', 'yes', 'y'].freeze
3
+
4
+ def self.call(value)
5
+ case value
6
+ when TrueClass, FalseClass
7
+ value
8
+ else
9
+ value.nil? || TRUE_OPTIONS.include?(value.downcase)
10
+ end
11
+ end
12
+ end
@@ -4,17 +4,18 @@ class Drumknott::Keys
4
4
  end
5
5
 
6
6
  def initialize(arguments)
7
- @name, @key, ignored = *arguments
7
+ @name, @key, @pages, ignored = *arguments
8
8
  end
9
9
 
10
10
  def call
11
11
  File.write '.drumknott', JSON.generate(
12
- 'name' => name,
13
- 'key' => key
12
+ 'name' => name,
13
+ 'key' => key,
14
+ 'pages' => Drumknott::IncludePages.call(pages)
14
15
  )
15
16
  end
16
17
 
17
18
  private
18
19
 
19
- attr_reader :name, :key
20
+ attr_reader :name, :key, :pages
20
21
  end
@@ -1,12 +1,12 @@
1
1
  class Drumknott::Refresh
2
2
  URL = 'https://drumknottsearch.com'
3
3
 
4
- def self.call(name, key)
5
- new(name, key).call
4
+ def self.call(name, key, include_pages = true)
5
+ new(name, key, include_pages).call
6
6
  end
7
7
 
8
- def initialize(name, key)
9
- @name, @key = name, key
8
+ def initialize(name, key, include_pages)
9
+ @name, @key, @include_pages = name, key, include_pages
10
10
  end
11
11
 
12
12
  def call
@@ -34,26 +34,33 @@ class Drumknott::Refresh
34
34
  end
35
35
  end
36
36
 
37
+ def include_pages?
38
+ @include_pages
39
+ end
40
+
37
41
  def site
38
42
  @site ||= Jekyll::Site.new Jekyll.configuration
39
43
  end
40
44
 
41
45
  def update
42
- site.posts.each do |page|
43
- connection.put do |request|
44
- request.url "/api/v1/#{name}/pages"
45
-
46
- request.headers['AUTHENTICATION'] = key
47
- request.headers['Content-Type'] = 'application/json'
48
-
49
- request.body = JSON.generate({
50
- :page => {
51
- :name => page.title,
52
- :path => page.url,
53
- :content => page.output
54
- }
55
- })
56
- end
46
+ site.posts.docs.each { |document| update_document document }
47
+ site.pages.each { |page| update_document page } if include_pages?
48
+ end
49
+
50
+ def update_document(document)
51
+ connection.put do |request|
52
+ request.url "/api/v1/#{name}/pages"
53
+
54
+ request.headers['AUTHENTICATION'] = key
55
+ request.headers['Content-Type'] = 'application/json'
56
+
57
+ request.body = JSON.generate({
58
+ :page => {
59
+ :name => document.data['title'],
60
+ :path => document.url,
61
+ :content => document.output
62
+ }
63
+ })
57
64
  end
58
65
  end
59
66
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drumknott
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pat Allan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-27 00:00:00.000000000 Z
11
+ date: 2016-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '3.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '3.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -101,6 +101,7 @@ files:
101
101
  - exe/drumknott
102
102
  - lib/drumknott.rb
103
103
  - lib/drumknott/cli.rb
104
+ - lib/drumknott/include_pages.rb
104
105
  - lib/drumknott/keys.rb
105
106
  - lib/drumknott/refresh.rb
106
107
  homepage: https://github.com/pat/drumknott
@@ -128,3 +129,4 @@ signing_key:
128
129
  specification_version: 4
129
130
  summary: Jekyll content uploader for Drumknott's search service.
130
131
  test_files: []
132
+ has_rdoc: