 8fc534661e
			
		
	
	8fc534661e
	
	
	
		
			
			Change-Id: Ife0a6bcd544740b06e3bb6700a1cc31e4a98a418
(cherry picked from commit 4b6dfb09e0)
		
	
		
			
				
	
	
		
			122 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright (C) 2018 The Android Open Source Project
 | |
|  *
 | |
|  * Licensed under the Apache License, Version 2.0 (the "License");
 | |
|  * you may not use this file except in compliance with the License.
 | |
|  * You may obtain a copy of the License at
 | |
|  *
 | |
|  * http://www.apache.org/licenses/LICENSE-2.0
 | |
|  *
 | |
|  * Unless required by applicable law or agreed to in writing, software
 | |
|  * distributed under the License is distributed on an "AS IS" BASIS,
 | |
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|  * See the License for the specific language governing permissions and
 | |
|  * limitations under the License.
 | |
|  */
 | |
| (function() {
 | |
|   'use strict';
 | |
| 
 | |
|   const COMMIT_COMMAND = 'git add . && git commit --amend --no-edit';
 | |
|   const PUSH_COMMAND_PREFIX = 'git push origin HEAD:refs/for/';
 | |
| 
 | |
|   // Command names correspond to download plugin definitions.
 | |
|   const PREFERRED_FETCH_COMMAND_ORDER = [
 | |
|     'checkout',
 | |
|     'cherry pick',
 | |
|     'pull',
 | |
|   ];
 | |
| 
 | |
|   Polymer({
 | |
|     is: 'gr-upload-help-dialog',
 | |
| 
 | |
|     /**
 | |
|      * Fired when the user presses the close button.
 | |
|      *
 | |
|      * @event close
 | |
|      */
 | |
| 
 | |
|     properties: {
 | |
|       revision: Object,
 | |
|       targetBranch: String,
 | |
|       _commitCommand: {
 | |
|         type: String,
 | |
|         value: COMMIT_COMMAND,
 | |
|         readOnly: true,
 | |
|       },
 | |
|       _fetchCommand: {
 | |
|         type: String,
 | |
|         computed: '_computeFetchCommand(revision, ' +
 | |
|             '_preferredDownloadCommand, _preferredDownloadScheme)',
 | |
|       },
 | |
|       _preferredDownloadCommand: String,
 | |
|       _preferredDownloadScheme: String,
 | |
|       _pushCommand: {
 | |
|         type: String,
 | |
|         computed: '_computePushCommand(targetBranch)',
 | |
|       },
 | |
|     },
 | |
| 
 | |
|     attached() {
 | |
|       this.$.restAPI.getLoggedIn().then(loggedIn => {
 | |
|         if (loggedIn) {
 | |
|           return this.$.restAPI.getPreferences();
 | |
|         }
 | |
|       }).then(prefs => {
 | |
|         if (prefs) {
 | |
|           this._preferredDownloadCommand = prefs.download_command;
 | |
|           this._preferredDownloadScheme = prefs.download_scheme;
 | |
|         }
 | |
|       });
 | |
|     },
 | |
| 
 | |
|     _handleCloseTap(e) {
 | |
|       e.preventDefault();
 | |
|       this.fire('close', null, {bubbles: false});
 | |
|     },
 | |
| 
 | |
|     _computeFetchCommand(revision, preferredDownloadCommand,
 | |
|         preferredDownloadScheme) {
 | |
|       if (!revision) { return; }
 | |
|       if (!revision || !revision.fetch) { return; }
 | |
| 
 | |
|       let scheme = preferredDownloadScheme;
 | |
|       if (!scheme) {
 | |
|         const keys = Object.keys(revision.fetch).sort();
 | |
|         if (keys.length === 0) {
 | |
|           return;
 | |
|         }
 | |
|         scheme = keys[0];
 | |
|       }
 | |
| 
 | |
|       if (!revision.fetch[scheme] || !revision.fetch[scheme].commands) {
 | |
|         return;
 | |
|       }
 | |
| 
 | |
|       const cmds = {};
 | |
|       Object.entries(revision.fetch[scheme].commands).forEach(([key, cmd]) => {
 | |
|         cmds[key.toLowerCase()] = cmd;
 | |
|       });
 | |
| 
 | |
|       if (preferredDownloadCommand &&
 | |
|           cmds[preferredDownloadCommand.toLowerCase()]) {
 | |
|         return cmds[preferredDownloadCommand.toLowerCase()];
 | |
|       }
 | |
| 
 | |
|       // If no supported command preference is given, look for known commands
 | |
|       // from the downloads plugin in order of preference.
 | |
|       for (let i = 0; i < PREFERRED_FETCH_COMMAND_ORDER.length; i++) {
 | |
|         if (cmds[PREFERRED_FETCH_COMMAND_ORDER[i]]) {
 | |
|           return cmds[PREFERRED_FETCH_COMMAND_ORDER[i]];
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       return undefined;
 | |
|     },
 | |
| 
 | |
|     _computePushCommand(targetBranch) {
 | |
|       return PUSH_COMMAND_PREFIX + targetBranch;
 | |
|     },
 | |
|   });
 | |
| })();
 |