mirror of
https://github.com/darlinghq/darling-JavaScriptCore.git
synced 2024-11-26 21:50:53 +00:00
105 lines
4.2 KiB
Ruby
105 lines
4.2 KiB
Ruby
# Copyright (C) 2018 Apple Inc. All rights reserved.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions
|
|
# are met:
|
|
# 1. Redistributions of source code must retain the above copyright
|
|
# notice, this list of conditions and the following disclaimer.
|
|
# 2. Redistributions in binary form must reproduce the above copyright
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
# documentation and/or other materials provided with the distribution.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
|
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
|
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
# THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
require 'date'
|
|
require 'digest'
|
|
|
|
$LICENSE = <<-EOF
|
|
Copyright (C) #{Date.today.year} Apple Inc. All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions
|
|
are met:
|
|
|
|
1. Redistributions of source code must retain the above copyright
|
|
notice, this list of conditions and the following disclaimer.
|
|
2. Redistributions in binary form must reproduce the above copyright
|
|
notice, this list of conditions and the following disclaimer in the
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
|
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
|
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
EOF
|
|
|
|
module GeneratedFile
|
|
class Template < Struct.new(:multiline_comment, :line_comment, :prefix, :suffix, :body)
|
|
def initialize
|
|
super(["/*", " *", "*/"], "// ", nil, nil, nil)
|
|
end
|
|
end
|
|
|
|
def self.create(filename, *dependencies)
|
|
template = Template.new
|
|
yield template
|
|
|
|
file = File.open(filename, "w")
|
|
self.license(file, template, dependencies)
|
|
|
|
unless template.prefix.nil?
|
|
write(file, template.prefix.to_s, "\n")
|
|
end
|
|
unless template.body.nil?
|
|
write(file, template.body.to_s, "\n")
|
|
end
|
|
unless template.suffix.nil?
|
|
write(file, template.suffix.to_s, "\n")
|
|
end
|
|
|
|
file.fsync
|
|
self.sha1(file, template, dependencies)
|
|
end
|
|
|
|
def self.sha1(file, template, dependencies)
|
|
write(file, template.line_comment, " SHA1Hash: ", Digest::SHA1.hexdigest(dependencies.join), "\n")
|
|
end
|
|
|
|
def self.license(file, template, dependencies)
|
|
unless template.multiline_comment.nil?
|
|
write(file, template.multiline_comment[0], "\n")
|
|
end
|
|
|
|
comment = if template.multiline_comment.nil? then template.line_comment else template.multiline_comment[1] end
|
|
write(file, $LICENSE.strip.split("\n").map { |line| "#{comment} #{line}" }.join("\n"), "\n\n")
|
|
write(file, comment, " Autogenerated, do not modify.\n")
|
|
|
|
unless template.multiline_comment.nil?
|
|
write(file, template.multiline_comment[2], "\n")
|
|
end
|
|
|
|
write(file, "\n")
|
|
end
|
|
|
|
def self.write(file, *strings)
|
|
file.write(strings.map(&:to_s).join)
|
|
end
|
|
end
|
|
|