From 7f7501e1e84a009fe4850a260837a26c5696f4d6 Mon Sep 17 00:00:00 2001 From: Tagada <36127788+Tagadda@users.noreply.github.com> Date: Sun, 23 May 2021 18:59:49 +0200 Subject: [PATCH] Port mattermost_ynh version bumping tool --- bump-version.rb | 72 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 bump-version.rb diff --git a/bump-version.rb b/bump-version.rb new file mode 100644 index 0000000..5da826a --- /dev/null +++ b/bump-version.rb @@ -0,0 +1,72 @@ +#!/usr/bin/env ruby + +# [For package maintainers] +# Edit the conf/app.src files with the latest commit +# +# Usage: +# ./bump-version.rb + +require 'digest' +require 'json' +require 'open-uri' + +module Yunohost + class AppSrcFile + def initialize(path = 'conf/app.src') + @path = path + end + + def update(url, sum) + src = File.read(@path) + replace_src_setting!(src, 'SOURCE_URL', url) + replace_src_setting!(src, 'SOURCE_SUM', sum) + replace_src_setting!(src, 'SOURCE_FILENAME', File.basename(URI.parse(url).path)) + File.write(@path, src) + end + + private + + def replace_src_setting!(str, setting, value) + str.gsub!(/^#{setting}=.*$/, "#{setting}=#{value}") + end + end + + class ManifestFile + def initialize(path = 'manifest.json') + @path = path + end + + def update_with_version(version) + manifest_file = File.read(@path) + manifest = JSON.parse(manifest_file) + + if manifest['version'].start_with? version + i = manifest['version'].scan(/~ynh(\d)/).flatten.first.to_i + 1 + manifest['version'] = "#{version}~ynh#{i}" + else + manifest['version'] = "#{version}~ynh1" + end + + manifest_file = JSON.pretty_generate(manifest, indent: ' ') + "\n" + File.write(@path, manifest_file) + end + end +end + +github = JSON.parse(URI.parse('https://api.github.com/repos/glitch-soc/mastodon/branches/main').read) +last_commit = github["commit"]["sha"] +version = Date.parse(github["commit"]["commit"]["author"]["date"]).to_s + +url = "https://github.com/glitch-soc/mastodon/archive/#{last_commit}.tar.gz" + +puts "Downloading last commit at #{url}" +release_file = URI.parse(url).read +sum = Digest::SHA256.hexdigest(release_file) + +# Update source file +Yunohost::AppSrcFile.new().update(url, sum) + +# Update manifest file +Yunohost::ManifestFile.new().update_with_version(version) + +puts "Done!"