iced
Version:
Simple backup tool that uses node to talk to Amazon Glacier
48 lines (36 loc) • 1.18 kB
text/coffeescript
exports.command =
description: 'Uploads files to a glacier archive'
if require.main is module
glacier = require '../lib/glacier'
fs = require 'fs'
crypto = require 'crypto'
nopt = require 'nopt'
knownOpts =
description: String
shortHands =
d: ['--description']
parsedOptions = nopt(knownOpts, shortHands, process.argv)
vaultName = parsedOptions.argv.remain.shift()
fileName = parsedOptions.argv.remain.shift()
unless vaultName? and fileName?
console.error """
usage: iced archive <vault> <file> [--description=<description>]
Uploads <file> into <vault>, optionally with a <description>.
"""
process.exit 1
stats = fs.statSync fileName
console.log stats
params = {vaultName}
params.body = fs.readFileSync fileName
shasum = crypto.createHash('sha256')
shasum.update(params.body)
params.checksum = shasum.digest 'hex'
if parsedOptions.description?
params.archiveDescription = parsedOptions.description
glacier.uploadArchive params, (err, data) ->
if err?
console.error err.message
process.exit 1
console.log "uploaded to #{data.location}"
console.log data
process.exit 0