| #!/usr/bin/env node | ||
| exports.command = { | ||
| description: "Ping ArchivesSpace and display the current version" | ||
| } | ||
| if (require.main === module) { | ||
| var api = require('../lib/load_api.js'); | ||
| var argv = require('minimist')(process.argv.slice(2)); | ||
| var _ = require('lodash'); | ||
| if (!argv['resource'] || typeof(argv['resource']) != 'object' || argv['resource'].length != 2 ) { | ||
| console.log("Usage: ashtin merge-preflight --resource {ID1} --resource {ID2}"); | ||
| } | ||
| var refSetOne = []; | ||
| var refSetTwo = []; | ||
| var requestCount = 0; | ||
| var responseCount = 0; | ||
| var logObject = function(treeNode, refSet) { | ||
| requestCount++; | ||
| api.get(treeNode.record_uri).then(function(archivalObjectRecord) { | ||
| refSet.push(archivalObjectRecord.ref_id); | ||
| responseCount++; | ||
| if (treeNode.has_children) { | ||
| _.each(treeNode.children, function(el, i) { | ||
| logObject(el, refSet); | ||
| }); | ||
| } | ||
| }).catch(function(err) { | ||
| console.log(err); | ||
| responseCount++; | ||
| }); | ||
| }; | ||
| api.get('/repositories/:repo_id/resources/' + argv['resource'][0] + '/tree').then(function(json) { | ||
| _.each(json.children, function(el, i) { | ||
| logObject(el, refSetOne); | ||
| }); | ||
| }).catch(function(x) {console.log(x);}); | ||
| api.get('/repositories/:repo_id/resources/' + argv['resource'][1] + '/tree').then(function(json) { | ||
| _.each(json.children, function(el, i) { | ||
| logObject(el, refSetTwo); | ||
| }); | ||
| }).catch(function(x) {console.log(x);}); | ||
| var watch = function() { | ||
| setTimeout(function() { | ||
| if (requestCount < 1 || (responseCount != requestCount)) { | ||
| console.log("waiting"); | ||
| watch(); | ||
| } else { | ||
| var intersection = _.intersection(refSetOne, refSetTwo); | ||
| console.log(intersection); | ||
| } | ||
| }, 1000); | ||
| } | ||
| watch(); | ||
| } |
| #!/usr/bin/env node | ||
| exports.command = { | ||
| description: "Manage user records", | ||
| arguments: "<action>" | ||
| } | ||
| if (require.main === module) { | ||
| require('../lib/utils.js'); | ||
| var api = require('../lib/load_api.js'); | ||
| var config = require('../lib/config.js'); | ||
| var argv = require('minimist')(process.argv.slice(2)); | ||
| switch(argv._.shift()) { | ||
| case 'create': | ||
| if(!argv['username'] || !argv['name'] || !argv['password']) { | ||
| console.log("Usage: ashtin users create --username={username} --name='{name}' --password={password} [--admin]"); | ||
| return; | ||
| } | ||
| var admin; | ||
| var password = argv['password']; | ||
| if(argv['admin']) { | ||
| admin = true; | ||
| } else { | ||
| admin = false; | ||
| } | ||
| var user = { | ||
| username: argv['username'], | ||
| name: argv['name'], | ||
| is_admin: admin | ||
| }; | ||
| api.createUser(user, password, function(err, json) { | ||
| if (err) { | ||
| console.log("Error: " + JSON.stringify(err)); | ||
| } else { | ||
| console.log("Created: " + json.uri); | ||
| } | ||
| }); | ||
| break; | ||
| case 'delete': | ||
| if(!argv['usernames']) { | ||
| console.log("Usage: ashtin users delete --usernames={usernames}"); | ||
| return; | ||
| } | ||
| var usernames = argv['usernames'].split(','); | ||
| api.eachUser(function(err, user) { | ||
| if(usernames.indexOf(user.username) > -1) { | ||
| api.del(user.uri, function(err, body) { | ||
| if (err) { | ||
| console.log("Error: " + JSON.stringify(err)); | ||
| } else { | ||
| console.log(body); | ||
| } | ||
| }); | ||
| } | ||
| }); | ||
| break; | ||
| case 'password-reset': | ||
| if(!argv['username'] || !argv['password']) { | ||
| console.log("Usage: ashtin users password-reset --username={username} --password={password}"); | ||
| return; | ||
| } | ||
| var username = argv['username']; | ||
| var password = argv['password']; | ||
| api.eachUser(function(err, user) { | ||
| if(username == user.username) { | ||
| api.updatePassword(user, password, function(err, json) { | ||
| if (err) { | ||
| console.log("Error: " + JSON.stringify(err)); | ||
| } else { | ||
| console.log("Updated: " + json.uri); | ||
| } | ||
| }); | ||
| } | ||
| }); | ||
| break; | ||
| default: | ||
| api.eachUser(function(err, user) { | ||
| console.log([user.username, user.name].join(',')); | ||
| }); | ||
| return; | ||
| } | ||
| } |
| #!/usr/bin/env node | ||
| // ashtin run-script examples/publish-everything.js | ||
| module.exports = function(api, generator) { | ||
| if (!api.hasSession) { | ||
| console.log("Please get logged in first: ascli setup"); | ||
| throw("Not logged in"); | ||
| } | ||
| api.eachResource(function(err, json) { | ||
| if(!json.publish) { | ||
| json.publish = true; | ||
| api.updateRecord(json).then(function(ok) { | ||
| console.log("Published "+json.uri); | ||
| }).catch(function(wtf) { | ||
| console.log("FAILURE "+wtf.code+" "+wtf.message); | ||
| }); | ||
| } | ||
| }); | ||
| }; |
@@ -14,3 +14,3 @@ #!/usr/bin/env node | ||
| if(!config.active_repo) { | ||
| console.log("Need an active repo! Run ascli setup"); | ||
| console.log("Need an active repo! Run ashtin setup"); | ||
| return; | ||
@@ -25,3 +25,3 @@ } | ||
| if(!argv['record-type'] || !argv['resource'] || !argv['property'] || !argv['find'] || !argv['replace']) { | ||
| console.log("Usage: as-cli --resource {id} --record-type {type} --property {property} --find {find string or regexp} --replace {replace string}") | ||
| console.log("Usage: ashtin --resource {id} --record-type {type} --property {property} --find {find string or regexp} --replace {replace string}") | ||
| return; | ||
@@ -31,10 +31,14 @@ } | ||
| var job = { | ||
| scope: { | ||
| jsonmodel_type: argv['record-type'], | ||
| base_record_uri: repo_url + "/resources/" + argv['resource'], | ||
| property: argv['property'] | ||
| }, | ||
| arguments: { | ||
| find: argv['find'], | ||
| replace: argv['replace'] | ||
| job_type: 'find_and_replace_job', | ||
| job: { | ||
| jsonmodel_type: 'find_and_replace_job', | ||
| scope: { | ||
| jsonmodel_type: argv['record-type'], | ||
| base_record_uri: repo_url + "/resources/" + argv['resource'], | ||
| property: argv['property'] | ||
| }, | ||
| arguments: { | ||
| find: argv['find'], | ||
| replace: argv['replace'] | ||
| } | ||
| } | ||
@@ -67,3 +71,3 @@ } | ||
| api.post(repo_url + "/find_and_replace_jobs", job). | ||
| api.post(repo_url + "/jobs", job). | ||
| then(function(result) { | ||
@@ -70,0 +74,0 @@ console.log(result.uri); |
@@ -67,11 +67,19 @@ #!/usr/bin/env node | ||
| function createNode(parentUri, parentDepth) { | ||
| if (typeof(parentDepth === 'undefined')) | ||
| parentDepth = 1; | ||
| function getOpts(opts) { | ||
| var opts = opts || {}; | ||
| var summary = ["a box of foos", "a box of bars", "a box of cars"][_.random(0, 2)]; | ||
| return _.merge({ | ||
| resource: {ref: resourceUri}, | ||
| extents: [generator.extent({container_summary: summary})] | ||
| }, opts); | ||
| } | ||
| function createNode(parentUri) { | ||
| var opts = {} | ||
| if (size > 0) { | ||
| opts = { | ||
| resource: {ref: resourceUri}, | ||
| extents: [generator.extent({container_summary: "a box of foos"})] | ||
| } | ||
| console.log("create node under " + parentUri) | ||
| if (parentUri) { | ||
@@ -81,4 +89,5 @@ opts.parent = {ref: parentUri} | ||
| size = size - 1; | ||
| rq.push(function() { | ||
| api.createArchivalObject(generator.archival_object(opts)). | ||
| api.createArchivalObject(generator.archival_object(getOpts(opts))). | ||
| then(function(archivalObject) { | ||
@@ -88,5 +97,7 @@ rq.tickDown(); | ||
| console.log(archivalObject.uri); | ||
| if (parentDepth < 13 && size > 0) { | ||
| if (size > 0) { | ||
| _.times(_.random(0, 100), function() { | ||
| createNode(archivalObject.uri, parentDepth + 1); | ||
| setTimeout(function() { | ||
| createNode(archivalObject.uri); | ||
| }, _.random(100, 500)); | ||
| }); | ||
@@ -109,2 +120,3 @@ } | ||
| resourceUri = resource.uri | ||
| console.log(resource.uri) | ||
| _.times(_.random(1, 10), function() { | ||
@@ -111,0 +123,0 @@ createNode(); |
+12
-0
@@ -18,2 +18,14 @@ | ||
| repository: function(opts) { | ||
| return merge(opts, { | ||
| repo_code: randomString(), | ||
| name: randomString() | ||
| }); | ||
| }, | ||
| repo: function(opts) { | ||
| return this.repository(opts); | ||
| }, | ||
| resource: function(opts) { | ||
@@ -20,0 +32,0 @@ return merge(opts, { |
+15
-15
@@ -23,19 +23,19 @@ #!/usr/bin/env node | ||
| api.on('serverError', function(code) { | ||
| switch(code) { | ||
| case 412: | ||
| console.log("Your session may have expired. Try running `ashtin setup`"); | ||
| break; | ||
| case 403: | ||
| console.log("Access denied. Try running `ashtin setup`"); | ||
| break; | ||
| case 'ECONNREFUSED': | ||
| console.log("Unable to connect to the server at " + config.backend_url); | ||
| break; | ||
| default: | ||
| logger.debug("serverError " + code); | ||
| } | ||
| }); | ||
| // api.on('serverError', function(code) { | ||
| // switch(code) { | ||
| // case 412: | ||
| // console.log("Your session may have expired. Try running `ashtin setup`"); | ||
| // break; | ||
| // case 403: | ||
| // console.log("Access denied. Try running `ashtin setup`"); | ||
| // break; | ||
| // case 'ECONNREFUSED': | ||
| // console.log("Unable to connect to the server at " + config.backend_url); | ||
| // break; | ||
| // default: | ||
| // logger.debug("serverError " + code); | ||
| // } | ||
| // }); | ||
| module.exports = api; | ||
+2
-2
| { | ||
| "name": "ashtin", | ||
| "version": "0.0.2", | ||
| "version": "0.0.3", | ||
| "description": "ArchivesSpace Hacker's Toolkit (in Node).", | ||
@@ -18,3 +18,3 @@ "repository": "https://github.com/quoideneuf/ashtin", | ||
| "ansi": "^0.3.0", | ||
| "asapi": "^0.1.3", | ||
| "asapi": "^0.1.5", | ||
| "cli-table": "^0.3.1", | ||
@@ -21,0 +21,0 @@ "events": "^1.0.2", |
Sorry, the diff of this file is not supported yet
34170530
14.41%70
4.48%1580
12.06%Updated