targit 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc7c75ab2e849e39e06887d5df8044695f033ced
4
- data.tar.gz: f0c5e9dafa2fbf31125b6efb6c36cb38e7c54512
3
+ metadata.gz: 9a6f6704460360a2e8248be6fe24353af06eb91f
4
+ data.tar.gz: 882f78545351adad22d2ede7fc3aa4b0e3ce4640
5
5
  SHA512:
6
- metadata.gz: 261daa72303a3406eecb7fafd53f379d70a8d37ca37cf20e02e310ea21aa8ed68fc3ee36de0748ba1ff7e52a4a415eaa57317cedbfbe0532f01847f2034f4a15
7
- data.tar.gz: 927117fbf0e831f9c8720465b8040dd50474c0c45777a3c7b21e2119901b3fddaf3c8feec241a6e7fa471962a680fe4e9bbdf83141d621a131f2bc0508cf93f6
6
+ metadata.gz: 350dba608c95da32eb1ef03147d01a66a5b7d9b4cee3dba57aa2a5180ab9adeefb6427508df5b50f1c86e84c651b05f6c03b409ebe27c0c9632d341d78b2cda4
7
+ data.tar.gz: 1dc6688a82844894d895682d645a4c99345c493fe5bffbe0d4ccf2a108b5cbec3a7b7545eb47d8bfee1918ce8cc3d336e01ef7c63d493eb91a16c0c738de730c
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ RSpec::Core::RakeTask.new(:spec)
7
7
 
8
8
  desc 'Run Rubocop on the gem'
9
9
  RuboCop::RakeTask.new(:rubocop) do |task|
10
- task.patterns = ['lib/**/*.rb', 'spec/**/*.rb']
10
+ task.patterns = ['lib/**/*.rb', 'spec/**/*.rb', 'bin/*']
11
11
  task.fail_on_error = true
12
12
  end
13
13
 
data/bin/targit CHANGED
@@ -1,7 +1,29 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'targit'
4
+ require 'mercenary'
4
5
 
5
- x = Targit.new('/Users/akerl/Code/Dock0/arch/root.tar.xz', repo: 'dock0/arch', tag: 'v0.0.fish', create: true, force: true)
6
- x.upload!
6
+ Mercenary.program(:targit) do |p|
7
+ p.version Targit::VERSION
8
+ p.description 'Tool for adding GitHub release assets'
9
+ p.syntax 'targit [options] USER/REPO TAG /path/to/file'
7
10
 
11
+ # rubocop:disable Style/LineLength
12
+ p.option :force, '-f', '--force', 'Replace the asset if it already exists'
13
+ p.option :create, '-c', '--create', 'Create release if it does not exist'
14
+ p.option :prerelease, '-p', '--prerelease', 'With -c, create as a dev release'
15
+ p.option :authfile, '-a FILE', '--authfile FILE', 'Set the auth file for GitHub credentials'
16
+ # rubocop:enable Style/LineLength
17
+
18
+ p.action do |args, options|
19
+ repo, tag, file = args
20
+ if repo && tag && file
21
+ puts "Attempting to upload #{file} on #{tag} of #{repo}"
22
+ asset = Targit.new(file, repo, tag, options)
23
+ asset.upload!
24
+ puts "Successfully created asset! #{asset.url}"
25
+ else
26
+ puts p
27
+ end
28
+ end
29
+ end
@@ -11,5 +11,6 @@ module Targit
11
11
  end
12
12
  end
13
13
 
14
+ require 'targit/version'
14
15
  require 'targit/asset'
15
16
  require 'targit/release'
@@ -7,12 +7,12 @@ module Targit
7
7
  class Asset
8
8
  attr_reader :release, :asset, :name, :github_data
9
9
 
10
- def initialize(asset, params = {})
10
+ def initialize(asset, repo, tag, params = {})
11
11
  @options = params
12
12
  @config = _config
13
13
  @client = _client
14
- @release = _release
15
- @upload_options = _options
14
+ @release = _release repo, tag
15
+ @upload_options = _upload_options
16
16
  @asset = asset
17
17
  @name = @upload_options[:name] || File.basename(@asset)
18
18
  end
@@ -20,7 +20,8 @@ module Targit
20
20
  def upload!
21
21
  delete! if @options[:force]
22
22
  fail('Release asset already exists') if already_exists?
