dpl-npm 1.9.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 +7 -0
- data/dpl-npm.gemspec +3 -0
- data/lib/dpl/provider/npm.rb +64 -0
- data/spec/provider/npm_spec.rb +95 -0
- metadata +159 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ae9c694ff3643b9952a5cad899576fe44f389e9c
|
4
|
+
data.tar.gz: db83550232952a41b8cb323ebc372f82b655f750
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 314b7c7e9241e6c2d60b0a2821dc113b48592ba5a6b8026e55cf86ad9cc6ab1059454432b7f313c00619d546e403a740ec959d389c7dbdf29ac20b66a0e18b5b
|
7
|
+
data.tar.gz: 1b9339d9bc9d4b8a098b37ba1e7f02bee0778af8fea510dcf7569f57990bda95d93b29c8c444931f06ed7429441f7de997b35a00862c5bd4b659cc7e7379fbaa
|
data/dpl-npm.gemspec
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'uri'
|
3
|
+
|
4
|
+
module DPL
|
5
|
+
class Provider
|
6
|
+
class NPM < Provider
|
7
|
+
NPMRC_FILE = '~/.npmrc'
|
8
|
+
DEFAULT_NPM_REGISTRY = 'registry.npmjs.org'
|
9
|
+
|
10
|
+
def needs_key?
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
def check_app
|
15
|
+
end
|
16
|
+
|
17
|
+
def setup_auth
|
18
|
+
file = File.open(File.expand_path(NPMRC_FILE), 'w')
|
19
|
+
file.puts(npmrc_file_content)
|
20
|
+
file.flush
|
21
|
+
end
|
22
|
+
|
23
|
+
def check_auth
|
24
|
+
setup_auth
|
25
|
+
log "Authenticated with email #{option(:email)}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def push_app
|
29
|
+
log "NPM API key format changed recently. If your deployment fails, check your API key in ~/.npmrc."
|
30
|
+
log "http://docs.travis-ci.com/user/deployment/npm/"
|
31
|
+
log "#{NPMRC_FILE} size: #{File.size(File.expand_path(NPMRC_FILE))}"
|
32
|
+
|
33
|
+
command = "env NPM_API_KEY=#{option(:api_key)} npm publish"
|
34
|
+
command << " --tag #{option(:tag)}" if options[:tag]
|
35
|
+
context.shell "#{command}"
|
36
|
+
FileUtils.rm(File.expand_path(NPMRC_FILE))
|
37
|
+
end
|
38
|
+
|
39
|
+
def package_registry
|
40
|
+
if File.exists?('package.json')
|
41
|
+
data = JSON.parse(File.read('package.json'))
|
42
|
+
if data['publishConfig'] && data['publishConfig']['registry']
|
43
|
+
return URI(data['publishConfig']['registry']).host
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
DEFAULT_NPM_REGISTRY
|
48
|
+
end
|
49
|
+
|
50
|
+
def npmrc_file_content
|
51
|
+
log "NPM version: #{npm_version}"
|
52
|
+
if npm_version =~ /^1/
|
53
|
+
"_auth = ${NPM_API_KEY}\nemail = #{option(:email)}"
|
54
|
+
else
|
55
|
+
"//#{package_registry}/:_authToken=${NPM_API_KEY}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def npm_version
|
60
|
+
`npm --version`
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'dpl/provider/npm'
|
3
|
+
|
4
|
+
describe DPL::Provider::NPM do
|
5
|
+
before :each do
|
6
|
+
allow(subject).to receive(:npm_version).and_return('2.11.3')
|
7
|
+
end
|
8
|
+
|
9
|
+
subject :provider do
|
10
|
+
described_class.new(DummyContext.new, :email => 'foo@blah.com', :api_key => 'test')
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#check_auth" do
|
14
|
+
example do
|
15
|
+
expect(provider).to receive(:setup_auth)
|
16
|
+
expect(provider).to receive(:log).with("Authenticated with email foo@blah.com")
|
17
|
+
provider.check_auth
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "#push_app" do
|
22
|
+
example do
|
23
|
+
expect(provider.context).to receive(:shell).with("env NPM_API_KEY=test npm publish")
|
24
|
+
expect(FileUtils).to receive(:rm).with(File.expand_path(DPL::Provider::NPM::NPMRC_FILE))
|
25
|
+
provider.setup_auth
|
26
|
+
provider.push_app
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#setup_auth" do
|
31
|
+
example do
|
32
|
+
test_setup_auth
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'when NPM is version 1.x' do
|
37
|
+
before :each do
|
38
|
+
allow(subject).to receive(:npm_version).and_return('1.4.28')
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "#setup_auth" do
|
42
|
+
example do
|
43
|
+
test_setup_auth(DPL::Provider::NPM::DEFAULT_NPM_REGISTRY, "_auth = ${NPM_API_KEY}\nemail = foo@blah.com")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when package.json exists' do
|
49
|
+
let(:host) { 'npm.example.com' }
|
50
|
+
let(:custom_rpm_registry) { 'https://' + host }
|
51
|
+
before :each do
|
52
|
+
expect(File).to receive(:exists?).with('package.json').and_return(true)
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'and it defines custom RPM registry' do
|
56
|
+
before { expect(File).to receive(:read).with('package.json').and_return("{\"publishConfig\":{\"registry\":\"#{custom_rpm_registry}\"}}") }
|
57
|
+
|
58
|
+
describe '#setup_auth' do
|
59
|
+
example do
|
60
|
+
test_setup_auth(host)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'and it defines custom RPM registry with trailing slash' do
|
66
|
+
let(:host) { 'npm.example.com' }
|
67
|
+
let(:custom_rpm_registry) { 'https://' + host + '/' }
|
68
|
+
before { expect(File).to receive(:read).with('package.json').and_return("{\"publishConfig\":{\"registry\":\"#{custom_rpm_registry}\"}}") }
|
69
|
+
|
70
|
+
describe '#setup_auth' do
|
71
|
+
example do
|
72
|
+
test_setup_auth(host)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'and it does not define custom RPM registry' do
|
78
|
+
before { expect(File).to receive(:read).with('package.json').and_return("{}") }
|
79
|
+
|
80
|
+
describe '#setup_auth' do
|
81
|
+
example do
|
82
|
+
test_setup_auth
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_setup_auth(registry = DPL::Provider::NPM::DEFAULT_NPM_REGISTRY, content = "//#{registry}/:_authToken=${NPM_API_KEY}")
|
90
|
+
f = double(:npmrc)
|
91
|
+
expect(File).to receive(:open).with(File.expand_path(DPL::Provider::NPM::NPMRC_FILE), 'w').and_return(f)
|
92
|
+
expect(f).to receive(:puts).with(content)
|
93
|
+
allow(f).to receive(:flush)
|
94
|
+
provider.setup_auth
|
95
|
+
end
|
metadata
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dpl-npm
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.9.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Konstantin Haase
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-03-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dpl
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.9.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.9.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec-its
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: json_pure
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: tins
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: coveralls
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: highline
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
description: deploy tool abstraction for clients
|
126
|
+
email: konstantin.mailinglists@googlemail.com
|
127
|
+
executables: []
|
128
|
+
extensions: []
|
129
|
+
extra_rdoc_files: []
|
130
|
+
files:
|
131
|
+
- dpl-npm.gemspec
|
132
|
+
- lib/dpl/provider/npm.rb
|
133
|
+
- spec/provider/npm_spec.rb
|
134
|
+
homepage: https://github.com/travis-ci/dpl
|
135
|
+
licenses:
|
136
|
+
- MIT
|
137
|
+
metadata: {}
|
138
|
+
post_install_message:
|
139
|
+
rdoc_options: []
|
140
|
+
require_paths:
|
141
|
+
- lib
|
142
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '2.2'
|
147
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
requirements: []
|
153
|
+
rubyforge_project:
|
154
|
+
rubygems_version: 2.6.13
|
155
|
+
signing_key:
|
156
|
+
specification_version: 4
|
157
|
+
summary: deploy tool
|
158
|
+
test_files:
|
159
|
+
- spec/provider/npm_spec.rb
|