mr_poole 0.4.2 → 0.4.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8339685aaa22211c91533a49cba616ba46aacabb
4
- data.tar.gz: d2c44f32264be8788ab6943375facca7997938a2
3
+ metadata.gz: eec4c40ee2d85be9a8dc6646397716f639dc7251
4
+ data.tar.gz: 5d5d5d3da895a594bed5bc5b315406f419b3a332
5
5
  SHA512:
6
- metadata.gz: 87a6cb8cddb2d309cda58c73cdc2160813f1e6476f57f17ebe87b0130132d0da49ecd07c6ae77d24cc56d744b106a1adec9cdd0e6f7e40234462852f81c52430
7
- data.tar.gz: 6e98bd90942106f15719e0eff7c1f381e739014f06c2d0234bf0755e54012f6fadf4dc01814f640ecabfd358652718ba11ad98dec29209250915d036d0e745f0
6
+ metadata.gz: 79d2435f0d2c597b47fa137c0d02756c733c6003f67f065525605a7ebbb4c8d5e899fa35ed8fc7fb13b2240b83d1741e99d6fc7f3ce4e11478ceb2221adf6632
7
+ data.tar.gz: a92a2c785b51e9a013c9e51cb9301deb31c7e9232db59775d82d0e42402af83eac9a023f731b6833f4ad4a6415b0a1bbcc157483ec8426a7c2ef0d9bab728b80
data/CHANGES.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ### v0.4.3 (2014-01-28)
4
+
5
+ - Make echoed paths reflect custom source directory. Now you can `poole post
6
+ "post title" | vim` even if you are using a custom source directory in your
7
+ `_config.yml`.
8
+
3
9
  ### v0.4.2 (2013-12-25)
4
10
 
