# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. module Helper module ApacheArrow private def detect_release_time release_time_env = ENV["ARROW_RELEASE_TIME"] if release_time_env Time.parse(release_time_env).utc else latest_commit_time(arrow_source_dir) || Time.now.utc end end def arrow_source_dir File.join(__dir__, "..", "..", "..") end def detect_version(release_time) version_env = ENV["ARROW_VERSION"] return version_env if version_env pom_xml_path = File.join(arrow_source_dir, "java", "pom.xml") pom_xml_content = File.read(pom_xml_path) version = pom_xml_content[/^ (.+?)<\/version>/, 1] formatted_release_time = release_time.strftime("%Y%m%d") version.gsub(/-SNAPSHOT\z/) {"-dev#{formatted_release_time}"} end def detect_env(name) value = ENV[name] return value if value and not value.empty? dot_env_path = File.join(arrow_source_dir, ".env") File.open(dot_env_path) do |dot_env| dot_env.each_line do |line| case line.chomp when /\A#{Regexp.escape(name)}=(.*)/ return $1 end end end raise "Failed to detect #{name} environment variable" end def detect_repo detect_env("REPO") end def docker_image(os, architecture) architecture ||= "amd64" "#{detect_repo}:#{architecture}-#{os}-package-#{@package}" end end end