percy-cli 0.2.0 → 0.2.1

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: 9850a1af689e2c117bbe0b183546e92e591b968b
4
- data.tar.gz: c10b07dab5709b16be0222f7225a5f73e7a03275
3
+ metadata.gz: caa2b62dccd292c0e266963747b0a97d6d847422
4
+ data.tar.gz: 25c5d6de30979ea5aee24e2123255f072515bc29
5
5
  SHA512:
6
- metadata.gz: 2222e6b6414985a6ed54370d39b564e0dc06f550c08113524ed04da580a0aee029f7e594df436339f82fcad1493cfe0b1940b0b7b8fa773f3bb6fcf4cbe2269e
7
- data.tar.gz: 1ac69b7e3e58585558a9b6addcf73b2fe8a191148cf370fd658228a3513e4d21a16dc59b05d3cb8cd1ebdbad8aafb16e08427552ffa25111dcfb848f32672741
6
+ metadata.gz: 50dfa8bfd63712646e7194f850bca142c48e21c0e038b3a969b0d0d61aa993868e7b6befccca972959ddf779b395eaec58fa4a4a250262fd6b92ec045fe43c98
7
+ data.tar.gz: a7c9084be4c0dea839901c0894361467a586c09148c2bc81f45748bf5530d849aab7ec38d19335a58e6f088101f3976aa8b5d858070a14fc5f657cf082bf2e5f
@@ -21,12 +21,16 @@ module Percy
21
21
  strip_prefix = File.absolute_path(options[:strip_prefix] || root_dir)
22
22
  num_threads = options[:threads] || 10
23
23
  snapshot_limit = options[:snapshot_limit]
24
+ baseurl = options[:baseurl] || '/'
25
+ raise ArgumentError.new('baseurl must start with /') if baseurl[0] != '/'
26
+
27
+ base_resource_options = {strip_prefix: strip_prefix, baseurl: baseurl}
24
28
 
25
29
  # Find all the static files in the given root directory.
26
30
  root_paths = find_root_paths(root_dir, snapshots_regex: options[:snapshots_regex])
27
31
  resource_paths = find_resource_paths(root_dir)
28
- root_resources = build_resources(root_paths, strip_prefix, is_root: true)
29
- related_resources = build_resources(resource_paths, strip_prefix)
32
+ root_resources = build_resources(root_paths, base_resource_options.merge(is_root: true))
33
+ related_resources = build_resources(resource_paths, base_resource_options)
30
34
  all_resources = root_resources + related_resources
31
35
 
32
36
  if root_resources.empty?
@@ -103,7 +107,9 @@ module Percy
103
107
  url[0..1] == '//' ? "http:#{url}" : url
104
108
  end
105
109
 
106
- def build_resources(paths, strip_prefix, options = {})
110
+ def build_resources(paths, options = {})
111
+ strip_prefix = options[:strip_prefix]
112
+ baseurl = options[:baseurl]
107
113
  resources = []
108
114
 
109
115
  # Strip trailing slash from strip_prefix.
@@ -111,7 +117,8 @@ module Percy
111
117
 
112
118
  paths.each do |path|
113
119
  sha = Digest::SHA256.hexdigest(File.read(path))
114
- resource_url = URI.escape(path.sub(strip_prefix, ''))
120
+ resource_url = URI.escape(File.join(baseurl, path.sub(strip_prefix, '')))
121
+
115
122
  resources << Percy::Client::Resource.new(
116
123
  resource_url, sha: sha, is_root: options[:is_root], path: path)
117
124
  end
@@ -1,5 +1,5 @@
1
1
  module Percy
2
2
  class Cli
3
- VERSION = '0.2.0'
3
+ VERSION = '0.2.1'
4
4
  end
5
5
  end
data/lib/percy/cli.rb CHANGED
@@ -29,6 +29,12 @@ module Percy
29
29
  command :snapshot do |c|
30
30
  c.syntax = 'snapshot <root_dir>'
31
31
  c.description = 'Snapshot a folder of static files.'
32
+ c.option \
33
+ '--baseurl PATH',
34
+ String,
35
+ 'The live URL base path. Defaults to "/". Set this if your site is hosted in ' +
36
+ 'a subdirectory in production that does not exist locally. If using Jekyll, this ' +
37
+ 'should be the same as your "baseurl" config.'
32
38
  c.option \
33
39
  '--strip_prefix PATH',
34
40
  String,
@@ -30,7 +30,8 @@ RSpec.describe Percy::Cli::Snapshot do
30
30
  describe '#build_resources' do
31
31
  it 'returns resource objects' do
32
32
  paths = [File.join(root_dir, 'css/base.css')]
33
- resources = Percy::Cli.new.send(:build_resources, paths, root_dir)
33
+ options = {baseurl: '/', strip_prefix: root_dir}
34
+ resources = Percy::Cli.new.send(:build_resources, paths, options)
34
35
 
35
36
  expect(resources.length).to eq(1)
36
37
  expect(resources.first.sha).to eq(Digest::SHA256.hexdigest(File.read(paths.first)))
@@ -40,7 +41,8 @@ RSpec.describe Percy::Cli::Snapshot do
40
41
  end
41
42
  it 'returns resource objects with is_root set if given' do
42
43
  paths = [File.join(root_dir, 'index.html')]
43
- resources = Percy::Cli.new.send(:build_resources, paths, root_dir, is_root: true)
44
+ options = {baseurl: '/', strip_prefix: root_dir, is_root: true}
45
+ resources = Percy::Cli.new.send(:build_resources, paths, options)
44
46
 
45
47
  expect(resources.length).to eq(1)
46
48
  expect(resources.first.resource_url).to eq('/index.html')
@@ -51,7 +53,8 @@ RSpec.describe Percy::Cli::Snapshot do
51
53
  end
52
54
  it 'encodes the resource_url' do
53
55
  paths = [File.join(root_dir, 'css/test with spaces.css')]
54
- resources = Percy::Cli.new.send(:build_resources, paths, root_dir)
56
+ options = {baseurl: '/', strip_prefix: root_dir}
57
+ resources = Percy::Cli.new.send(:build_resources, paths, options)
55
58
 
56
59
  expect(resources.length).to eq(1)
57
60
  expect(resources.first.resource_url).to eq('/css/test%20with%20spaces.css')
@@ -60,6 +63,18 @@ RSpec.describe Percy::Cli::Snapshot do
60
63
  expect(resources.first.content).to be_nil
61
64
  expect(resources.first.path).to eq(paths.first)
62
65
  end
66
+ it 'prepends the baseurl if given' do
67
+ paths = [File.join(root_dir, 'index.html')]
68
+ options = {strip_prefix: root_dir, is_root: true, baseurl: '/test baseurl/'}
69
+ resources = Percy::Cli.new.send(:build_resources, paths, options)
70
+
71
+ expect(resources.length).to eq(1)
72
+ expect(resources.first.resource_url).to eq('/test%20baseurl/index.html')
73
+ expect(resources.first.sha).to eq(Digest::SHA256.hexdigest(File.read(paths.first)))
74
+ expect(resources.first.is_root).to be_truthy
75
+ expect(resources.first.content).to be_nil
76
+ expect(resources.first.path).to eq(paths.first)
77
+ end
63
78
  end
64
79
  describe '#upload_snapshot' do
65
80
  xit 'uploads the given resources to the build' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: percy-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Perceptual Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-31 00:00:00.000000000 Z
11
+ date: 2015-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander