concourse-resource-rubygems 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: