Skip to content

Commit

Permalink
v1.2.4
Browse files Browse the repository at this point in the history
  • Loading branch information
bhagyas committed Oct 28, 2018
1 parent 02cbe6e commit 2a463a7
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 25 deletions.
6 changes: 5 additions & 1 deletion README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Interact with the Alfresco repository with an interactive command line.
== Features
- Performs Alfresco operations from the terminal.
- Autocompletes node names for valid operations.
- Performs glob pattern matching for filename related operations.
- Maintains a session with a valid token, automatically persists within terminal sessions.
- Maintains a local command history

Expand Down Expand Up @@ -82,6 +83,9 @@ None

== Version History

* 1.2.4 - 20181028
- *Major:* Improved `login` command.

* 1.2.3 - 20181026
- Added search results auto completion in the results history.
- Added `alias set|clear` commands for adding aliases for search queries.
Expand All @@ -94,7 +98,7 @@ None
* 1.2.1 - 20181025
- Added `list versions` command.
* 1.2 - 20181025
- [MAJOR] Adding folder name auto completion
- *Major:* Adding folder name auto completion
- Added `delete` command with support for deleting child nodes.

* 1.1 - 20181024
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "alfresco-cli",
"version": "1.2.3" ,
"version": "1.2.4" ,
"description": "Alfresco CLI - Command line interface for Alfresco",
"main": "src/index.js",
"bin": "dist/bundle.js",
Expand Down
104 changes: 81 additions & 23 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import AsciiTable = require("ascii-table");
var minimatch = require("minimatch")

import {throws} from "assert";
import {promises} from "fs";
import {log} from "util";

let parseNodeRef = (nodeRef?: string) => {
return nodeRef;
Expand Down Expand Up @@ -48,34 +50,82 @@ let nodeNameAutoCompletion = async (input, callback) => {


vorpal
.command('login <username> [password] [host]', 'Login to an Alfresco instance.')
.option('-p', '--password', 'Password')
.option('-h', '--host', "Host")
.command('login <username>', 'Login to an Alfresco instance.')
.option('-p, --password <password>', 'Password')
.option('-h, --host <host>', "Host")
.option('-s, --save', "Save host")
.action(function (args, callback) {
let self = this;
self.log(chalk.default.green('logging in..'));
let password;
let loginToAlfresco = (username, password) => {
return new Promise((resolve, reject) => {
return alfrescoJsApi.login(username, password)
.then(function (data) {
self.log('API authentication performed successfully. Login ticket:' + data);
vorpal.localStorage.setItem('ticket', data);
resolve();
}, function (data) {
let error = JSON.parse(data.response.text).error.briefSummary;
reject(error);
}).catch(error => reject(error));
})
};

let getParameter = (parameter, type ='input') => {
return new Promise((resolve, reject) =>
{
let storedValue = vorpal.localStorage.getItem(parameter);
if (storedValue) {
return resolve(storedValue);
}

self.log(JSON.stringify(args));
if (args.host) {
host = args.host;
this.log("Updating host: " + args.host);
vorpal.localStorage.setItem('host', args.host);
if (args[parameter]){
return resolve(args[parameter]);
}
if (args.options[parameter]) {
return resolve(args.options[parameter]);
} else {
return self.prompt({
type: type,
name: parameter,
default: null,
message: `Please enter the ${parameter}: `,
}, results => {
let result = results[parameter];
if (result){
resolve(result);
}else{
reject('Please try again.')
}
}, error => {
reject(error);
});
}
});
};

let updateHost = async (host) => {
this.log(`Using host: ${host}. Change host by passing host as an argument.`);
alfrescoJsApi.changeEcmHost(host);
}

if (args.password) {
password = args.password;
} else {
//prompt for password
}
if (args.options.save){
vorpal.localStorage.setItem('host', host);
}
};

alfrescoJsApi.login(args.username, password).then(function (data) {
self.log('API authentication performed successfully. Login ticket:' + data);
vorpal.localStorage.setItem('ticket', data);
}, function (error) {
vorpal.log(error);
}).then(callback);
let authenticate = new Promise((resolve, reject) => {
return getParameter('host').then((host => {
return updateHost(host).then(() => {
return getParameter('password', 'password').then(password => {
return loginToAlfresco(args.username, password).then(() => {
return resolve();
}).catch(reject);
}).catch(reject)
});
}));
});

authenticate.catch(callback).then(callback);
});


Expand Down Expand Up @@ -114,7 +164,7 @@ vorpal
i[item.entry.id] = item.entry.title + (item.entry.description ? " - " + item.entry.description : "");
}
return i;
})
});

let rows = flatten(sites);
var table = new AsciiTable();
Expand Down Expand Up @@ -460,7 +510,10 @@ function printNodeList(entries) {
table.addRow(item.entry.id, item.entry.name, item.entry.nodeType);
});
if(found)
vorpal.log(table.toString());
{vorpal.log(table.toString());}
else{
vorpal.log(`no results`)
}
}

function cacheResults(entries){
Expand Down Expand Up @@ -679,6 +732,11 @@ function getCurrentNodeRef() {
async function getNodeRef(nodeRef: string, explicit = false):Promise<string> {
let storedNodeRef = getCurrentNodeRef();

//check for connectivity.
if (!alfrescoJsApi.isLoggedIn()){
throw new Error("Unable to connect to the repository, please login again.");
}

if (nodeRef === "..") {
return await getParent(storedNodeRef);
}
Expand Down

0 comments on commit 2a463a7

Please sign in to comment.