concourse-resource-rubygems 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 06e906bc9ed43f8f5bcc2a3a6e1d704433abec3e
4
+ data.tar.gz: 76890dc11ec76b7d74fe6e2d6440ec5f4595be05
5
+ SHA512:
6
+ metadata.gz: e8071b9a95b0107e48cf18ffc0ef5d33db39424657df5180ba44cd0e3abed2ae4088081fee8ddddd7dae52f0e59065078e6c300dd22b4b7b9d4779e38e5394dd
7
+ data.tar.gz: 111ba1ba8f3142e423467aaa3fec6a7cb8940d7d7c75772a80e9524eb5967e0f91d553570cad147ee52f3d66bf21214b1b6d6447008eae16388bee5e35dbd1a1
data/.semver ADDED
@@ -0,0 +1,6 @@
1
+ ---
2
+ :major: 0
3
+ :minor: 1
4
+ :patch: 0
5
+ :special: ''
6
+ :metadata: ''
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2016 Chris Olstrom <chris@olstrom.com>
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
data/README.org ADDED
@@ -0,0 +1,47 @@
1
+ #+TITLE: RubyGems Concourse Resource
2
+ #+SUBTITLE: A Custom Resource for Concourse
3
+ #+LATEX: \pagebreak
4
+
5
+ * Overview
6
+
7
+ RubyGems Integration for Concourse Pipelines.
8
+
9
+ * Usage
10
+
11
+ Add the resource to your pipeline's ~resource_types~ (requires Concourse 0.74.0+)
12
+
13
+ #+BEGIN_SRC yaml
14
+ resource_types:
15
+ - name: rubygems
16
+ type: docker-image
17
+ source:
18
+ repository: resource/rubygems
19
+ #+END_SRC
20
+
21
+ * Source Configuration
22
+
23
+ |------+----------+---------------------|
24
+ | Name | Required | Description |
25
+ |------+----------+---------------------|
26
+ | gem | Yes | The name of the gem |
27
+ |------+----------+---------------------|
28
+
29
+ * Behaviour
30
+
31
+ ** ~check~ Not Implemented
32
+
33
+ *** Parameters
34
+
35
+ - None
36
+
37
+ ** ~out~ Not Implemented
38
+
39
+ ** ~in~ Not Implemented
40
+
41
+ * License
42
+
43
+ Apache 2.0 License, see ~LICENSE.txt~ for details.
44
+
45
+ * Contributors
46
+
47
+ - [[https://colstrom.github.io/][Chris Olstrom]] | [[mailto:chris@olstrom.com][e-mail]] | [[https://twitter.com/ChrisOlstrom][Twitter]]
data/bin/check ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'concourse-resource/rubygems/out'
4
+
5
+ rubygems = ConcourseResource::RubyGems::Out.new
6
+
7
+ unless rubygems.run
8
+ STDERR.puts "Failed to check RubyGems"
9
+ abort
10
+ end
data/bin/in ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ STDERR.puts 'Not Implemented'
data/bin/out ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ STDERR.puts 'Not Implemented'
@@ -0,0 +1,21 @@
1
+ require_relative 'lib/concourse-resource/rubygems/version'
2
+
3
+ Gem::Specification.new do |gem|
4
+ gem.name = 'concourse-resource-rubygems'
5
+ gem.version = ConcourseResource::RubyGems::VERSION
6
+ gem.license = 'Apache-2.0'
7
+ gem.summary = 'Concourse Resource for RubyGems'
8
+
9
+ gem.author = 'Chris Olstrom'
10
+ gem.email = 'chris@olstrom.com'
11
+ gem.homepage = 'https://github.com/colstrom/concourse-resource-rubygems'
12
+
13
+ gem.files = `git ls-files`.split("\n")
14
+ gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
15
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ gem.require_paths = ['lib']
17
+
18
+ gem.add_runtime_dependency 'concourse-fuselage', '~> 0.3', '>= 0.3.0'
19
+
20
+ gem.add_development_dependency 'semver2', '~> 3.4', '>= 3.4.2'
21
+ end
@@ -0,0 +1,3 @@
1
+ require 'concourse-resource/rubygems/check'
2
+ require 'concourse-resource/rubygems/gem_not_found'
3
+ require 'concourse-resource/rubygems/version'
@@ -0,0 +1,32 @@
1
+ require 'contracts'
2
+ require 'concourse-resource/rubygems/core'
3
+ require 'concourse-resource/rubygems/gem_not_found'
4
+
5
+ module RubyGems
6
+ # Check Step
7
+ class Check < Fuselage::Check
8
+ include Core
9
+
10
+ Contract None => ArrayOf[HashOf[String, String]]
11
+ def versions
12
+ Gems
13
+ .versions(gem)
14
+ .tap { |response| raise GemNotFound, response if response.is_a? String }
15
+ .sort_by { |version| version['created_at'] }
16
+ .map { |version| { 'version' => version.fetch('number') } }
17
+ rescue GemNotFound => message
18
+ STDERR.puts message
19
+ abort
20
+ end
21
+
22
+ Contract None => HashOf[String, String]
23
+ def latest
24
+ versions.last
25
+ end
26
+
27
+ Contract HashOf[String, String] => ArrayOf[HashOf[String, String]]
28
+ def since(version)
29
+ versions[versions.index(version)..-1]
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ require 'contracts'
2
+ require 'concourse-resource/rubygems/source'
3
+
4
+ module ConcourseResource
5
+ module RubyGems
6
+ # Core functionality for all Resource Steps
7
+ module Core
8
+ include ::Contracts::Core
9
+ include ::Contracts::Builtin
10
+ include Support::Source
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ module ConcourseResource
2
+ module RubyGems
3
+ # Exception for when a Gem is not found
4
+ class GemNotFound < StandardError
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ require 'contracts'
2
+
3
+ module ConcourseResource
4
+ module RubyGems
5
+ module Support
6
+ # Params for GemResource
7
+ module Source
8
+ Contract None => String
9
+ def gem
10
+ @gem ||= source.fetch 'gem'
11
+ rescue KeyError
12
+ STDERR.puts 'Params is missing gem'
13
+ abort
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,5 @@
1
+ module ConcourseResource
2
+ module RubyGems
3
+ VERSION = '0.1.0'.freeze
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: concourse-resource-rubygems
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris Olstrom
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: concourse-fuselage
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.3'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.3.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.3'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.3.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: semver2
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.4'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 3.4.2
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '3.4'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 3.4.2
53
+ description:
54
+ email: chris@olstrom.com
55
+ executables:
56
+ - check
57
+ - in
58
+ - out
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".semver"
63
+ - Gemfile
64
+ - LICENSE.txt
65
+ - README.org
66
+ - bin/check
67
+ - bin/in
68
+ - bin/out
69
+ - concourse-resource-rubygems.gemspec
70
+ - lib/concourse-resource/rubygems.rb
71
+ - lib/concourse-resource/rubygems/check.rb
72
+ - lib/concourse-resource/rubygems/core.rb
73
+ - lib/concourse-resource/rubygems/gem_not_found.rb
74
+ - lib/concourse-resource/rubygems/support/source.rb
75
+ - lib/concourse-resource/rubygems/version.rb
76
+ homepage: https://github.com/colstrom/concourse-resource-rubygems
77
+ licenses:
78
+ - Apache-2.0
79
+ metadata: {}
80
+ post_install_message:
81
+ rdoc_options: []
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ requirements: []
95
+ rubyforge_project:
96
+ rubygems_version: 2.5.1
97
+ signing_key:
98
+ specification_version: 4
99
+ summary: Concourse Resource for RubyGems
100
+ test_files: []
101
+ has_rdoc: