harp2hugo 0.0.1 → 0.0.2
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/.gitignore +4 -1
- data/README.md +15 -13
- data/bin/harp2hugo +6 -0
- data/harp2hugo.gemspec +2 -1
- data/lib/harp2hugo/cli.rb +12 -0
- data/lib/harp2hugo/converter.rb +26 -0
- data/lib/harp2hugo/meta_data.rb +10 -10
- data/lib/harp2hugo/version.rb +1 -1
- data/lib/harp2hugo.rb +1 -1
- data/spec/dropwizard-https-jerseyclient-with-runtime-jssecacerts.md +18 -0
- data/spec/harp2hugo_spec.rb +2 -2
- data/spec/meta_data_spec.rb +2 -2
- metadata +24 -7
- data/.idea/workspace.xml +0 -1524
- data/harp2hugo.iml +0 -29
- data/lib/harp2hugo/harp2hugo.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e13c075322caf10a5ba653cbcd64dbfc14dfaacd
|
4
|
+
data.tar.gz: 82e092b47e5d4e124529d5e4ef3dcb5934dfe75f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7e3fc132004c1a5c0f588538dfd679d4474309c268fa016eed705b8f47c803df4a9cffacd6dfd40858b858c29a009c5398dc33404a5fe2e84cf9be1dca721ce
|
7
|
+
data.tar.gz: 1feabba3006d38955f230bdba59ed99f4499a204b61cb37e11e6ac44b5e2a669f906ab141d6bf0ee89cfd3920716f883864c96529f7862264c29d56e335d5632
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,26 +1,28 @@
|
|
1
1
|
# Harp2hugo
|
2
|
+
[](http://badge.fury.io/rb/harp2hugo)
|
2
3
|
|
3
|
-
Gem for converting posts from [Harp](https://github.com/sintaxi/harp)
|
4
|
+
Gem for converting posts from [Harp](https://github.com/sintaxi/harp) [metadata json](http://harpjs.com/docs/development/metadata)
|
5
|
+
into [Hugo](https://github.com/spf13/hugo) [Front Matter](https://gohugo.io/content/front-matter/) format.
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
## Installation
|
8
|
-
|
9
|
-
Add this line to your application's Gemfile:
|
7
|
+
## Usage
|
10
8
|
|
11
|
-
gem
|
9
|
+
$ gem install harp2hugo
|
10
|
+
$ harp2hugo [input_file] [output_dir]
|
12
11
|
|
13
|
-
|
12
|
+
Where input_file defaults to `_data.json` and output_dir defaults to `output`.
|
13
|
+
NOTE: the output dir will be created relative to your input file directory.
|
14
14
|
|
15
|
-
$
|
15
|
+
$ harp2hugo public/posts/_data.json output
|
16
16
|
|
17
|
-
|
17
|
+
Logic is to loop through each post specified in `_data.json` file:
|
18
18
|
|
19
|
-
|
19
|
+
1. Reads in the metadata in JSON format
|
20
|
+
2. Convert metadata to YAML format and prepend to the post
|
21
|
+
3. Write the new post with prepended metadata into output directory.
|
20
22
|
|
21
|
-
##
|
23
|
+
## Disclaimer
|
22
24
|
|
23
|
-
|
25
|
+
Currently still work in progress. Written with plenty of help from [@nagliyvred](https://github.com/nagliyvred)
|
24
26
|
|
25
27
|
## Contributing
|
26
28
|
|
data/bin/harp2hugo
ADDED
data/harp2hugo.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.summary = %q{harp to hugo converter}
|
12
12
|
spec.description = %q{converts your Harp _data.json meta data into Hugo's format}
|
13
13
|
spec.homepage = ""
|
14
|
-
spec.license = "
|
14
|
+
spec.license = "Apache2"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.6"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "rspec"
|
24
|
+
spec.add_runtime_dependency "thor", "~> 0.19"
|
24
25
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require "harp2hugo"
|
2
|
+
|
3
|
+
module Harp2Hugo
|
4
|
+
class CLI < Thor
|
5
|
+
desc "convert [input_file] [output_dir]", "convert [input_file](default: _data.json) file into [output_dir](default: output) directory"
|
6
|
+
def convert(input_file="_data.json", output_dir="output")
|
7
|
+
puts "Converting: #{input_file}"
|
8
|
+
Dir.chdir(File.dirname(input_file))
|
9
|
+
Harp2Hugo::Converter.new(File.basename(input_file)).convert(output_dir)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "json"
|
2
|
+
|
3
|
+
module Harp2Hugo
|
4
|
+
class Converter
|
5
|
+
|
6
|
+
def initialize input_file
|
7
|
+
@data_json = JSON.parse(File.read input_file)
|
8
|
+
end
|
9
|
+
|
10
|
+
def convert output_dir
|
11
|
+
|
12
|
+
@data_json.delete("feed")
|
13
|
+
|
14
|
+
Dir.mkdir(output_dir) unless Dir.exist? output_dir
|
15
|
+
@data_json.each { |key, value|
|
16
|
+
post_content = File.read("#{key}.md")
|
17
|
+
File.open("#{output_dir}/#{key}.md", 'w') { |output_file|
|
18
|
+
output_file.write MetaData.new(value).to_yaml
|
19
|
+
output_file.write post_content
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
data/lib/harp2hugo/meta_data.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
require "yaml"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
module Harp2Hugo
|
4
|
+
class MetaData
|
5
|
+
def initialize json_data
|
6
|
+
@json_data = json_data
|
7
|
+
end
|
8
|
+
|
9
|
+
def to_yaml
|
10
|
+
@json_data["linktitle"] = @json_data["title"]
|
11
|
+
"#{@json_data.to_yaml}---\n"
|
12
|
+
end
|
12
13
|
end
|
13
|
-
|
14
14
|
end
|
data/lib/harp2hugo/version.rb
CHANGED
data/lib/harp2hugo.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
For Jersey Client (or any Java web client for that matter) to connect to a SSL endpoint, the target server certificate must be
|
3
|
+
installed as `jssecacerts` files into your JRE truststore at `$JAVA_HOME\jre\lib\security`. This is painful if you don't have access
|
4
|
+
to infrastructure, or don't want to patch/update your server/base Docker container everytime your SSL certificate changes. I will
|
5
|
+
show you a more elegant solution for JerseyClient/Dropwizard JerseyClient, where the certificate is loaded from file during runtime
|
6
|
+
and doesn't need to live in the JRE.
|
7
|
+
|
8
|
+
1. Extract server certificate in JSSE format - Mkyong has a very good tutorial on [extracting server certificate into jssecacerts][mkyong] using [InstallCert][InstallCert].
|
9
|
+
2. Once you have the `jssecacerts` file, put it inside your application's `src/main/resources` folder.
|
10
|
+
3. For a vanillar Jersey Client, you can enable HTTPS following this [answer][answer] and referenced links.
|
11
|
+
4. Dropwizard JerseyClient is built using its own `JerseyClientBuilder`, which you need to confirm to. The answer can be found [JerseyClientBuilderTest][test].
|
12
|
+
Simply replace the default `SSLSocketConnectionFactory` with one initialised using your `jssecacerts` TrustStore. A gist is worth a thounsand words:
|
13
|
+
<script src="https://gist.github.com/yunspace/7687f67a8eeade0c92d5.js"></script>
|
14
|
+
|
15
|
+
[mkyong]: http://www.mkyong.com/webservices/jax-ws/suncertpathbuilderexception-unable-to-find-valid-certification-path-to-requested-target/
|
16
|
+
[InstallCert]: https://github.com/escline/InstallCert
|
17
|
+
[answer]: http://stackoverflow.com/questions/2145431/https-using-jersey-client
|
18
|
+
[test]: https://github.com/dropwizard/dropwizard/blob/7ce0d065133cf68191389cf129dffa157c239cb0/dropwizard-client/src/test/java/io/dropwizard/client/JerseyClientBuilderTest.java#L280
|
data/spec/harp2hugo_spec.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'harp2hugo'
|
3
3
|
|
4
|
-
describe(
|
4
|
+
describe(Harp2Hugo::Converter) do
|
5
5
|
|
6
6
|
it "should load json data and create a new file" do
|
7
7
|
Dir.chdir("spec")
|
8
|
-
harp2hugo =
|
8
|
+
harp2hugo = Harp2Hugo::Converter.new "_data.json"
|
9
9
|
|
10
10
|
harp2hugo.convert "output"
|
11
11
|
|
data/spec/meta_data_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'harp2hugo'
|
3
3
|
|
4
|
-
describe(MetaData) do
|
4
|
+
describe(Harp2Hugo::MetaData) do
|
5
5
|
|
6
6
|
expected_yaml = <<-eos
|
7
7
|
---
|
@@ -21,7 +21,7 @@ linktitle: Dropwizard HTTPS JerseyClient with runtime JSSE CA Certificates
|
|
21
21
|
"date" => "2015-05-16",
|
22
22
|
"tags" => ["dropwizard", "ssl", "jersey"],
|
23
23
|
"author" => "yunspace"}
|
24
|
-
metadata = MetaData.new(json_data)
|
24
|
+
metadata = Harp2Hugo::MetaData.new(json_data)
|
25
25
|
|
26
26
|
expect(metadata.to_yaml).to eq(expected_yaml)
|
27
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: harp2hugo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yun Zhi Lin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,10 +52,25 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: thor
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.19'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.19'
|
55
69
|
description: converts your Harp _data.json meta data into Hugo's format
|
56
70
|
email:
|
57
71
|
- yun@yunspace.com
|
58
|
-
executables:
|
72
|
+
executables:
|
73
|
+
- harp2hugo
|
59
74
|
extensions: []
|
60
75
|
extra_rdoc_files: []
|
61
76
|
files:
|
@@ -68,26 +83,27 @@ files:
|
|
68
83
|
- ".idea/modules.xml"
|
69
84
|
- ".idea/scopes/scope_settings.xml"
|
70
85
|
- ".idea/vcs.xml"
|
71
|
-
- ".idea/workspace.xml"
|
72
86
|
- Gemfile
|
73
87
|
- LICENSE.txt
|
74
88
|
- README.md
|
75
89
|
- Rakefile
|
90
|
+
- bin/harp2hugo
|
76
91
|
- harp2hugo.gemspec
|
77
|
-
- harp2hugo.iml
|
78
92
|
- lib/harp2hugo.rb
|
79
|
-
- lib/harp2hugo/
|
93
|
+
- lib/harp2hugo/cli.rb
|
94
|
+
- lib/harp2hugo/converter.rb
|
80
95
|
- lib/harp2hugo/meta_data.rb
|
81
96
|
- lib/harp2hugo/version.rb
|
82
97
|
- spec/_data.json
|
83
98
|
- spec/data.yml
|
99
|
+
- spec/dropwizard-https-jerseyclient-with-runtime-jssecacerts.md
|
84
100
|
- spec/harp2hugo_spec.rb
|
85
101
|
- spec/meta_data_spec.rb
|
86
102
|
- spec/output.md
|
87
103
|
- spec/spec_helper.rb
|
88
104
|
homepage: ''
|
89
105
|
licenses:
|
90
|
-
-
|
106
|
+
- Apache2
|
91
107
|
metadata: {}
|
92
108
|
post_install_message:
|
93
109
|
rdoc_options: []
|
@@ -112,6 +128,7 @@ summary: harp to hugo converter
|
|
112
128
|
test_files:
|
113
129
|
- spec/_data.json
|
114
130
|
- spec/data.yml
|
131
|
+
- spec/dropwizard-https-jerseyclient-with-runtime-jssecacerts.md
|
115
132
|
- spec/harp2hugo_spec.rb
|
116
133
|
- spec/meta_data_spec.rb
|
117
134
|
- spec/output.md
|