Skip to content

Commit

Permalink
avoid overwriting credentials (#8)
Browse files Browse the repository at this point in the history
* generated credentials

* rename file

* add methods to handle action inputs

* fix: avoid overwriting user credentials

* fix: set correct action
  • Loading branch information
juliocabrera820 authored May 4, 2024
1 parent 87afc94 commit 9ae3b4a
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 23 deletions.
File renamed without changes.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
34 changes: 19 additions & 15 deletions credentials.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
20 changes: 20 additions & 0 deletions inputs.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
8 changes: 5 additions & 3 deletions main.rb
Original file line number Diff line number Diff line change
@@ -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
8 changes: 4 additions & 4 deletions publish.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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|
Expand All @@ -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|
Expand All @@ -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

0 comments on commit 9ae3b4a

Please sign in to comment.