Skip to content

Commit 88e3022

Browse files
committed
Add await syntax support
1 parent 4492ba6 commit 88e3022

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,21 @@ p4.edit({files: ['*.js']}, function(err)
5858
if (err) return console.log(err);
5959
});
6060
```
61+
62+
## Now also supporting await syntax - example:
63+
64+
```js
65+
66+
var p4 = require('reckless-node-perforce');
67+
68+
try
69+
{
70+
// create a new changelist
71+
let changelist = await awaitP4('changelist.create', {description: 'Hello world!'});
72+
console.log(`Changelist is ${changelist}.`);
73+
}
74+
catch (err)
75+
{
76+
return console.log(err);
77+
}
78+
```

index.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,32 @@ NodeP4.prototype.users = function (options, callback)
385385
});
386386
};
387387

388+
NodeP4.prototype.awaitCommand = function (command, options)
389+
{
390+
return new Promise((resolve, reject) =>
391+
{
392+
this[command](options, (err, out) =>
393+
{
394+
// Error and output handling
395+
if (err)
396+
{
397+
if (err.message && err.message.includes("file(s) up-to-date"))
398+
{
399+
resolve(err.message); // Not a real error, treat as success
400+
}
401+
else
402+
{
403+
reject(err); // Real error, reject the promise
404+
}
405+
}
406+
else
407+
{
408+
resolve(out); // No errors, resolve with the actual output
409+
}
410+
});
411+
});
412+
};
413+
388414
var commonCommands = ['add', 'delete', 'edit', 'revert', 'sync', 'diff', 'reconcile', 'reopen', 'resolved',
389415
'shelve', 'unshelve', 'client', 'resolve', 'submit', 'describe', 'files'];
390416

0 commit comments

Comments
 (0)