mina-circle 1.1.1 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57b8dae1fd8fdf70ef8a203e9ffb88c33ba5018b
4
- data.tar.gz: 4bfce7a82b201c0d201346a3db280e07319bde1e
3
+ metadata.gz: 50e60356adc20c3e4b3ad9065ada8a663fcbe006
4
+ data.tar.gz: b2ec033ee11e236f4d400e9593f18b9c1fe715f7
5
5
  SHA512:
6
- metadata.gz: d6ff774ef06f9e111581ed8f3768f3706d73fbc79aeb66b8f36f0bbe4e1d87e7f1e26c0a7431dd40dfeae2d380db5f4293ef5dd86679afe1c921ed5fdb40e7d0
7
- data.tar.gz: ae361fe682087d88974d934eec5ecc759a10787992eafac16e673d8e58a0904b45efbec17724a70f5ecd68338e61ba47f09a6a50b2787e1181395265e4710859
6
+ metadata.gz: 4323a7ad1e8947c93e06d19506ad9a71de6690f6d29265cf2f373127c99a5beb4ce280ed3c3144d034fbee1c62131d1c698b4515c3201b3bcc5bcf68127edc8d
7
+ data.tar.gz: fac5ca660bb3c8fcf7a8c629321164837a507ab6e2bd162b6f48e7eea4641a57e9b59f3bd4f0179953c016455d09e5e4a46e15930267dba1c9599b5a27e8fc49
data/lib/mina-circle.rb CHANGED
@@ -4,3 +4,4 @@ require 'open-uri'
4
4
  require 'mina-circle/version'
5
5
  require 'mina-circle/helpers'
6
6
  require 'mina-circle/tasks'
7
+ require 'mina-circle/circle_ci'
@@ -0,0 +1,62 @@
1
+ require 'open-uri'
2
+
3
+ class CircleCI
4
+ BASE_URI = 'https://circleci.com/api/v1'
5
+ attr_accessor :organization, :project, :branch
6
+ def initialize(organization, project, branch = 'master')
7
+ @organization = organization
8
+ @project = project
9
+ @branch = branch
10
+ end
11
+
12
+ def builds
13
+ get("tree/#{branch}").collect { |build_hash| Build.new(build_hash) }
14
+ end
15
+
16
+ def artifacts(build)
17
+ get("#{build.build_num}/artifacts").collect { |artifact_hash| Artifact.new(artifact_hash) }
18
+ end
19
+
20
+ def get(path)
21
+ url = build_url path
22
+ JSON.parse(open(url).read)
23
+ rescue OpenURI::HTTPError
24
+ []
25
+ end
26
+
27
+ def build_url(path)
28
+ url = "#{BASE_URI}/project/#{organization}/#{project}/#{path}"
29
+ url << "?circle-token=#{CircleCI.token}" if CircleCI.token
30
+ url
31
+ end
32
+
33
+ def self.token
34
+ @@token ||= get_token
35
+ end
36
+
37
+ def self.get_token
38
+ return ENV['MINA_CIRCLE_TOKEN'] if ENV['MINA_CIRCLE_TOKEN']
39
+ config_file = File.join(Dir.home, '.mina-circle.yml')
40
+ File.exist?(config_file) ? YAML.load_file(config_file)['token'] : nil
41
+ end
42
+
43
+ class Artifact
44
+ attr_reader :source_url, :filename
45
+ def initialize(hash)
46
+ @filename = File.basename hash['path']
47
+ @source_url = hash['url']
48
+ end
49
+
50
+ def url
51
+ CircleCI.token.nil? ? source_url : "#{source_url}?circle-token=#{CircleCI.token}"
52
+ end
53
+ end
54
+
55
+ class Build
56
+ attr_reader :build_num
57
+ def initialize(hash)
58
+ @build_num = hash['build_num']
59
+ end
60
+ end
61
+ end
62
+
@@ -1,26 +1,14 @@
1
1
  module MinaCircle
2
2
  module Helpers
