Skip to content

Commit 49a05d8

Browse files
committed
Remove firebase, use firebase-admin
1 parent 45e9e51 commit 49a05d8

File tree

3 files changed

+26
-23
lines changed

3 files changed

+26
-23
lines changed

package.json

-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
"@angular/http": "^2.2.0",
3333
"@angular/platform-browser": "^2.2.0",
3434
"core-js": "^2.4.1",
35-
"firebase": "^3.6.7",
3635
"google-cloud": "^0.45.1",
3736
"image-diff": "^1.6.3",
3837
"rxjs": "5.0.0-beta.12",

tools/gulp/task_helpers.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -234,14 +234,19 @@ export function isTravisPushBuild() {
234234
return process.env['TRAVIS_PULL_REQUEST'] === 'false';
235235
}
236236

237+
/** Decode the token for Travis to use. */
238+
function decode(str: string): string {
239+
return (str || '').split('\\n').reverse().join('\\n').replace(/\\n/g, '\n');
240+
}
241+
237242
/** Open Google Cloud Storage for screenshots */
238243
export function openScreenshotsCloudStorage() {
239244
// Enable Storage
240245
let gcs = gcloud.storage({
241246
projectId: 'material2-screenshots',
242247
credentials: {
243248
client_email: 'firebase-adminsdk-t4209@material2-screenshots.iam.gserviceaccount.com',
244-
private_key: (process.env['MATERIAL2_SCREENSHOT_FIREBASE_KEY'] || '').replace(/\\n/g, '\n')
249+
private_key: decode(process.env['MATERIAL2_SCREENSHOT_FIREBASE_KEY'])
245250
},
246251
});
247252

@@ -253,14 +258,13 @@ export function openScreenshotsCloudStorage() {
253258
export function openFirebaseScreenshotsDatabase() {
254259
// Initialize the Firebase application with admin credentials.
255260
// Credentials need to be for a Service Account, which can be created in the Firebase console.
256-
console.log(process.env['MATERIAL2_SCREENSHOT_FIREBASE_KEY']);
257261
let screenshotApp = firebaseAdmin.initializeApp({
258262
credential: firebaseAdmin.credential.cert({
259263
project_id: 'material2-screenshots',
260264
client_email: 'firebase-adminsdk-t4209@material2-screenshots.iam.gserviceaccount.com',
261265
// In Travis CI the private key will be incorrect because the line-breaks are escaped.
262266
// The line-breaks need to persist in the service account private key.
263-
private_key: (process.env['MATERIAL2_SCREENSHOT_FIREBASE_KEY'] || '').replace(/\\n/g, '\n')
267+
private_key: decode(process.env['MATERIAL2_SCREENSHOT_FIREBASE_KEY'])
264268
}),
265269
databaseURL: 'https://material2-screenshots.firebaseio.com'
266270
}, 'material2-screenshots');

tools/gulp/tasks/screenshots.ts

+19-19
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {task} from 'gulp';
22
import {readdirSync, statSync, existsSync, mkdirSync} from 'fs';
33
import {openScreenshotsCloudStorage, openFirebaseScreenshotsDatabase} from '../task_helpers';
44
import * as path from 'path';
5-
import * as firebase from 'firebase';
5+
import * as admin from 'firebase-admin';
66
const imageDiff = require('image-diff');
77

88
const SCREENSHOT_DIR = './screenshots';
@@ -25,33 +25,33 @@ task('screenshots', () => {
2525
}
2626
});
2727

28-
function updateFileResult(database: firebase.database.Database, prNumber: string,
29-
filenameKey: string, result: boolean): firebase.Promise<void>{
28+
function updateFileResult(database: admin.database.Database, prNumber: string,
29+
filenameKey: string, result: boolean): admin.Promise<void>{
3030
return database.ref(FIREBASE_REPORT).child(`${prNumber}/results/${filenameKey}`).set(result);
3131
}
3232

33-
function updateResult(database: firebase.database.Database, prNumber: string,
34-
result: boolean): firebase.Promise<void> {
33+
function updateResult(database: admin.database.Database, prNumber: string,
34+
result: boolean): admin.Promise<void> {
3535
return database.ref(FIREBASE_REPORT).child(`${prNumber}/result`).set(result);
3636
}
3737

38-
function updateCommit(database: firebase.database.Database,
39-
prNumber: string): firebase.Promise<void> {
38+
function updateCommit(database: admin.database.Database,
39+
prNumber: string): admin.Promise<void> {
4040
return database.ref(FIREBASE_REPORT).child(`${prNumber}/commit`)
4141
.set(process.env['TRAVIS_COMMIT']);
4242
}
4343

4444
/** Get a list of filenames from firebase database. */
45-
function getScreenFilenames(database: firebase.database.Database): firebase.Promise<string[]> {
45+
function getScreenFilenames(database: admin.database.Database): admin.Promise<string[]> {
4646
return database.ref(FIREBASE_FILELIST).once('value')
47-
.then((snapshots: firebase.database.DataSnapshot) => {
47+
.then((snapshots: admin.database.DataSnapshot) => {
4848
return snapshots.val();
4949
});
5050
}
5151

5252
/** Upload a list of filenames to firebase database as gold. */
53-
function setScreenFilenames(database: firebase.database.Database,
54-
reportKey?: string): firebase.Promise<void> {
53+
function setScreenFilenames(database: admin.database.Database,
54+
reportKey?: string): admin.Promise<void> {
5555
let filenames: string[] = [];
5656
readdirSync(SCREENSHOT_DIR).map((file: string) => {
5757
let fullName = path.join(SCREENSHOT_DIR, file);
@@ -78,7 +78,7 @@ function setScreenFilenames(database: firebase.database.Database,
7878
function uploadScreenshots(reportKey?: string, mode?: 'test' | 'diff') {
7979
let bucket = openScreenshotsCloudStorage();
8080

81-
let promises: firebase.Promise<void>[] = [];
81+
let promises: admin.Promise<void>[] = [];
8282
let localDir = mode == 'diff' ? `${SCREENSHOT_DIR}/diff` : SCREENSHOT_DIR;
8383
readdirSync(localDir).map((file: string) => {
8484
let fileName = path.join(localDir, file);
@@ -90,7 +90,7 @@ function uploadScreenshots(reportKey?: string, mode?: 'test' | 'diff') {
9090
promises.push(bucket.upload(fileName, { destination: destination }));
9191
}
9292
});
93-
return firebase.Promise.all(promises);
93+
return admin.Promise.all(promises);
9494
}
9595

9696
/** Check whether the directory exists. If not then create one. */
@@ -102,11 +102,11 @@ function _makeDir(dirName: string) {
102102

103103
/** Download golds screenshots. */
104104
function downloadAllGolds(
105-
filenames: string[], database: firebase.database.Database,
106-
reportKey: string): firebase.Promise<boolean> {
105+
filenames: string[], database: admin.database.Database,
106+
reportKey: string): admin.Promise<boolean> {
107107
_makeDir(`${SCREENSHOT_DIR}/golds`);
108108

109-
return firebase.Promise.all(filenames.map((filename: string) => {
109+
return admin.Promise.all(filenames.map((filename: string) => {
110110
return downloadGold(filename).then(() => diffScreenshot(filename, database, reportKey));
111111
})).then((results: boolean[]) => results.every((value: boolean) => value == true));
112112
}
@@ -119,16 +119,16 @@ function downloadGold(filename: string): Promise<void> {
119119
});
120120
}
121121

122-
function diffScreenshot(filename: string, database: firebase.database.Database,
123-
reportKey: string): firebase.Promise<boolean> {
122+
function diffScreenshot(filename: string, database: admin.database.Database,
123+
reportKey: string): admin.Promise<boolean> {
124124
// TODO(tinayuangao): Run the downloads and diffs in parallel.
125125
let goldUrl = `${SCREENSHOT_DIR}/golds/${filename}`;
126126
let pullRequestUrl = `${SCREENSHOT_DIR}/${filename}`;
127127
let diffUrl = `${SCREENSHOT_DIR}/diff/${filename}`;
128128
let filenameKey = filename.replace('.screenshot.png', '');
129129

130130
if (existsSync(goldUrl) && existsSync(pullRequestUrl)) {
131-
return new firebase.Promise((resolve: any, reject: any) => {
131+
return new admin.Promise((resolve: any, reject: any) => {
132132
imageDiff({
133133
actualImage: pullRequestUrl,
134134
expectedImage: goldUrl,

0 commit comments

Comments
 (0)