001/* 002 * SPDX-License-Identifier: Apache-2.0 003 * 004 * Copyright 2024-2026 The Enola <https://enola.dev> Authors 005 * 006 * Licensed under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at 009 * 010 * https://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package dev.enola.common; 019 020import java.io.IOException; 021import java.nio.charset.StandardCharsets; 022 023public final class Version { 024 025 private static final String DEFAULT = "DEVELOPMENT"; 026 027 private static final String VERSION = load(); 028 029 private static String load() { 030 var classLoader = Version.class.getClassLoader(); 031 try (var inputStream = classLoader.getResourceAsStream("VERSION")) { 032 if (inputStream == null) return DEFAULT; 033 var bytes = inputStream.readAllBytes(); 034 return new String(bytes, StandardCharsets.US_ASCII); 035 } catch (IOException e) { 036 return DEFAULT; 037 } 038 } 039 040 public static String get() { 041 return VERSION; 042 } 043 044 public static String gitUI() { 045 return "https://github.com/enola-dev/enola/tree/" + VERSION; 046 } 047 048 public static boolean isKnown() { 049 return !DEFAULT.equals(VERSION); 050 } 051 052 private Version() {} 053}