001package org.vafer.jdeb.utils; 002 003import java.util.Date; 004import java.util.concurrent.TimeUnit; 005 006import org.apache.maven.archiver.MavenArchiver; 007import org.vafer.jdeb.Console; 008 009public class OutputTimestampResolver { 010 private final Console console; 011 private final EnvironmentVariablesReader envReader; 012 013 public OutputTimestampResolver(Console console) { 014 this(console, new EnvironmentVariablesReader()); 015 } 016 017 OutputTimestampResolver(Console console, EnvironmentVariablesReader envReader) { 018 this.console = console; 019 this.envReader = envReader; 020 } 021 022 public Long resolveOutputTimestamp(String paramValue) { 023 if (paramValue != null) { 024 Date outputDate = new MavenArchiver().parseOutputTimestamp(paramValue); 025 if (outputDate != null) { 026 console.info("Accepted outputTimestamp parameter: " + paramValue); 027 return outputDate.getTime(); 028 } 029 } 030 031 String sourceDate = envReader.getSourceDateEpoch(); 032 if (sourceDate != null && !sourceDate.isEmpty()) { 033 try { 034 long sourceDateVal = Long.parseLong(sourceDate); 035 console.info("Accepted SOURCE_DATE_EPOCH environment variable: " + sourceDate); 036 return sourceDateVal * TimeUnit.SECONDS.toMillis(1); 037 } catch (NumberFormatException e) { 038 throw new IllegalArgumentException("Invalid SOURCE_DATE_EPOCH environment variable value: " + sourceDate, e); 039 } 040 } 041 042 return null; 043 } 044 045 static class EnvironmentVariablesReader { 046 String getSourceDateEpoch() { 047 return System.getenv("SOURCE_DATE_EPOCH"); 048 } 049 } 050}