mina-circle 1.1.1 → 1.2.0

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: 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