#!/usr/bin/env ruby require 'targit' require 'mercenary' def upload(file, repo, tag, options) asset = Targit.new(file, repo, tag, options) asset.upload! puts "Successfully created asset! #{asset.url}" end Mercenary.program(:targit) do |p| p.version Targit::VERSION p.description 'Tool for adding GitHub release assets' p.syntax 'targit [options] USER/REPO TAG /path/to/file' # rubocop:disable Style/LineLength p.option :force, '-f', '--force', 'Replace the asset if it already exists' p.option :create, '-c', '--create', 'Create release if it does not exist' p.option :prerelease, '-p', '--prerelease', 'With -c, create as a dev release' p.option :authfile, '-a FILE', '--authfile FILE', 'Set the auth file for GitHub credentials' p.option :name, '-n NAME', '--name NAME', 'Set the name for the release asset' # rubocop:enable Style/LineLength p.action do |_, options| repo, tag = ARGV.shift 2 if !repo || !tag puts p elsif !ARGV.empty? ARGV.each { |file| fail("#{file} not found") unless File.exist? file } ARGV.each do |file| puts "Adding #{file} on #{tag} of #{repo}" upload file, repo, tag, options end elsif !STDIN.tty? fail('Name required if file is passed via STDIN') unless options[:name] upload STDIN, repo, tag, options else puts p end end end