Skip to content

Commit 0cded38

Browse files
authored
Merge pull request #130 from jkeen/add-didDeployMessage
Add support for didDeployMessage
2 parents 35a2e8f + 643eed8 commit 0cded38

File tree

3 files changed

+67
-1
lines changed

3 files changed

+67
-1
lines changed

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,22 @@ If you are using DigitalOcean spaces you need to set this setting to `false`.
170170

171171
*Default:* `true`
172172

173+
### didDeployMessage
174+
175+
A message that will be displayed after the index file has been successfully uploaded to S3. By default this message will only display if the revision for `revisionData.revisionKey` of the deployment context has been activated.
176+
177+
*Default:*
178+
179+
```javascript
180+
if (context.revisionData.revisionKey && !context.revisionData.activatedRevisionKey) {
181+
return "Deployed but did not activate revision " + context.revisionData.revisionKey + ". "
182+
+ "To activate, run: "
183+
+ "ember deploy:activate " + context.revisionData.revisionKey + " --environment=" + context.deployEnvironment + "\n";
184+
}
185+
```
186+
187+
188+
173189
### How do I activate a revision?
174190

175191
A user can activate a revision by either:

index.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,15 @@ module.exports = {
3434
brotliCompressedFiles: function(context) {
3535
return context.brotliCompressedFiles || [];
3636
},
37+
didDeployMessage: function(context){
38+
var revisionKey = context.revisionData && context.revisionData.revisionKey;
39+
var activatedRevisionKey = context.revisionData && context.revisionData.activatedRevisionKey;
40+
if (revisionKey && !activatedRevisionKey) {
41+
return "Deployed but did not activate revision " + revisionKey + ". "
42+
+ "To activate, run: "
43+
+ "ember deploy:activate " + context.deployTarget + " --revision=" + revisionKey + "\n";
44+
}
45+
},
3746
allowOverwrite: false
3847
},
3948

@@ -103,7 +112,22 @@ module.exports = {
103112
this.log('preparing to activate `' + revisionKey + '`', { verbose: true });
104113

105114
var s3 = new this.S3({ plugin: this });
106-
return s3.activate(options);
115+
return s3.activate(options).then(() => {
116+
this.log(`✔ Activated revision \`${revisionKey}\``, {});
117+
118+
return {
119+
revisionData: {
120+
activatedRevisionKey: revisionKey
121+
}
122+
}
123+
});
124+
},
125+
126+
didDeploy: function(/* context */){
127+
var didDeployMessage = this.readConfig('didDeployMessage');
128+
if (didDeployMessage) {
129+
this.log(didDeployMessage);
130+
}
107131
},
108132

109133
fetchRevisions: function(context) {

tests/unit/index-test.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ describe('s3-index plugin', function() {
6161
});
6262

6363
context = {
64+
deployTarget: "qa",
6465
ui: mockUi,
6566

6667
project: stubProject,
@@ -262,6 +263,15 @@ describe('s3-index plugin', function() {
262263
assert.equal(Object.prototype.hasOwnProperty.call(s3Options, 'serverSideEncryption'), false, 'serverSideEncryption filtered correctly');
263264
});
264265
});
266+
267+
it('displays activation message when revision is activated', function() {
268+
var promise = plugin.activate(context);
269+
270+
return assert.isFulfilled(promise)
271+
.then(function() {
272+
assert.match(mockUi.messages.join("\n"), new RegExp(`✔ Activated revision \`${REVISION_KEY}\``));
273+
});
274+
})
265275
});
266276

267277
describe('#fetchInitialRevisions', function() {
@@ -315,5 +325,21 @@ describe('s3-index plugin', function() {
315325
});
316326
});
317327
});
328+
329+
describe('#didDeploy', function() {
330+
it("prints default message about lack of activation when revision has not been activated", function() {
331+
plugin.upload = function() {};
332+
plugin.activate = function() {};
333+
plugin.beforeHook(context);
334+
plugin.configure(context);
335+
plugin.beforeHook(context);
336+
plugin.didDeploy(context);
337+
338+
let message = mockUi.messages.join("\n")
339+
assert.match(message, new RegExp(`Deployed but did not activate revision ${REVISION_KEY}`));
340+
assert.match(message, /To activate, run/);
341+
assert.match(message, new RegExp(`ember deploy:activate qa --revision=${REVISION_KEY}`));
342+
});
343+
});
318344
});
319345
});

0 commit comments

Comments
 (0)