23
- @client.upload_asset @release[:url], @asset, @options
23
+ asset = @client.upload_asset @release.data[:url], @asset, @upload_options
24
+ @client.release_asset asset[:url]
24
25
  end
25
26
 
26
27
  def already_exists?
@@ -34,7 +35,12 @@ module Targit
34
35
  end
35
36
 
36
37
  def github_data
37
- @client.release_assets(@release[:url]).find { |x| x[:name] == @name }
38
+ @client.release_assets(@release.data[:url]).find { |x| x[:name] == @name }
39
+ end
40
+
41
+ def url
42
+ 'https://github.com/' \
43
+ "#{@release.repo}/releases/download/#{@release.tag}/#{@name}"
38
44
  end
39
45
 
40
46
  private
@@ -58,11 +64,11 @@ module Targit
58
64
  )
59
65
  end
60
66
 
61
- def _release
62
- Targit::Release.new(@client, @options).data
67
+ def _release(repo, tag)
68
+ Targit::Release.new(@client, repo, tag, @options)
63
69
  end
64
70
 
65
- def _options
71
+ def _upload_options
66
72
  [:name, :content_type].each_with_object({}) do |option, hash|
67
73
  hash[option] = @options[option] if @options[option]
68
74
  end
@@ -2,26 +2,36 @@ module Targit
2
2
  ##
3
3
  # GitHub Release object
4
4
  class Release
5
- attr_reader :data
5
+ attr_reader :data, :repo, :tag
6
6
 
7
- def initialize(client, params = {})
7
+ def initialize(client, repo, tag, params = {})
8
8
  @client = client
9
- @data = find params
10
- create(params) if @data.nil? && params[:create]
9
+ @options = params
10
+ @repo = repo
11
+ @tag = tag
12
+ @create_options = _create_options
13
+ @data = find
14
+ create if @data.nil? && @options[:create]
15
+ fail('No release found') if @data.nil?
11
16
  end
12
17
 
13
18
  private
14
19
 
15
- def find(params)
16
- @client.releases(params[:repo]).find do |x|
17
- x[:tag_name] == params[:tag]
20
+ def find
21
+ @client.releases(@repo).find do |x|
22
+ x[:tag_name] == @tag
18
23
  end
19
24
  end
20
25
 
21
- def create(params)
22
- @client.create_release(params[:repo], params[:tag])
23
- params[:create] = false
24
- find params
26
+ def create
27
+ @client.create_release(@repo, @tag)
28
+ @data = find
29
+ end
30
+
31
+ def _create_options
32
+ [:prerelease, :target_commitish].each_with_object({}) do |option, hash|
33
+ hash[option] = @options[option] if @options[option]
34
+ end
25
35
  end
26
36
  end
27
37
  end
@@ -0,0 +1,5 @@
1
+ ##
2
+ # Set the version (needed for Mercenary -v)
3
+ module Targit
4
+ VERSION = '0.0.2'
5
+ end
@@ -1,6 +1,9 @@
1
+ $:.unshift File.expand_path('../lib/', __FILE__)
2
+ require 'targit/version'
3
+
1
4
  Gem::Specification.new do |s|
2
5
  s.name = 'targit'
3
- s.version = '0.0.1'
6
+ s.version = Targit::VERSION
4
7
  s.date = Time.now.strftime("%Y-%m-%d")
5
8
 
6
9
  s.summary = 'Tool for adding GitHub release assets'
@@ -16,6 +19,7 @@ Gem::Specification.new do |s|
16
19
 
17
20
  s.add_dependency 'octokit', '~> 3.2.0'
18
21
  s.add_dependency 'octoauth', '~> 0.0.6'
22
+ s.add_dependency 'mercenary', '~> 0.3.3'
19
23
 
20
24
  s.add_development_dependency 'rubocop', '~> 0.24.0'
21
25
  s.add_development_dependency 'rake', '~> 10.3.2'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: targit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Les Aker
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.0.6
41
+ - !ruby/object:Gem::Dependency
42
+ name: mercenary
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.3.3
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.3.3
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rubocop
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -127,6 +141,7 @@ files:
127
141
  - lib/targit.rb
128
142
  - lib/targit/asset.rb
129
143
  - lib/targit/release.rb
144
+ - lib/targit/version.rb
130
145
  - spec/spec_helper.rb
131
146
  - spec/targit_spec.rb
132
147
  - targit.gemspec