[前][次][番号順一覧][スレッド一覧]

ruby-changes:65465

From: Nobuyoshi <ko1@a...>
Date: Sat, 13 Mar 2021 09:15:40 +0900 (JST)
Subject: [ruby-changes:65465] 07ff1f4b0b (master): Revert "Extracted AtomicWrite"

https://git.ruby-lang.org/ruby.git/commit/?id=07ff1f4b0b

From 07ff1f4b0b040b594a6fec44d9888395343449c6 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Sat, 13 Mar 2021 09:14:20 +0900
Subject: Revert "Extracted AtomicWrite"

This reverts commit 2148ee78a5bc5e679903f5839c66578bfcf94a39, mistakenly committed.
---
 tool/generic_erb.rb      | 35 ++++++++++++++++++++++++----
 tool/lib/atomic_write.rb | 60 ------------------------------------------------
 2 files changed, 30 insertions(+), 65 deletions(-)
 delete mode 100644 tool/lib/atomic_write.rb

diff --git a/tool/generic_erb.rb b/tool/generic_erb.rb
index 3227e7a..6af995f 100644
--- a/tool/generic_erb.rb
+++ b/tool/generic_erb.rb
@@ -6,22 +6,30 @@ https://github.com/ruby/ruby/blob/trunk/tool/generic_erb.rb#L6
 require 'erb'
 require 'optparse'
 require_relative 'lib/vpath'
-require_relative 'lib/atomic_write'
+require_relative 'lib/colorize'
 
 vpath = VPath.new
-aw = AtomicWrite.new
-aw.vpath = vpath
+timestamp = nil
+output = nil
+ifchange = nil
 source = false
+color = nil
 templates = []
 
 ARGV.options do |o|
+  o.on('-t', '--timestamp[=PATH]') {|v| timestamp = v || true}
   o.on('-i', '--input=PATH') {|v| template << v}
+  o.on('-o', '--output=PATH') {|v| output = v}
+  o.on('-c', '--[no-]if-change') {|v| ifchange = v}
   o.on('-x', '--source') {source = true}
-  aw.def_options(o)
+  o.on('--color') {color = true}
   vpath.def_options(o)
   o.order!(ARGV)
   templates << (ARGV.shift or abort o.to_s) if templates.empty?
 end
+color = Colorize.new(color)
+unchanged = color.pass("unchanged")
+updated = color.fail("updated")
 
 result = templates.map do |template|
   if ERB.instance_method(:initialize).parameters.assoc(:key) # Ruby 2.6+
@@ -33,4 +41,21 @@ result = templates.map do |template| https://github.com/ruby/ruby/blob/trunk/tool/generic_erb.rb#L41
   source ? erb.src : proc{erb.result(binding)}.call
 end
 result = result.size == 1 ? result[0] : result.join("")
-aw.emit(result)
+if output
+  if ifchange and (vpath.open(output, "rb") {|f| f.read} rescue nil) == result
+    puts "#{output} #{unchanged}"
+  else
+    open(output, "wb") {|f| f.print result}
+    puts "#{output} #{updated}"
+  end
+  if timestamp
+    if timestamp == true
+      dir, base = File.split(output)
+      timestamp = File.join(dir, ".time." + base)
+    end
+    File.open(timestamp, 'a') {}
+    File.utime(nil, nil, timestamp)
+  end
+else
+  print result
+end
diff --git a/tool/lib/atomic_write.rb b/tool/lib/atomic_write.rb
deleted file mode 100644
index 12a8e12..0000000
--- a/tool/lib/atomic_write.rb
+++ /dev/null
@@ -1,60 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/tool/generic_erb.rb#L0
-require 'optparse'
-require_relative 'vpath'
-require_relative 'colorize'
-
-class AtomicWrite
-  attr_accessor :vpath, :timestamp, :output, :compare :color
-
-  def initialize
-    @vpath = nil
-    @timestamp = nil
-    @output = nil
-    @compare = nil
-    @color = nil
-  end
-
-  def def_options(opt)
-    opt.on('-t', '--timestamp[=PATH]') {|v| @timestamp = v || true}
-    opt.on('-o', '--output=PATH') {|v| @output = v}
-    opt.on('-c', '--[no-]if-change') {|v| @compare = v}
-    opt.on('--color') {@color = true}
-    @vpath.def_options(opt) if @vpath
-    opt
-  end
-
-  def emit(result)
-    output = @output
-    if output
-      update output, result
-      stamp output
-    else
-      print result
-    end
-  end
-
-  def update(output, result)
-    color = Colorize.new(@color)
-    unchanged = color.pass("unchanged")
-    updated = color.fail("updated")
-    vpath = @vpath || File
-    if @compare and (vpath.open(output, "rb") {|f| f.read} rescue nil) == result
-      puts "#{output} #{unchanged}"
-      false
-    else
-      open(output, "wb") {|f| f.print result}
-      puts "#{output} #{updated}"
-      true
-    end
-  end
-
-  def stamp(output, timestamp = @timestamp)
-    if timestamp
-      if timestamp == true
-        dir, base = File.split(output)
-        timestamp = File.join(dir, ".time." + base)
-      end
-      File.open(timestamp, 'a') {}
-      File.utime(nil, nil, timestamp)
-    end
-  end
-end
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]