everything-core 0.0.9 → 0.0.10
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 +5 -5
- data/Gemfile +2 -0
- data/README.md +5 -4
- data/bin/console +10 -12
- data/bin/setup +5 -15
- data/everything-core.gemspec +15 -10
- data/lib/everything/version.rb +1 -1
- metadata +16 -41
- data/bin/bundler +0 -16
- data/bin/dotenv +0 -16
- data/bin/htmldiff +0 -16
- data/bin/ldiff +0 -16
- data/bin/rake +0 -16
- data/bin/rspec +0 -16
- data/spec/everything/piece/content_spec.rb +0 -202
- data/spec/everything/piece/metadata_spec.rb +0 -198
- data/spec/everything/piece_spec.rb +0 -195
- data/spec/everything_spec.rb +0 -19
- data/spec/spec_helper.rb +0 -99
- data/spec/support/pieces.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 31549f8f23078f98d24bd919d4a8d86c4111c16f1b55f1ac150c1fee8f20fbea
|
4
|
+
data.tar.gz: a263ce02a4ed1994348903f3dc65bac7e2d3f1d431126aba9a143c25728c10d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f6ca08a99be2b761ba6bdbfcbe188d4c8fd83b51dc3fc399c5183d7049ad678389386ee1b8a41927b41e416ca41a33ac2f619f33aed0d6d5d53ffca9c759a7c4
|
7
|
+
data.tar.gz: 8f4b3b5a8ebbf9aa44a14ec632a6bf53dd21af24204d326db6007dbdd8fa6994cd95377ccb144a6fbf4f6267107c5d72a4742538fcb0cb05d47c47a873e0d161
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -102,10 +102,11 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
102
102
|
`rake spec` to run the tests. You can also run `bin/console` for an interactive
|
103
103
|
prompt that will allow you to experiment.
|
104
104
|
|
105
|
-
To install this gem onto your local machine, run `
|
106
|
-
|
107
|
-
|
108
|
-
|
105
|
+
To install this gem onto your local machine, run `rake install`. To release
|
106
|
+
a new version, update the version number in `lib/everything/version.rb`, and
|
107
|
+
commit the version file change. Then you can create a build with `rake build`.
|
108
|
+
Then run `rake release`, which will create a git tag for the
|
109
|
+
version, push git commits and tags, and push the `.gem` file to
|
109
110
|
[rubygems.org](https://rubygems.org).
|
110
111
|
|
111
112
|
|
data/bin/console
CHANGED
@@ -1,16 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# This file was generated by Bundler.
|
4
|
-
#
|
5
|
-
# The application 'console' is installed as part of a gem, and
|
6
|
-
# this file is here to facilitate running it.
|
7
|
-
#
|
8
2
|
|
9
|
-
require "pathname"
|
10
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
11
|
-
Pathname.new(__FILE__).realpath)
|
12
|
-
|
13
|
-
require "rubygems"
|
14
3
|
require "bundler/setup"
|
4
|
+
require "everything"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
15
12
|
|
16
|
-
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
CHANGED
@@ -1,16 +1,6 @@
|
|
1
|
-
#!/usr/bin/env
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
# The application 'setup' is installed as part of a gem, and
|
6
|
-
# this file is here to facilitate running it.
|
7
|
-
#
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
set -euo pipefail
|
3
|
+
IFS=$'\n\t'
|
4
|
+
set -vx
|
8
5
|
|
9
|
-
|
10
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
11
|
-
Pathname.new(__FILE__).realpath)
|
12
|
-
|
13
|
-
require "rubygems"
|
14
|
-
require "bundler/setup"
|
15
|
-
|
16
|
-
load Gem.bin_path("everything-core", "setup")
|
6
|
+
bundle install
|
data/everything-core.gemspec
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'everything/version'
|
1
|
+
require_relative 'lib/everything/version'
|
5
2
|
|
6
3
|
Gem::Specification.new do |spec|
|
7
4
|
spec.name = 'everything-core'
|
@@ -12,17 +9,25 @@ Gem::Specification.new do |spec|
|
|
12
9
|
spec.description = %q{Gives you access to pieces within your everything repo.}
|
13
10
|
spec.homepage = 'https://github.com/kyletolle/everything-core'
|
14
11
|
spec.license = 'MIT'
|
12
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.1")
|
15
13
|
|
16
|
-
spec.
|
17
|
-
spec.
|
18
|
-
|
19
|
-
|
14
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
15
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
16
|
+
|
17
|
+
# Specify which files should be added to the gem when it is released.
|
18
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
19
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
20
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
21
|
+
end
|
22
|
+
spec.bindir = "exe"
|
23
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
|
+
spec.require_paths = ["lib"]
|
20
25
|
|
21
26
|
spec.add_runtime_dependency 'dotenv', '~> 2.1'
|
22
27
|
spec.add_runtime_dependency 'fastenv', '= 0.0.3'
|
23
28
|
|
24
|
-
spec.add_development_dependency 'bundler', '~> 1
|
25
|
-
spec.add_development_dependency 'rake', '
|
29
|
+
spec.add_development_dependency 'bundler', '~> 2.1'
|
30
|
+
spec.add_development_dependency 'rake', '>= 12.3.3'
|
26
31
|
spec.add_development_dependency 'rspec', '~> 3.4'
|
27
32
|
end
|
28
33
|
|
data/lib/everything/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: everything-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kyle Tolle
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dotenv
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1
|
47
|
+
version: '2.1'
|
48
48
|
type: :development
|
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: '1
|
54
|
+
version: '2.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 12.3.3
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 12.3.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -83,15 +83,7 @@ dependencies:
|
|
83
83
|
description: Gives you access to pieces within your everything repo.
|
84
84
|
email:
|
85
85
|
- kyle@nullsix.com
|
86
|
-
executables:
|
87
|
-
- bundler
|
88
|
-
- console
|
89
|
-
- dotenv
|
90
|
-
- htmldiff
|
91
|
-
- ldiff
|
92
|
-
- rake
|
93
|
-
- rspec
|
94
|
-
- setup
|
86
|
+
executables: []
|
95
87
|
extensions: []
|
96
88
|
extra_rdoc_files: []
|
97
89
|
files:
|
@@ -104,13 +96,7 @@ files:
|
|
104
96
|
- LICENSE
|
105
97
|
- README.md
|
106
98
|
- Rakefile
|
107
|
-
- bin/bundler
|
108
99
|
- bin/console
|
109
|
-
- bin/dotenv
|
110
|
-
- bin/htmldiff
|
111
|
-
- bin/ldiff
|
112
|
-
- bin/rake
|
113
|
-
- bin/rspec
|
114
100
|
- bin/setup
|
115
101
|
- everything-core.gemspec
|
116
102
|
- lib/everything.rb
|
@@ -118,16 +104,12 @@ files:
|
|
118
104
|
- lib/everything/piece/content.rb
|
119
105
|
- lib/everything/piece/metadata.rb
|
120
106
|
- lib/everything/version.rb
|
121
|
-
- spec/everything/piece/content_spec.rb
|
122
|
-
- spec/everything/piece/metadata_spec.rb
|
123
|
-
- spec/everything/piece_spec.rb
|
124
|
-
- spec/everything_spec.rb
|
125
|
-
- spec/spec_helper.rb
|
126
|
-
- spec/support/pieces.rb
|
127
107
|
homepage: https://github.com/kyletolle/everything-core
|
128
108
|
licenses:
|
129
109
|
- MIT
|
130
|
-
metadata:
|
110
|
+
metadata:
|
111
|
+
homepage_uri: https://github.com/kyletolle/everything-core
|
112
|
+
source_code_uri: https://github.com/kyletolle/everything-core
|
131
113
|
post_install_message:
|
132
114
|
rdoc_options: []
|
133
115
|
require_paths:
|
@@ -136,22 +118,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
136
118
|
requirements:
|
137
119
|
- - ">="
|
138
120
|
- !ruby/object:Gem::Version
|
139
|
-
version:
|
121
|
+
version: 2.7.1
|
140
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
123
|
requirements:
|
142
124
|
- - ">="
|
143
125
|
- !ruby/object:Gem::Version
|
144
126
|
version: '0'
|
145
127
|
requirements: []
|
146
|
-
|
147
|
-
rubygems_version: 2.6.11
|
128
|
+
rubygems_version: 3.1.2
|
148
129
|
signing_key:
|
149
130
|
specification_version: 4
|
150
131
|
summary: Library for working with your `everything` repository.
|
151
|
-
test_files:
|
152
|
-
- spec/everything/piece/content_spec.rb
|
153
|
-
- spec/everything/piece/metadata_spec.rb
|
154
|
-
- spec/everything/piece_spec.rb
|
155
|
-
- spec/everything_spec.rb
|
156
|
-
- spec/spec_helper.rb
|
157
|
-
- spec/support/pieces.rb
|
132
|
+
test_files: []
|
data/bin/bundler
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# This file was generated by Bundler.
|
4
|
-
#
|
5
|
-
# The application 'bundler' is installed as part of a gem, and
|
6
|
-
# this file is here to facilitate running it.
|
7
|
-
#
|
8
|
-
|
9
|
-
require "pathname"
|
10
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
11
|
-
Pathname.new(__FILE__).realpath)
|
12
|
-
|
13
|
-
require "rubygems"
|
14
|
-
require "bundler/setup"
|
15
|
-
|
16
|
-
load Gem.bin_path("bundler", "bundler")
|
data/bin/dotenv
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# This file was generated by Bundler.
|
4
|
-
#
|
5
|
-
# The application 'dotenv' is installed as part of a gem, and
|
6
|
-
# this file is here to facilitate running it.
|
7
|
-
#
|
8
|
-
|
9
|
-
require "pathname"
|
10
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
11
|
-
Pathname.new(__FILE__).realpath)
|
12
|
-
|
13
|
-
require "rubygems"
|
14
|
-
require "bundler/setup"
|
15
|
-
|
16
|
-
load Gem.bin_path("dotenv", "dotenv")
|
data/bin/htmldiff
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# This file was generated by Bundler.
|
4
|
-
#
|
5
|
-
# The application 'htmldiff' is installed as part of a gem, and
|
6
|
-
# this file is here to facilitate running it.
|
7
|
-
#
|
8
|
-
|
9
|
-
require "pathname"
|
10
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
11
|
-
Pathname.new(__FILE__).realpath)
|
12
|
-
|
13
|
-
require "rubygems"
|
14
|
-
require "bundler/setup"
|
15
|
-
|
16
|
-
load Gem.bin_path("diff-lcs", "htmldiff")
|
data/bin/ldiff
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# This file was generated by Bundler.
|
4
|
-
#
|
5
|
-
# The application 'ldiff' is installed as part of a gem, and
|
6
|
-
# this file is here to facilitate running it.
|
7
|
-
#
|
8
|
-
|
9
|
-
require "pathname"
|
10
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
11
|
-
Pathname.new(__FILE__).realpath)
|
12
|
-
|
13
|
-
require "rubygems"
|
14
|
-
require "bundler/setup"
|
15
|
-
|
16
|
-
load Gem.bin_path("diff-lcs", "ldiff")
|
data/bin/rake
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# This file was generated by Bundler.
|
4
|
-
#
|
5
|
-
# The application 'rake' is installed as part of a gem, and
|
6
|
-
# this file is here to facilitate running it.
|
7
|
-
#
|
8
|
-
|
9
|
-
require "pathname"
|
10
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
11
|
-
Pathname.new(__FILE__).realpath)
|
12
|
-
|
13
|
-
require "rubygems"
|
14
|
-
require "bundler/setup"
|
15
|
-
|
16
|
-
load Gem.bin_path("rake", "rake")
|
data/bin/rspec
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# This file was generated by Bundler.
|
4
|
-
#
|
5
|
-
# The application 'rspec' is installed as part of a gem, and
|
6
|
-
# this file is here to facilitate running it.
|
7
|
-
#
|
8
|
-
|
9
|
-
require "pathname"
|
10
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
11
|
-
Pathname.new(__FILE__).realpath)
|
12
|
-
|
13
|
-
require "rubygems"
|
14
|
-
require "bundler/setup"
|
15
|
-
|
16
|
-
load Gem.bin_path("rspec-core", "rspec")
|
@@ -1,202 +0,0 @@
|
|
1
|
-
require './spec/support/pieces'
|
2
|
-
|
3
|
-
describe Everything::Piece::Content do
|
4
|
-
shared_context 'with tmp piece markdown file on disk' do
|
5
|
-
let(:tmp_piece_markdown_path) do
|
6
|
-
File.join(tmp_piece_path, 'index.md')
|
7
|
-
end
|
8
|
-
|
9
|
-
let(:given_markdown) do
|
10
|
-
<<MD
|
11
|
-
# Piece Title Here
|
12
|
-
|
13
|
-
The body is totally this right here.
|
14
|
-
|
15
|
-
And it might even include multiple lines!
|
16
|
-
MD
|
17
|
-
end
|
18
|
-
|
19
|
-
before do
|
20
|
-
File.open(tmp_piece_markdown_path, 'w') do |markdown_file|
|
21
|
-
markdown_file.puts given_markdown
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
let(:content) do
|
27
|
-
described_class.new(tmp_piece_path)
|
28
|
-
end
|
29
|
-
|
30
|
-
describe '#file_name' do
|
31
|
-
include_context 'with tmp piece on disk'
|
32
|
-
|
33
|
-
let(:expected_file_name) do
|
34
|
-
'index.md'
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'is the markdown file according to everything convention' do
|
38
|
-
expect(content.file_name).to eq(expected_file_name)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe '#file_path' do
|
43
|
-
include_context 'with tmp piece on disk'
|
44
|
-
|
45
|
-
let(:expected_file_path) do
|
46
|
-
"#{tmp_piece_path}/index.md"
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'is the index.md under the piece' do
|
50
|
-
expect(content.file_path).to eq(expected_file_path)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe '#title' do
|
55
|
-
include_context 'with tmp piece on disk'
|
56
|
-
include_context 'with tmp piece markdown file on disk'
|
57
|
-
|
58
|
-
let(:expected_title) do
|
59
|
-
'Piece Title Here'
|
60
|
-
end
|
61
|
-
|
62
|
-
it 'is the title from the markdown' do
|
63
|
-
expect(content.title).to eq(expected_title)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
describe '#body' do
|
68
|
-
include_context 'with tmp piece on disk'
|
69
|
-
include_context 'with tmp piece markdown file on disk'
|
70
|
-
|
71
|
-
let(:expected_body) do
|
72
|
-
<<MD
|
73
|
-
The body is totally this right here.
|
74
|
-
|
75
|
-
And it might even include multiple lines!
|
76
|
-
MD
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'is the body text from the markdown' do
|
80
|
-
expect(content.body).to eq(expected_body)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
describe '#raw_markdown' do
|
85
|
-
include_context 'with tmp piece on disk'
|
86
|
-
include_context 'with tmp piece markdown file on disk'
|
87
|
-
|
88
|
-
let(:expected_raw_markdown) do
|
89
|
-
given_markdown
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'is the markdown from the file' do
|
93
|
-
expect(content.raw_markdown).to eq(expected_raw_markdown)
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'memoizes the file read' do
|
97
|
-
allow(File)
|
98
|
-
.to receive(:read)
|
99
|
-
.and_call_original
|
100
|
-
|
101
|
-
2.times { content.raw_markdown }
|
102
|
-
|
103
|
-
expect(File)
|
104
|
-
.to have_received(:read)
|
105
|
-
.exactly(:once)
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
describe '#raw_markdown=' do
|
110
|
-
include_context 'with tmp piece on disk'
|
111
|
-
|
112
|
-
let(:new_raw_markdown) do
|
113
|
-
<<MD
|
114
|
-
# New Markdown
|
115
|
-
|
116
|
-
This is a completely new bit of markdown.
|
117
|
-
MD
|
118
|
-
end
|
119
|
-
|
120
|
-
it 'sets the raw_markdown value' do
|
121
|
-
content.raw_markdown = new_raw_markdown
|
122
|
-
|
123
|
-
expect(content.raw_markdown).to eq(new_raw_markdown)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
describe '#save' do
|
128
|
-
let(:tmp_dir) do
|
129
|
-
Dir.tmpdir
|
130
|
-
end
|
131
|
-
|
132
|
-
let(:tmp_piece_path) do
|
133
|
-
File.join(tmp_dir, 'a-test-piece')
|
134
|
-
end
|
135
|
-
|
136
|
-
before do
|
137
|
-
content.raw_markdown = "# Ship Shape"
|
138
|
-
end
|
139
|
-
|
140
|
-
after do
|
141
|
-
FileUtils.remove_entry(tmp_piece_path)
|
142
|
-
end
|
143
|
-
|
144
|
-
context 'when the piece directory does not exist' do
|
145
|
-
it 'creates the folder' do
|
146
|
-
expect(Dir.exist?(tmp_piece_path)).to eq(false)
|
147
|
-
|
148
|
-
content.save
|
149
|
-
|
150
|
-
expect(Dir.exist?(tmp_piece_path)).to eq(true)
|
151
|
-
end
|
152
|
-
|
153
|
-
it 'creates the content markdown file' do
|
154
|
-
expect(File.exist?(content.file_path)).to eq(false)
|
155
|
-
|
156
|
-
content.save
|
157
|
-
|
158
|
-
expect(File.exist?(content.file_path)).to eq(true)
|
159
|
-
end
|
160
|
-
|
161
|
-
it 'writes the markdown to the file' do
|
162
|
-
content.save
|
163
|
-
|
164
|
-
expect(File.read(content.file_path)).to eq('# Ship Shape')
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
context 'when the piece directory exists' do
|
169
|
-
before do
|
170
|
-
FileUtils.mkdir_p(tmp_piece_path)
|
171
|
-
end
|
172
|
-
|
173
|
-
context 'when the content file does not exist' do
|
174
|
-
it 'creates the content markdown file' do
|
175
|
-
expect(File.exist?(content.file_path)).to eq(false)
|
176
|
-
|
177
|
-
content.save
|
178
|
-
|
179
|
-
expect(File.exist?(content.file_path)).to eq(true)
|
180
|
-
end
|
181
|
-
|
182
|
-
it 'writes the markdown to the file' do
|
183
|
-
content.save
|
184
|
-
|
185
|
-
expect(File.read(content.file_path)).to eq('# Ship Shape')
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
context 'when the content file already exists' do
|
190
|
-
before do
|
191
|
-
File.write(content.file_path, '# Rolly Polly')
|
192
|
-
end
|
193
|
-
|
194
|
-
it 'overwrites the file with the correct markdown' do
|
195
|
-
content.save
|
196
|
-
|
197
|
-
expect(File.read(content.file_path)).to eq('# Ship Shape')
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|
201
|
-
end
|
202
|
-
end
|
@@ -1,198 +0,0 @@
|
|
1
|
-
require './spec/support/pieces'
|
2
|
-
|
3
|
-
describe Everything::Piece::Metadata do
|
4
|
-
shared_context 'with tmp piece metadata file on disk' do
|
5
|
-
let(:tmp_piece_metadata_path) do
|
6
|
-
File.join(tmp_piece_path, 'index.yaml')
|
7
|
-
end
|
8
|
-
|
9
|
-
let(:given_yaml) do
|
10
|
-
<<YAML
|
11
|
-
---
|
12
|
-
public: false
|
13
|
-
YAML
|
14
|
-
end
|
15
|
-
|
16
|
-
before do
|
17
|
-
File.open(tmp_piece_metadata_path, 'w') do |metadata_file|
|
18
|
-
metadata_file.puts given_yaml
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
let(:metadata) do
|
24
|
-
described_class.new(tmp_piece_path)
|
25
|
-
end
|
26
|
-
|
27
|
-
describe '#[]' do
|
28
|
-
include_context 'with tmp piece on disk'
|
29
|
-
|
30
|
-
let(:yaml_double) do
|
31
|
-
instance_double(Hash)
|
32
|
-
end
|
33
|
-
let(:given_key) { 'public' }
|
34
|
-
|
35
|
-
before do
|
36
|
-
expect(YAML)
|
37
|
-
.to receive(:load_file)
|
38
|
-
.and_return(yaml_double)
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'delegates to the yaml' do
|
42
|
-
allow(yaml_double)
|
43
|
-
.to receive(:[])
|
44
|
-
|
45
|
-
metadata[given_key]
|
46
|
-
|
47
|
-
expect(yaml_double)
|
48
|
-
.to have_received(:[])
|
49
|
-
.with(given_key)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
describe '#file_path' do
|
54
|
-
include_context 'with tmp piece on disk'
|
55
|
-
|
56
|
-
let(:expected_file_path) do
|
57
|
-
"#{tmp_piece_path}/index.yaml"
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'is the index.yaml under the piece' do
|
61
|
-
expect(metadata.file_path).to eq(expected_file_path)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe '#raw_yaml' do
|
66
|
-
include_context 'with tmp piece on disk'
|
67
|
-
include_context 'with tmp piece metadata file on disk'
|
68
|
-
|
69
|
-
let(:expected_raw_yaml) do
|
70
|
-
{
|
71
|
-
'public' => false
|
72
|
-
}
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'is the yaml as parsed from the file' do
|
76
|
-
expect(metadata.raw_yaml).to eq(expected_raw_yaml)
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'memoizes the yaml read' do
|
80
|
-
allow(YAML)
|
81
|
-
.to receive(:load_file)
|
82
|
-
.and_call_original
|
83
|
-
|
84
|
-
metadata.raw_yaml
|
85
|
-
metadata.raw_yaml
|
86
|
-
|
87
|
-
expect(YAML)
|
88
|
-
.to have_received(:load_file)
|
89
|
-
.exactly(:once)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
describe '#raw_yaml=' do
|
94
|
-
include_context 'with tmp piece on disk'
|
95
|
-
|
96
|
-
let(:new_raw_yaml) do
|
97
|
-
<<YAML
|
98
|
-
---
|
99
|
-
public: true
|
100
|
-
other: okay
|
101
|
-
YAML
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'sets the raw_yaml value' do
|
105
|
-
metadata.raw_yaml = new_raw_yaml
|
106
|
-
|
107
|
-
expect(metadata.raw_yaml).to eq(new_raw_yaml)
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
describe '#save' do
|
112
|
-
let(:tmp_dir) do
|
113
|
-
Dir.tmpdir
|
114
|
-
end
|
115
|
-
|
116
|
-
let(:tmp_piece_path) do
|
117
|
-
File.join(tmp_dir, 'fake-piece-here')
|
118
|
-
end
|
119
|
-
|
120
|
-
before do
|
121
|
-
metadata.raw_yaml = <<YAML
|
122
|
-
---
|
123
|
-
favorite_color: blue
|
124
|
-
YAML
|
125
|
-
end
|
126
|
-
|
127
|
-
after do
|
128
|
-
FileUtils.remove_entry(tmp_piece_path)
|
129
|
-
end
|
130
|
-
|
131
|
-
context 'when the piece directory does not exist' do
|
132
|
-
it 'creates the folder' do
|
133
|
-
expect(Dir.exist?(tmp_piece_path)).to eq(false)
|
134
|
-
|
135
|
-
metadata.save
|
136
|
-
|
137
|
-
expect(Dir.exist?(tmp_piece_path)).to eq(true)
|
138
|
-
end
|
139
|
-
|
140
|
-
it 'creates the metadata yaml file' do
|
141
|
-
expect(File.exist?(metadata.file_path)).to eq(false)
|
142
|
-
|
143
|
-
metadata.save
|
144
|
-
|
145
|
-
expect(File.exist?(metadata.file_path)).to eq(true)
|
146
|
-
end
|
147
|
-
|
148
|
-
it 'writes the yaml to the file' do
|
149
|
-
metadata.save
|
150
|
-
|
151
|
-
expect(File.read(metadata.file_path)).to eq(<<YAML)
|
152
|
-
---
|
153
|
-
favorite_color: blue
|
154
|
-
YAML
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
context 'when the piece directory exists' do
|
159
|
-
before do
|
160
|
-
FileUtils.mkdir_p(tmp_piece_path)
|
161
|
-
end
|
162
|
-
|
163
|
-
context 'when the metadata file does not exist' do
|
164
|
-
it 'creates the metadata yaml file' do
|
165
|
-
expect(File.exist?(metadata.file_path)).to eq(false)
|
166
|
-
|
167
|
-
metadata.save
|
168
|
-
|
169
|
-
expect(File.exist?(metadata.file_path)).to eq(true)
|
170
|
-
end
|
171
|
-
|
172
|
-
it 'writes the yaml to the file' do
|
173
|
-
metadata.save
|
174
|
-
|
175
|
-
expect(File.read(metadata.file_path)).to eq(<<YAML)
|
176
|
-
---
|
177
|
-
favorite_color: blue
|
178
|
-
YAML
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
context 'when the metadata file already exists' do
|
183
|
-
before do
|
184
|
-
File.write(metadata.file_path, "---\nwho: knows")
|
185
|
-
end
|
186
|
-
|
187
|
-
it 'overwrites the file with the correct yaml' do
|
188
|
-
metadata.save
|
189
|
-
|
190
|
-
expect(File.read(metadata.file_path)).to eq(<<YAML)
|
191
|
-
---
|
192
|
-
favorite_color: blue
|
193
|
-
YAML
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end
|
197
|
-
end
|
198
|
-
end
|
@@ -1,195 +0,0 @@
|
|
1
|
-
describe Everything::Piece do
|
2
|
-
let(:given_full_path) do
|
3
|
-
'some/fake/path/here-is-our-piece'
|
4
|
-
end
|
5
|
-
let(:piece) do
|
6
|
-
described_class.new(given_full_path)
|
7
|
-
end
|
8
|
-
|
9
|
-
shared_context 'with content double' do
|
10
|
-
let(:content_double) do
|
11
|
-
instance_double(Everything::Piece::Content)
|
12
|
-
end
|
13
|
-
|
14
|
-
before do
|
15
|
-
allow(Everything::Piece::Content)
|
16
|
-
.to receive(:new)
|
17
|
-
.and_return(content_double)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
shared_context 'with metadata double' do
|
22
|
-
let(:metadata_double) do
|
23
|
-
instance_double(Everything::Piece::Metadata)
|
24
|
-
end
|
25
|
-
|
26
|
-
before do
|
27
|
-
allow(Everything::Piece::Metadata)
|
28
|
-
.to receive(:new)
|
29
|
-
.and_return(metadata_double)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe '#body' do
|
34
|
-
include_context 'with content double'
|
35
|
-
|
36
|
-
it 'delegates to the content' do
|
37
|
-
allow(content_double).to receive(:body)
|
38
|
-
|
39
|
-
piece.body
|
40
|
-
|
41
|
-
expect(content_double).to have_received(:body)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
describe '#content' do
|
46
|
-
it 'is an instance of Content' do
|
47
|
-
expect(piece.content).to be_a(Everything::Piece::Content)
|
48
|
-
end
|
49
|
-
|
50
|
-
it "is created with the piece's full path" do
|
51
|
-
expect(Everything::Piece::Content)
|
52
|
-
.to receive(:new)
|
53
|
-
.with(given_full_path)
|
54
|
-
|
55
|
-
piece.content
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe '#full_path' do
|
60
|
-
it "returns the piece's full path" do
|
61
|
-
expect(piece.full_path).to eq(given_full_path)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe '#metadata' do
|
66
|
-
it 'is an instance of Metadata' do
|
67
|
-
expect(piece.metadata).to be_a(Everything::Piece::Metadata)
|
68
|
-
end
|
69
|
-
|
70
|
-
it "is created with the piece's full path" do
|
71
|
-
expect(Everything::Piece::Metadata)
|
72
|
-
.to receive(:new)
|
73
|
-
.with(given_full_path)
|
74
|
-
|
75
|
-
piece.metadata
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
describe '#name' do
|
80
|
-
let(:expected_name) do
|
81
|
-
'here-is-our-piece'
|
82
|
-
end
|
83
|
-
|
84
|
-
it 'is the last part of the path' do
|
85
|
-
expect(piece.name).to eq(expected_name)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
describe '#public?' do
|
90
|
-
let(:metadata_double) do
|
91
|
-
instance_double(Everything::Piece::Metadata)
|
92
|
-
end
|
93
|
-
|
94
|
-
it "returns the metadata's public value" do
|
95
|
-
allow(Everything::Piece::Metadata)
|
96
|
-
.to receive(:new)
|
97
|
-
.and_return(metadata_double)
|
98
|
-
|
99
|
-
expect(metadata_double)
|
100
|
-
.to receive(:[])
|
101
|
-
.with('public')
|
102
|
-
.and_return(false)
|
103
|
-
|
104
|
-
expect(piece.public?).to eq(false)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
describe '#raw_markdown' do
|
109
|
-
include_context 'with content double'
|
110
|
-
|
111
|
-
it 'delegates to the content' do
|
112
|
-
allow(content_double).to receive(:raw_markdown)
|
113
|
-
|
114
|
-
piece.raw_markdown
|
115
|
-
|
116
|
-
expect(content_double).to have_received(:raw_markdown)
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
describe '#raw_markdown=' do
|
121
|
-
include_context 'with content double'
|
122
|
-
|
123
|
-
it 'delegates to the content' do
|
124
|
-
allow(content_double).to receive(:raw_markdown=)
|
125
|
-
|
126
|
-
piece.raw_markdown=("# Test markdown")
|
127
|
-
|
128
|
-
expect(content_double)
|
129
|
-
.to have_received(:raw_markdown=)
|
130
|
-
.with("# Test markdown")
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
describe '#title' do
|
135
|
-
include_context 'with content double'
|
136
|
-
|
137
|
-
it 'delegates to the content' do
|
138
|
-
allow(content_double).to receive(:title)
|
139
|
-
|
140
|
-
piece.title
|
141
|
-
|
142
|
-
expect(content_double).to have_received(:title)
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
describe '#raw_yaml' do
|
147
|
-
include_context 'with metadata double'
|
148
|
-
|
149
|
-
it 'delegates to the metadata' do
|
150
|
-
allow(metadata_double).to receive(:raw_yaml)
|
151
|
-
|
152
|
-
piece.raw_yaml
|
153
|
-
|
154
|
-
expect(metadata_double).to have_received(:raw_yaml)
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
describe '#raw_yaml=' do
|
159
|
-
include_context 'with metadata double'
|
160
|
-
|
161
|
-
it 'delegates to the metadata' do
|
162
|
-
allow(metadata_double).to receive(:raw_yaml=)
|
163
|
-
|
164
|
-
piece.raw_yaml=("---\nanything: works")
|
165
|
-
|
166
|
-
expect(metadata_double)
|
167
|
-
.to have_received(:raw_yaml=)
|
168
|
-
.with("---\nanything: works")
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
describe '#save' do
|
173
|
-
include_context 'with content double'
|
174
|
-
include_context 'with metadata double'
|
175
|
-
|
176
|
-
before do
|
177
|
-
allow(content_double).to receive(:save)
|
178
|
-
allow(metadata_double).to receive(:save)
|
179
|
-
end
|
180
|
-
|
181
|
-
it 'calls save on the content' do
|
182
|
-
piece.save
|
183
|
-
|
184
|
-
expect(content_double)
|
185
|
-
.to have_received(:save)
|
186
|
-
end
|
187
|
-
|
188
|
-
it 'calls save on the metadata' do
|
189
|
-
piece.save
|
190
|
-
|
191
|
-
expect(metadata_double)
|
192
|
-
.to have_received(:save)
|
193
|
-
end
|
194
|
-
end
|
195
|
-
end
|
data/spec/everything_spec.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
describe Everything do
|
2
|
-
it 'has a version number' do
|
3
|
-
expect(Everything::VERSION).not_to be nil
|
4
|
-
end
|
5
|
-
|
6
|
-
describe '.path' do
|
7
|
-
let(:expected_path) do
|
8
|
-
'/some/path/to/your/everything/repo/'
|
9
|
-
end
|
10
|
-
|
11
|
-
before do
|
12
|
-
ENV['EVERYTHING_PATH'] = expected_path
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'is the path from the environment' do
|
16
|
-
expect(described_class.path).to eq(expected_path)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,99 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
-
require 'everything'
|
3
|
-
|
4
|
-
# This file was generated by the `rspec --init` command. Conventionally, all
|
5
|
-
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
6
|
-
# The generated `.rspec` file contains `--require spec_helper` which will cause
|
7
|
-
# this file to always be loaded, without a need to explicitly require it in any
|
8
|
-
# files.
|
9
|
-
#
|
10
|
-
# Given that it is always loaded, you are encouraged to keep this file as
|
11
|
-
# light-weight as possible. Requiring heavyweight dependencies from this file
|
12
|
-
# will add to the boot time of your test suite on EVERY test run, even for an
|
13
|
-
# individual file that may not need all of that loaded. Instead, consider making
|
14
|
-
# a separate helper file that requires the additional dependencies and performs
|
15
|
-
# the additional setup, and require it from the spec files that actually need
|
16
|
-
# it.
|
17
|
-
#
|
18
|
-
# The `.rspec` file also contains a few flags that are not defaults but that
|
19
|
-
# users commonly want.
|
20
|
-
#
|
21
|
-
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
22
|
-
RSpec.configure do |config|
|
23
|
-
# rspec-expectations config goes here. You can use an alternate
|
24
|
-
# assertion/expectation library such as wrong or the stdlib/minitest
|
25
|
-
# assertions if you prefer.
|
26
|
-
config.expect_with :rspec do |expectations|
|
27
|
-
# This option will default to `true` in RSpec 4. It makes the `description`
|
28
|
-
# and `failure_message` of custom matchers include text for helper methods
|
29
|
-
# defined using `chain`, e.g.:
|
30
|
-
# be_bigger_than(2).and_smaller_than(4).description
|
31
|
-
# # => "be bigger than 2 and smaller than 4"
|
32
|
-
# ...rather than:
|
33
|
-
# # => "be bigger than 2"
|
34
|
-
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
35
|
-
end
|
36
|
-
|
37
|
-
# rspec-mocks config goes here. You can use an alternate test double
|
38
|
-
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
39
|
-
config.mock_with :rspec do |mocks|
|
40
|
-
# Prevents you from mocking or stubbing a method that does not exist on
|
41
|
-
# a real object. This is generally recommended, and will default to
|
42
|
-
# `true` in RSpec 4.
|
43
|
-
mocks.verify_partial_doubles = true
|
44
|
-
end
|
45
|
-
|
46
|
-
# These two settings work together to allow you to limit a spec run
|
47
|
-
# to individual examples or groups you care about by tagging them with
|
48
|
-
# `:focus` metadata. When nothing is tagged with `:focus`, all examples
|
49
|
-
# get run.
|
50
|
-
config.filter_run :focus
|
51
|
-
config.run_all_when_everything_filtered = true
|
52
|
-
|
53
|
-
# This setting enables warnings. It's recommended, but in some cases may
|
54
|
-
# be too noisy due to issues in dependencies.
|
55
|
-
config.warnings = true
|
56
|
-
|
57
|
-
# Run specs in random order to surface order dependencies. If you find an
|
58
|
-
# order dependency and want to debug it, you can fix the order by providing
|
59
|
-
# the seed, which is printed after each run.
|
60
|
-
# --seed 1234
|
61
|
-
config.order = :random
|
62
|
-
|
63
|
-
# Seed global randomization in this process using the `--seed` CLI option.
|
64
|
-
# Setting this allows you to use `--seed` to deterministically reproduce
|
65
|
-
# test failures related to randomization by passing the same `--seed` value
|
66
|
-
# as the one that triggered the failure.
|
67
|
-
Kernel.srand config.seed
|
68
|
-
|
69
|
-
# The settings below are suggested to provide a good initial experience
|
70
|
-
# with RSpec, but feel free to customize to your heart's content.
|
71
|
-
=begin
|
72
|
-
# Limits the available syntax to the non-monkey patched syntax that is
|
73
|
-
# recommended. For more details, see:
|
74
|
-
# - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
|
75
|
-
# - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
|
76
|
-
# - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
|
77
|
-
config.disable_monkey_patching!
|
78
|
-
|
79
|
-
# Many RSpec users commonly either run the entire suite or an individual
|
80
|
-
# file, and it's useful to allow more verbose output when running an
|
81
|
-
# individual spec file.
|
82
|
-
if config.files_to_run.one?
|
83
|
-
# Use the documentation formatter for detailed output,
|
84
|
-
# unless a formatter has already been configured
|
85
|
-
# (e.g. via a command-line flag).
|
86
|
-
config.default_formatter = 'doc'
|
87
|
-
end
|
88
|
-
|
89
|
-
# Allows RSpec to persist some state between runs in order to support
|
90
|
-
# the `--only-failures` and `--next-failure` CLI options. We recommend
|
91
|
-
# you configure your source control system to ignore this file.
|
92
|
-
config.example_status_persistence_file_path = "spec/examples.txt"
|
93
|
-
|
94
|
-
# Print the 10 slowest examples and example groups at the
|
95
|
-
# end of the spec run, to help surface which specs are running
|
96
|
-
# particularly slow.
|
97
|
-
config.profile_examples = 10
|
98
|
-
=end
|
99
|
-
end
|
data/spec/support/pieces.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'tmpdir'
|
2
|
-
require 'fileutils'
|
3
|
-
|
4
|
-
RSpec.shared_context 'with tmp piece on disk' do
|
5
|
-
let!(:tmp_piece_path) do
|
6
|
-
Dir.mktmpdir
|
7
|
-
end
|
8
|
-
|
9
|
-
after do
|
10
|
-
# This will recursively remove everything under that tmp dir.
|
11
|
-
FileUtils.remove_entry(tmp_piece_path)
|
12
|
-
end
|
13
|
-
end
|