diff --git a/.github/workflows/example.yml b/.github/workflows/test.yml similarity index 100% rename from .github/workflows/example.yml rename to .github/workflows/test.yml diff --git a/README.md b/README.md index f30187a..41366ad 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Action that builds a gem based on a gemspec and publishes to GitHub packages or ```yml --- - name: Publish gem to rubygems or gh packages - uses: juliocabrera/publish-ruby-gem-action@v1 + uses: juliocabrera820/publish-ruby-gem-action@v1 with: github_token: ${{secrets.GITHUB_TOKEN}} # optional rubygems_api_key: ${{secrets.RUBYGEMS_API_KEY}} # optional diff --git a/credentials.rb b/credentials.rb index 3bce5b4..1349c1d 100644 --- a/credentials.rb +++ b/credentials.rb @@ -6,32 +6,36 @@ # Module to handle credentials module Credentials - def self.generate_gh_credentials - credentials = <<~CREDENTIALS - --- - :github: Bearer #{Inputs::GITHUB_TOKEN} - CREDENTIALS + def self.add_gh_credentials + credentials = ":github: Bearer #{Inputs.github_token}" write_credentials(credentials) end - def self.generate_rubygems_credentials - credentials = <<~CREDENTIALS - --- - :rubygems_api_key: #{Inputs::RUBYGEMS_API_KEY} - CREDENTIALS + def self.add_rubygems_credentials + credentials = ":rubygems_api_key: #{Inputs.rubygems_api_key}" write_credentials(credentials) end - def self.write_credentials(credentials) - credentials_dir_path = "#{Dir.home}/.gem" - FileUtils.mkdir_p(credentials_dir_path) - credentials_file_path = "#{credentials_dir_path}/credentials" + def self.generate_credentials_file + FileUtils.mkdir_p(gems_path) + credentials = '---' File.open(credentials_file_path, 'w') { |f| f.write(credentials) } + end + + def self.write_credentials(credentials) + File.open(credentials_file_path, 'a') { |f| f.write(credentials) } FileUtils.chmod(0o600, credentials_file_path) end + def self.gems_path + @gems_path ||= "#{Dir.home}/.gem" + end + + def self.credentials_file_path + @credentials_file_path ||= "#{gems_path}/credentials" + end + def self.delete_credentials_file_path - credentials_file_path = "#{Dir.home}/.gem/credentials" FileUtils.rm(credentials_file_path) if File.exist?(credentials_file_path) end end diff --git a/inputs.rb b/inputs.rb index 52b6e43..d5b79de 100644 --- a/inputs.rb +++ b/inputs.rb @@ -5,4 +5,24 @@ module Inputs RUBYGEMS_API_KEY = ENV['RUBYGEMS_API_KEY'] GITHUB_TOKEN = ENV['GITHUB_TOKEN'] GITHUB_USERNAME = ENV['GITHUB_USERNAME'] + + def self.github_token? + !GITHUB_TOKEN.nil? + end + + def self.rubygems_api_key? + !RUBYGEMS_API_KEY.nil? + end + + def self.github_token + GITHUB_TOKEN + end + + def self.rubygems_api_key + RUBYGEMS_API_KEY + end + + def self.github_username + GITHUB_USERNAME + end end diff --git a/main.rb b/main.rb index afec1f9..dda6389 100644 --- a/main.rb +++ b/main.rb @@ -1,13 +1,15 @@ # frozen_string_literal: true +require_relative 'credentials' require_relative 'gem_builder' +require_relative 'inputs' require_relative 'publish' -require_relative 'credentials' begin GemBuilder.build - Publish.to_rubygems unless Inputs::RUBYGEMS_API_KEY.nil? - Publish.to_github_packages unless Inputs::GITHUB_TOKEN.nil? + Credentials.generate_credentials_file + Publish.to_rubygems if Inputs.rubygems_api_key? + Publish.to_github_packages if Inputs.github_token? ensure Credentials.delete_credentials_file_path end diff --git a/publish.rb b/publish.rb index 7c4fe32..4a8d27a 100644 --- a/publish.rb +++ b/publish.rb @@ -4,12 +4,12 @@ require_relative 'inputs' require_relative 'credentials' -# Module for publishing gems to Rubygems and GitHub Packages +# Module for publishing gems to Rubygems or GitHub Packages module Publish GEM_EXTENSION = '*.gem' def self.to_rubygems - Credentials.generate_gh_credentials + Credentials.add_gh_credentials gems = check_gem_files gems.each do |gem_file| @@ -18,7 +18,7 @@ def self.to_rubygems end def self.to_github_packages - Credentials.generate_rubygems_credentials + Credentials.add_rubygems_credentials gems = check_gem_files gems.each do |gem_file| @@ -34,6 +34,6 @@ def self.check_gem_files end def self.github_url - "https://rubygems.pkg.github.com/#{Inputs::GITHUB_USERNAME}" + "https://rubygems.pkg.github.com/#{Inputs.github_username}" end end