5
11
  - Change gemspec development dependencies (wouldn't release a new version
data/lib/mr_poole/cli.rb CHANGED
@@ -6,7 +6,7 @@ module MrPoole
6
6
 
7
7
  def initialize(args)
8
8
  @helper = Helper.new
9
- @helper.ensure_jekyll_dir
9
+ @src_dir = @helper.ensure_jekyll_dir
10
10
 
11
11
  @params = args
12
12
  @config = Config.new
@@ -25,6 +25,8 @@ module MrPoole
25
25
  when '-v' then @helper.version_statement
26
26
  else @helper.gen_usage
27
27
  end
28
+
29
+ @helper.restore_orig_directory
28
30
  end
29
31
 
30
32
  def handle_post
@@ -33,7 +35,7 @@ module MrPoole
33
35
 
34
36
  @helper.post_usage unless options.title
35
37
  fn = @commands.post(options)
36
- puts fn
38
+ puts "#{@src_dir}/#{fn}"
37
39
  end
38
40
 
39
41
  def handle_draft
@@ -42,7 +44,7 @@ module MrPoole
42
44
 
43
45
  @helper.draft_usage unless options.title
44
46
  fn = @commands.draft(options)
45
- puts fn
47
+ puts "#{@src_dir}/#{fn}"
46
48
  end
47
49
 
48
50
  def handle_publish
@@ -60,7 +62,7 @@ module MrPoole
60
62
  path = @params.first
61
63
  @helper.publish_usage unless path
62
64
  fn = @commands.publish(path, options)
63
- puts fn
65
+ puts "#{@src_dir}/#{fn}"
64
66
  end
65
67
 
66
68
  def handle_unpublish
@@ -78,7 +80,7 @@ module MrPoole
78
80
  path = @params.first
79
81
  @helper.unpublish_usage unless path
80
82
  fn = @commands.unpublish(path, options)
81
- puts fn
83
+ puts "#{@src_dir}/#{fn}"
82
84
  end
83
85
 
84
86
  def do_creation_options
@@ -68,7 +68,7 @@ module MrPoole
68
68
 
69
69
  # Todo make this take a path instead?
70
70
  #
71
- # @param draftpath [String] path to the draft
71
+ # @param draftpath [String] path to the draft, relative to source directory
72
72
  # @option options :keep_draft [Boolean] if true, keep the draft file
73
73
  # @option options :keep_timestamp [Boolean] if true, don't change the timestamp
74
74
  def publish(draftpath, opts={})
@@ -1,4 +1,5 @@
1
1
  require 'yaml'
2
+ require 'pathname'
2
3
 
3
4
  module MrPoole
4
5
  class Helper
@@ -7,24 +8,37 @@ module MrPoole
7
8
  # nothing to do here
8
9
  end
9
10
 
10
- # Check for a _posts directory in current directory
11
- # If we don't find one, puke an error message and die
11
+ # Check for a _posts directory in current directory. If there's not one,
12
+ # check for a _config.yml and look for a custom src directory. If we
13
+ # don't find one, puke an error message and die. If we do, return the name
14
+ # of the directory
12
15
  def ensure_jekyll_dir
16
+ @orig_dir = Dir.pwd
17
+ start_path = Pathname.new(@orig_dir)
18
+
13
19
  ok = File.exists?('./_posts')
20
+ new_path = nil
14
21
 
15
22
  # if it doesn't exist, check for a custom source dir in _config.yml
16
23
  if !ok
17
- check_custom_src_dir
24
+ check_custom_src_dir!
18
25
  ok = File.exists?('./_posts')
26
+ new_path = Pathname.new(Dir.pwd)
19
27
  end
20
28
 
21
- if !ok
29
+ if ok
30
+ return (new_path ? new_path.relative_path_from(start_path) : '.')
31
+ else
22
32
  puts 'ERROR: Cannot locate _posts directory. Double check to make sure'
23
33
  puts ' that you are in a jekyll directory.'
24
34
  exit
25
35
  end
26
36
  end
27
37
 
38
+ def restore_orig_directory
39
+ Dir.chdir(@orig_dir)
40
+ end
41
+
28
42
  def ensure_open_struct(opts)
29
43
  return opts.instance_of?(Hash) ? OpenStruct.new(opts) : opts
30
44
  end
@@ -144,7 +158,7 @@ module MrPoole
144
158
 
145
159
  # If a user has a custom 'source' defined in their _config.yml, change
146
160
  # to that directory for everything else
147
- def check_custom_src_dir
161
+ def check_custom_src_dir!
148
162
  srcdir = nil
149
163
 
150
164
  if File.exists?('_config.yml')
@@ -1,3 +1,3 @@
1
1
  module MrPoole
2
- VERSION = '0.4.2'
2
+ VERSION = '0.4.3'
3
3
  end
data/spec/cli_spec.rb CHANGED
@@ -112,7 +112,7 @@ module MrPoole
112
112
  it 'echoes path to newly created post on success' do
113
113
  argv = ['post', 'post title']
114
114
  output = poole_no_stdout(argv).call.chomp
115
- determined = Dir.glob("_posts/*.md").first
115
+ determined = Dir.glob("./_posts/*.md").first
116
116
  expect(output).to eq(determined)
117
117
  end
118
118
 
@@ -198,7 +198,7 @@ module MrPoole
198
198
  it 'echoes path to newly created post on success' do
199
199
  argv = ['draft', 'post title']
200
200
  output = poole_no_stdout(argv).call.chomp
201
- determined = Dir.glob("_drafts/*.md").first
201
+ determined = Dir.glob("./_drafts/*.md").first
202
202
  expect(output).to eq(determined)
203
203
  end
204
204
  end # context exit message
@@ -280,7 +280,7 @@ module MrPoole
280
280
  it 'echoes path to newly created post on success' do
281
281
  argv = ['publish', d_path]
282
282
  output = poole_no_stdout(argv).call.chomp
283
- determined = Dir.glob("_posts/*.md").first
283
+ determined = Dir.glob("./_posts/*.md").first
284
284
  expect(output).to eq(determined)
285
285
  end
286
286
  end # context exit message
@@ -301,7 +301,7 @@ module MrPoole
301
301
  expect(content).to match(/^date: \d{4}-\d{2}-\d{2}$/)
302
302
  end
303
303
  end
304
- end
304
+ end # describe publish
305
305
 
306
306
  describe "action 'unpublish'" do
307
307
  let(:p_path) { Commands.new.post({:title => 'test_post'}) }
@@ -341,7 +341,7 @@ module MrPoole
341
341
  it 'echoes path to newly created post on success' do
342
342
  argv = ['unpublish', p_path]
343
343
  output = poole_no_stdout(argv).call.chomp
344
- determined = Dir.glob("_drafts/*.md").first
344
+ determined = Dir.glob("./_drafts/*.md").first
345
345
  expect(output).to eq(determined)
346
346
  end
347
347
  end # context exit message
@@ -404,5 +404,57 @@ module MrPoole
404
404
 
405
405
  end
406
406
 
407
+ context 'with custom source directory' do
408
+ before(:each) do
409
+ @olddir, @tmpdir = make_irregular_jekyll_dir
410
+ end
411
+
412
+ after(:each) { clean_tmp_files(@tmpdir, @olddir) }
413
+
414
+ it "'post' echoes correct path with custom source directory" do
415
+ argv = ['post', 'post_title']
416
+ output = poole_no_stdout(argv).call.chomp
417
+ determined = Dir.glob("src/_posts/*.md").first
418
+ expect(output).to eq(determined)
419
+ end
420
+
421
+ it "'draft' echoes correct path with custom source directory" do
422
+ argv = ['draft', 'post_title']
423
+ output = poole_no_stdout(argv).call.chomp
424
+ determined = Dir.glob("src/_drafts/*.md").first
425
+ expect(output).to eq(determined)
426
+ end
427
+
428
+ it "'publish' echoes correct path with custom source directory" do
429
+ # make a draft first
430
+ Dir.chdir('src')
431
+ draft_path = Commands.new.draft({:title => 'test_draft'})
432
+ Dir.chdir('..')
433
+
434
+ argv = ['publish', draft_path]
435
+ output = poole_no_stdout(argv).call.chomp
436
+
437
+ determined = Dir.glob("src/_posts/*.md").first
438
+ expect(output).to eq(determined)
439
+ end
440
+
441
+ it "'unpublish' echoes correct path with custom source directory" do
442
+ olddir, tmpdir = make_irregular_jekyll_dir
443
+
444
+ # make a post in the src directory
445
+ Dir.chdir('src')
446
+ post_path = Commands.new.post({:title => 'touch_post'})
447
+ Dir.chdir('..')
448
+
449
+ argv = ['unpublish', post_path]
450
+ output = poole_no_stdout(argv).call.chomp
451
+
452
+ determined = Dir.glob("src/_drafts/*.md").first
453
+ expect(output).to eq(determined)
454
+
455
+ clean_tmp_files(tmpdir, olddir)
456
+ end
457
+
458
+ end
407
459
  end
408
460
  end
data/spec/spec_helper.rb CHANGED
@@ -42,8 +42,10 @@ def make_irregular_jekyll_dir
42
42
  newdir = Dir.mktmpdir('jekyll')
43
43
  srcdir = File.join(newdir, 'src')
44
44
  posts = File.join(srcdir, '_posts')
45
+ drafts = File.join(srcdir, '_drafts')
45
46
  Dir.mkdir(srcdir)
46
47
  Dir.mkdir(posts)
48
+ Dir.mkdir(drafts)
47
49
  Dir.chdir(newdir)
48
50
  # ensure write custom yml file
49
51
  write_config_file_custom_src_dir
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mr_poole
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael McClimon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-25 00:00:00.000000000 Z
11
+ date: 2014-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
113
  version: '0'
114
114
  requirements: []
115
115
  rubyforge_project:
116
- rubygems_version: 2.0.6
116
+ rubygems_version: 2.2.1
117
117
  signing_key:
118
118
  specification_version: 4
119
119
  summary: A butler for Jekyll. Provides a command-line interface (called `poole`) for