3
- def parse_from_home_dir
4
- File.exist?(config_file) ? YAML.load_file(config_file)['token'] : nil
5
- end
6
-
7
- def config_file
8
- File.join(Dir.home, '.mina-circle.yml')
9
- end
10
-
11
- def latest_build_number
12
- base_uri = 'https://circleci.com/api/v1/project'
13
- base_path = "#{circle_user}/#{circle_project}/tree/#{branch}"
14
- url = "#{base_uri}/#{base_path}?circle-token=#{circle_token}&limit=1&filter=completed"
15
- build_num = JSON.parse(open(url).read).first['build_num'].to_s
16
- puts "[mina-circle] Build number: #{build_num}"
17
- puts "[mina-circle] Using username/project: #{circle_user}/#{circle_project}"
18
- puts "[mina-circle] Branch: #{branch}"
19
- build_num
3
+ def build_url
4
+ latest_build = circle_ci.builds.first
5
+ circle_ci.artifacts(latest_build).select { |artifact|
6
+ artifact.filename == circle_artifact
7
+ }.first.url
20
8
  end
21
9
 
22
- def build_url
23
- "https://circle-artifacts.com/gh/#{circle_user}/#{circle_project}/#{latest_build_number}/artifacts/0/home/ubuntu/#{circle_artifact}?circle-token=#{circle_token}"
10
+ def circle_ci
11
+ @circle_ci ||= CircleCI.new circle_user, circle_project, branch
24
12
  end
25
13
  end
26
14
  end
@@ -6,9 +6,6 @@ extend MinaCircle::Helpers
6
6
  #
7
7
  # ## Settings
8
8
  #
9
- # ### circle_token
10
- # API access token. By default this is taken from ~/.mina-circle.yml if it exists
11
- #
12
9
  # ### circle_user
13
10
  # user name
14
11
  #
@@ -21,8 +18,6 @@ extend MinaCircle::Helpers
21
18
  # ### circle_explode_command
22
19
  # Command with options for decompressing the artifact archive
23
20
 
24
- set_default(:circle_token, parse_from_home_dir || fail('CircleCI token required'))
25
-
26
21
  namespace :circleci do
27
22
 
28
23
  desc 'Downloads and explodes the archive file containing the build'
@@ -1,3 +1,3 @@
1
1
  module MinaCircle
2
- VERSION = '1.1.1'
2
+ VERSION = '1.2.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mina-circle
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Simpson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-07-27 00:00:00.000000000 Z
12
+ date: 2016-02-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mina
@@ -31,6 +31,86 @@ dependencies:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.3.0
34
+ - !ruby/object:Gem::Dependency
35
+ name: rake
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.4'
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 10.4.0
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: '10.4'
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 10.4.0
54
+ - !ruby/object:Gem::Dependency
55
+ name: vcr
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.0'
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 3.0.0
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '3.0'
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 3.0.0
74
+ - !ruby/object:Gem::Dependency
75
+ name: webmock
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '1.22'
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 1.22.0
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '1.22'
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 1.22.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: minitest
96
+ requirement: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '5.8'
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 5.8.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '5.8'
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: 5.8.0
34
114
  description: Deploy without dependancies using mina and CircleCI.
35
115
  email:
36
116
  - patrick@heysparkbox.com
@@ -40,6 +120,7 @@ extensions: []
40
120
  extra_rdoc_files: []
41
121
  files:
42
122
  - lib/mina-circle.rb
123
+ - lib/mina-circle/circle_ci.rb
43
124
  - lib/mina-circle/helpers.rb
44
125
  - lib/mina-circle/tasks.rb
45
126
  - lib/mina-circle/version.rb
@@ -63,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
144
  version: '0'
64
145
  requirements: []
65
146
  rubyforge_project:
66
- rubygems_version: 2.2.2
147
+ rubygems_version: 2.5.0
67
148
  signing_key:
68
149
  specification_version: 4
69
150
  summary: Deploy your application from artifacts produced by CircleCI