pathutil 0.8.0 → 0.9.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: 10eb85d7db5342ac2978cd159221524b1cead985
4
- data.tar.gz: deac9b9124bf459d5b9e1bea70fdd006b45a8d65
3
+ metadata.gz: c10b81a9cf17f0652212fefb3a9b82467716c295
4
+ data.tar.gz: 3f336ad870a92910d1dc28fd4131b07366cd7581
5
5
  SHA512:
6
- metadata.gz: 6ee563e008813fcc79818215a071fd224a372a16bb52973e8c5596508ec5b8081e73a8912e7af1f12722eee3070d1b427e653c70e065a3838e5266c8a85c72d2
7
- data.tar.gz: 4f443a490e076c9a03d110b7968d5900873bae36ccd4ce8df2b2e545e3f130c37d7b2aeddd013ec32a2d5bde36f006b7da0262cf77f5cb14aec29fe78e8900b9
6
+ metadata.gz: 6a9b1db57f38d02fb924c98aa1061dd5a8045aa9f3599b9e4be3896904d8cd0e9135ebb1ada4960dde3eb4c599825321d499b146f3b22e3414c73baeee0e94f9
7
+ data.tar.gz: 5c7c52a0373b8a7807d89ecdd7bafeba72a29ef3c9ac888832a29a4744e7273e266b7c88d6806562624c2d0243056fc181aa246890da485860f9843a6e3d172b
@@ -413,16 +413,17 @@ class Pathutil
413
413
  # --------------------------------------------------------------------------
414
414
  # Copy a directory, allowing symlinks if the link falls inside of the root.
415
415
  # This is indented for people who wish some safety to their copies.
416
+ # NOTE: Ignore is ignored on safe_copy file because it's explicit.
416
417
  # --------------------------------------------------------------------------
417
418
 
418
- def safe_copy(to, root: nil)
419
+ def safe_copy(to, root: nil, ignore: [])
419
420
  raise ArgumentError, "must give a root" unless root
420
421
  root = self.class.new(root)
421
422
  to = self.class.new(to)
422
423
 
423
424
  if directory?
424
425
  safe_copy_directory(to, {
425
- :root => root
426
+ :root => root, :ignore => ignore
426
427
  })
427
428
 
428
429
  else
@@ -552,6 +553,14 @@ class Pathutil
552
553
  end
553
554
  end
554
555
 
556
+ # --------------------------------------------------------------------------
557
+
558
+ def to_regexp(guard: true)
559
+ Regexp.new((guard ? "\\A" : "") + Regexp.escape(
560
+ self
561
+ ))
562
+ end
563
+
555
564
  # --------------------------------------------------------------------------
556
565
  # Expand the paths and return.
557
566
  # --------------------------------------------------------------------------
@@ -578,7 +587,9 @@ class Pathutil
578
587
  # --------------------------------------------------------------------------
579
588
 
580
589
  private
581
- def safe_copy_directory(to, root: nil)
590
+ def safe_copy_directory(to, root: nil, ignore: [])
591
+ ignore = [ignore].flatten.uniq
592
+
582
593
  if !in_path?(root)
583
594
  raise Errno::EPERM, "#{self} not in #{
584
595
  root
@@ -587,21 +598,23 @@ class Pathutil
587
598
  else
588
599
  to.mkdir_p unless to.exist?
589
600
  children do |file|
590
- if !file.in_path?(root)
591
- raise Errno::EPERM, "#{file} not in #{
592
- root
593
- }"
594
-
595
- elsif file.file?
596
- FileUtils.cp(file, to, {
597
- :preserve => true
598
- })
599
-
600
- else
601
- path = file.realpath
602
- path.safe_copy(to.join(file.basename), {
603
- :root => root
604
- })
601
+ unless ignore.any? { |path| file.in_path?(path) }
602
+ if !file.in_path?(root)
603
+ raise Errno::EPERM, "#{file} not in #{
604
+ root
605
+ }"
606
+
607
+ elsif file.file?
608
+ FileUtils.cp(file, to, {
609
+ :preserve => true
610
+ })
611
+
612
+ else
613
+ path = file.realpath
614
+ path.safe_copy(to.join(file.basename), {
615
+ :root => root, :ignore => ignore
616
+ })
617
+ end
605
618
  end
606
619
  end
607
620
  end
@@ -773,7 +786,6 @@ class Pathutil
773
786
  rb_delegate :opendir, :to => :Dir, :alias_of => :open
774
787
  rb_delegate :relative?, :to => :self, :alias_of => :absolute?, :bool => :reverse
775
788
  rb_delegate :regexp_escape, :to => :Regexp, :args => :@path, :alias_of => :escape
776
- rb_delegate :to_regexp, :to => :Regexp, :args => :@path, :alias_of => :new
777
789
  rb_delegate :shellescape, :to => :Shellwords, :args => :@path
778
790
  rb_delegate :mkdir, :to => :Dir, :args => :@path
779
791
 
@@ -5,5 +5,5 @@
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
7
  class Pathutil
8
- VERSION = "0.8.0"
8
+ VERSION = "0.9.0"
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pathutil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordon Bedwell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-19 00:00:00.000000000 Z
11
+ date: 2016-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: forwardable-extended