Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

added use command line item

  • Loading branch information...
commit f5c4ec09d170819b10114e4f923bb94e02889eb0 1 parent 8164259
@crcn authored
View
20 README.md
@@ -1,4 +1,7 @@
-Gittyup is a node.js deplyment library with some slick features:
+Gittyup is a small node.js application deployment library similar to [n]()
+
+
+Gittyup is a node.js app deplyment library with some slick features:
- Rollback support.
- Script testing before using.
@@ -15,12 +18,14 @@ Gittyup is a node.js deplyment library with some slick features:
## Command Line
gup checkout daisy --repo=https://github.com/crcn/daisy.git
+ gup use daisy r5 #use a particular checkout
### Options
- help
- rollback :name Rollback a repositoriy
- history :name Repo history
- checkout :name :repo OR checkout :name checks out a repository
+ help
+ rollback :name Rollback a repositoriy
+ history :name Repo history
+ use :name :release Uses a repo
+ checkout :name :repo OR checkout :name checks out a repository
## Documentation
@@ -73,7 +78,10 @@ First argument can be either a string (app name), or object
* `maxRecords` - Maximum number of application records to keep locally.
-### .app().checkout(source, callback)
+### .app().checkout(opsOrSource, callback)
+
+- `opsOrSource` - Options (object) or the repo source (string) for the app.
+ - `repository` - repository of the project. Can be local directory, git repo, or .slug file
From a git repository:
View
56 bin/gittyup
@@ -9,6 +9,7 @@ function gup(app, max) {
return gittyup.app({ name: app, maxRecords: max });
}
+
celeri.onCommand({ command: 'checkout :name :repo OR checkout :name', desc: 'checks out a repository'}, function(request) {
var data = this.data,
@@ -38,6 +39,25 @@ celeri.onCommand({ command: 'checkout :name :repo OR checkout :name', desc: 'che
});
});
+celeri.onCommand({ command: 'use :name :release', desc: 'Uses a repo'}, function(request) {
+
+ var data = this.data, gap = gup(data.name);
+
+ gap.findCheckout({ release: data.release.substr(1) }, function(err, item) {
+ if(!item) return console.error('release does not exist');
+ gap.use(item._id, function(err, item) {
+
+ gap.process(function(err, process) {
+ process.restart(function(err, result) {
+
+ });
+ });
+ });
+ });
+
+
+});
+
celeri.onCommand({ command: 'history :name', desc: 'Repo history'}, function(request) {
var data = this.data,
@@ -46,22 +66,26 @@ celeri.onCommand({ command: 'history :name', desc: 'Repo history'}, function(req
gap.history(function(err, items) {
- items.sort(function(a, b) {
- return a.createdAt > b.createdAt ? 1 : -1;
- });
+ gap.current(function(err, cur) {
+
+ items.sort(function(a, b) {
+ return a.createdAt > b.createdAt ? 1 : -1;
+ });
- celeri.table(items, {
- columns: [{
- name: function(item) {
- return 'r'+item.release;
- }
- },
- {
- name: function(item) {
- return moment(item.createdAt).fromNow()
- }
- }]
- })
+ celeri.table(items, {
+ columns: [{
+ name: function(item) {
+ return (item.release == cur.release ? 'o' : '-')+' r'+item.release;
+ },
+ width: 10
+ },
+ {
+ name: function(item) {
+ return moment(item.createdAt).fromNow()
+ }
+ }]
+ });
+ });
});
});
@@ -85,4 +109,4 @@ celeri.onCommand({ command: 'rollback :name', desc: 'Rollback a repositoriy'}, f
-celeri.parse(process.argv.splice(2));
View
154 lib/app.js
@@ -14,8 +14,7 @@ var App = Structr({
/**
*/
- 'override __construct': function(gittyup, ops)
- {
+ 'override __construct': function(gittyup, ops) {
this._super();
//max number of items to keep tabs on
@@ -44,25 +43,20 @@ var App = Structr({
this.group = ops.group || '';
- try
- {
+ try {
nodefs.mkdirSync(this.historyDir, 0755, true);
- }
- catch(e)
- {
-
+ } catch(e) {
+ //this is okay - an error will be thrown if the dir exists
}
},
/**
*/
- 'process': function(callback)
- {
+ 'process': function(callback) {
var self = this;
- this.current(function(err, result)
- {
+ this.current(function(err, result) {
if(err || !result) return callback(err, result);
callback(err, new Process(self, result));
@@ -74,17 +68,13 @@ var App = Structr({
* checks out the application
*/
- 'checkout': function(ops, callback)
- {
+ 'checkout': function(ops, callback) {
var source, start, em = new EventEmitter();
- if(typeof ops == 'string')
- {
+ if(typeof ops == 'string') {
source = ops;
ops = {};
- }
- else
- {
+ } else {
start = ops.start;
source = ops.repository;
}
@@ -95,8 +85,7 @@ var App = Structr({
running = false;
- function onCheckout(err, result)
- {
+ function onCheckout(err, result) {
em.emit('data','done: ' + source);
callback(err, result);
}
@@ -111,12 +100,10 @@ var App = Structr({
//need to get the previous item for the version / count
- self.current(function(err, previous)
- {
+ self.current(function(err, previous) {
//checkout the source which could be from a number of sources
- var ret = checkout({ source: source, app: self, output: appDir }, function(err, response)
- {
+ var ret = checkout({ source: source, app: self, output: appDir }, function(err, response) {
em.emit('data', 'checked out: ' + source);
if(err) return callback(err, response ? response.result : undefined);
@@ -152,8 +139,7 @@ var App = Structr({
//add the info the checked out items so we have reference to what's up - backups, etc.
- self._gup.checkouts.insert(Structr.copy(app, ops.data, true), function(err, items)
- {
+ self._gup.checkouts.insert(Structr.copy(app, ops.data, true), function(err, items) {
var item = items[0];
//NOW that the item has been inserted, it's the *new* current item.
@@ -163,20 +149,16 @@ var App = Structr({
if(err) return callback(err, item);
//next up, get the checkout history so we don't take up too much shit
- self.history(function(e, items)
- {
- while(items.length > self.maxRecords)
- {
+ self.history(function(e, items) {
+ while(items.length > self.maxRecords) {
self.remove(items.pop()._id);
}
});
em.emit('data', 'linking new app: ' + source);
- var listener = linkApp ? link(item, function(err, result)
- {
- if(err)
- {
+ var listener = linkApp ? link(item, function(err, result) {
+ if(err) {
//rollback immediately.
self.rollback();
return callback(err);
@@ -218,21 +200,25 @@ var App = Structr({
},
/**
+ */
+
+ 'findCheckout': function(search, callback) {
+ this._gup.checkouts.findOne(search, callback);
+ },
+
+ /**
* removes an old repo
*/
- 'remove': function(checkoutId, callback)
- {
+ 'remove': function(checkoutId, callback) {
if(!callback) callback = function(){}
var self = this;
- this._gup.checkouts.findOne({ _id: checkoutId }, function(err, item)
- {
+ this._gup.checkouts.findOne({ _id: checkoutId }, function(err, item) {
if(!item) return callback('checkout does not exist');
- self._gup.checkouts.remove({ _id: checkoutId }, function(err, result)
- {
+ self._gup.checkouts.remove({ _id: checkoutId }, function(err, result) {
});
@@ -246,15 +232,14 @@ var App = Structr({
* history of all current repositories
*/
- 'history': function(callback)
- {
+ 'history': function(callback) {
+
//newest first
- this._gup.checkouts.find({ app: this._id }, { sort: { createdAt: -1 } }, function(err, items)
- {
+ this._gup.checkouts.find({ app: this._id }, { sort: { createdAt: -1 } }, function(err, items) {
/*items.sort(function(a,b)
{
return a.createdAt < b.createdAt;
- })*/
+ });*/
callback(err, items);
});
@@ -264,20 +249,16 @@ var App = Structr({
* uses a stored repository. As good as a rollback
*/
- 'use': function(repoId, callback)
- {
+ 'use': function(repoId, callback) {
var self = this;
- this._gup.checkouts.update({ _id: repoId }, { $set: { lastUsed: Date.now() }}, function(err, updated)
- {
- if(err || !updated.length) return callback(err || !updated.length);
-
+ this._gup.checkouts.update({ _id: repoId }, { $set: { lastUsed: Date.now() }}, function(err, updated) {
+ if(err || !updated.length) return callback(err || !updated.length);
console.log('using %s created at %s', updated[0].appDir, new Date(updated[0].createdAt));
- exec('rm '+self.currentDir+'; ln -s ' + updated[0].appDir + ' '+ self.currentDir, function(err, result)
- {
+ exec('rm '+self.currentDir+'; ln -s ' + updated[0].appDir + ' '+ self.currentDir, function(err, result) {
if(err) return callback(err);
callback(err, updated[0]);
@@ -289,23 +270,21 @@ var App = Structr({
* returns the current repo
*/
- 'current': function(callback)
- {
- this.history(function(err, items)
- {
+ 'current': function(callback) {
+ this.history(function(err, items) {
if(err) return callback(err);
+
+ items.sort(function(a, b) {
+ return a.lastUsed > b.lastUsed ? -1 : 1;
+ });
+
var item = items[0];
- if(item)
- {
- try
- {
+ if(item) {
+ try {
item.package = JSON.parse(fs.readFileSync(item.path+'/package.json','utf8'));
- }
- catch(e)
- {
- }
+ } catch(e) { }
}
callback(false, item);
@@ -316,19 +295,15 @@ var App = Structr({
* removes from the last checkout
*/
- 'rollback': function(callback)
- {
+ 'rollback': function(callback) {
if(!callback) callback = function(){};
var self = this;
- this.current(function(err, item)
- {
+ this.current(function(err, item) {
if(err || !item) return callback(err, item);
- self.remove(item._id, function()
- {
- self.current(function(err, item)
- {
+ self.remove(item._id, function() {
+ self.current(function(err, item) {
self.use(item._id, callback);
});
});
@@ -339,12 +314,10 @@ var App = Structr({
* slug for passing from server to server
*/
- 'makeSlug': function(callback)
- {
+ 'makeSlug': function(callback) {
var self = this;
- this.current(function(err, item)
- {
+ this.current(function(err, item) {
//err, no item, OR slug exists? return
if(err || !item || item.slug) return callback(err, item);
@@ -352,15 +325,12 @@ var App = Structr({
var slugPath = item.slugDir + '/' + item._id + '.tar.gz';
- slug.write(item.appDir, slugPath, function(err, result)
- {
+ slug.write(item.appDir, slugPath, function(err, result) {
//success making the slug?
- if(!err)
- {
+ if(!err) {
//then update the current item with the new slug
- return self._gup.checkouts.update({ _id: item._id }, { $set : { slug: slugPath }}, function(err, result)
- {
+ return self._gup.checkouts.update({ _id: item._id }, { $set : { slug: slugPath }}, function(err, result) {
self.current(callback);
});
}
@@ -375,18 +345,14 @@ var App = Structr({
* destroys everything about the app locally
*/
- 'destroy': function(callback)
- {
+ 'destroy': function(callback) {
var self = this;
-
- this.process(function(err, proc)
- {
+ this.process(function(err, proc) {
if(proc) proc.stop();
var self = this;
-
exec('rm -rf ' + this.appDir, callback);
});
},
@@ -395,17 +361,13 @@ var App = Structr({
* tests the current checked-out application
*/
- 'test': function(callback)
- {
- this.current(function(err, item)
- {
+ 'test': function(callback) {
+ this.current(function(err, item) {
if(err) return callback(err);
-
//no tester? no worries.
if(!item.package || !item.package.scripts || !item.package.scripts.test) return callback('test script does not exist');
-
exec(item.package.scripts.test, { cwd: item.path }, callback);
});
}
View
16 lib/checkout/fs.js
@@ -3,24 +3,18 @@ exec = require('child_process').exec;
//checkout via file system. GREAT for testing locally first.
-exports.test = function(ops)
-{
- try
- {
+exports.test = function(ops) {
+ try {
return fs.lstatSync(ops.source);
- }
- catch(e)
- {
+ } catch(e) {
return null;
}
}
-exports.checkout = function(ops, callback)
-{
+exports.checkout = function(ops, callback) {
console.log('Copying local repository to tmp directory');
- exec('cp -r ' + ops.source + '/* ' + ops.output, function(err, result)
- {
+ exec('cp -r ' + ops.source + '/* ' + ops.output, function(err, result) {
console.log('Done copying');
callback(err, {
View
27 lib/checkout/git
@@ -1,27 +0,0 @@
-#!/bin/bash
-
-GIT_REPO=$1
-GIT_DIR=$2
-
-
-
-# Output SSH key for no-password login. (Could use mktemp instead)
-cat > /tmp/ssh_key.$$ <<EOT
------BEGIN RSA PRIVATE KEY-----
-blahblahblah
------END RSA PRIVATE KEY-----
-EOT
-
-# Make a SSH wrapper to do the right thing
-cat > /tmp/git_ssh.$$ <<EOT
-ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /tmp/ssh_key.$$ "$@"
-EOT
-chmod +x /tmp/git_ssh.$$
-export GIT_SSH=/tmp/git_ssh.$$
-
-
-# Done!
-git clone $GIT_REPO $GIT_DIR
-
-# Cleanup
-rm -f /tmp/git_ssh.$$ /tmp/ssh_key.$$
View
7 lib/checkout/git.js
@@ -3,13 +3,11 @@ exec = child_process.exec,
spawn = child_process.spawn,
EventEmitter = require('events').EventEmitter;
-exports.test = function(ops)
-{
+exports.test = function(ops) {
return ops.source.split('.').pop() == 'git';
}
-exports.checkout = function(ops, callback)
-{
+exports.checkout = function(ops, callback) {
console.log('using git to check out ' + ops.source);
var git = spawn('git',[ 'clone',ops.source,ops.output], { cwd: __dirname }),
@@ -27,7 +25,6 @@ exports.checkout = function(ops, callback)
})
git.on('exit', function() {
-
callback(err, { result: true, link: true });
});
View
3  lib/checkout/index.js
@@ -1,5 +1,4 @@
-module.exports = require('../factory')(__dirname, function(ops, module, callback)
-{
+module.exports = require('../factory')(__dirname, function(ops, module, callback) {
return module.checkout(ops, callback);
});
View
9 lib/checkout/slug.js
@@ -1,15 +1,12 @@
var slug = require('../slug'),
Url = require('url')
-exports.test = function(ops)
-{
+exports.test = function(ops) {
return (Url.parse(ops.source).pathname || '').split('.').pop() == 'slug';
}
-exports.checkout = function(ops, callback)
-{
- slug.checkout(ops.source, ops.output, function(err, result)
- {
+exports.checkout = function(ops, callback) {
+ slug.checkout(ops.source, ops.output, function(err, result) {
callback(err, {
result: result,
link: false
View
16 lib/factory.js
@@ -1,25 +1,19 @@
var fs = require('fs');
-module.exports = function(directory, factory)
-{
+module.exports = function(directory, factory) {
var modules = [];
- fs.readdirSync(directory).forEach(function(file)
- {
+ fs.readdirSync(directory).forEach(function(file) {
if(file.substr(0, 5) == 'index' || file.split('.').pop() != 'js') return;
-
modules.push(require(directory + '/' + file));
});
- return function(ops, callback)
- {
- for(var i = modules.length; i--;)
- {
+ return function(ops, callback) {
+ for(var i = modules.length; i--;) {
var m = modules[i];
- if(m.test(ops))
- {
+ if(m.test(ops)) {
return factory(ops, m, callback) || true;
}
}
View
16 lib/index.js
@@ -9,8 +9,7 @@ var Gittyup = Structr({
/**
*/
- '__construct': function(root)
- {
+ '__construct': function(root) {
this.dirs = {
apps: root + '/apps',
db: root + '/db'
@@ -28,16 +27,12 @@ var Gittyup = Structr({
/**
*/
- 'app': function(opsOrName)
- {
+ 'app': function(opsOrName) {
var ops = {};
- if(typeof opsOrName == 'string')
- {
+ if(typeof opsOrName == 'string') {
ops.name = opsOrName;
- }
- else
- {
+ } else {
ops = opsOrName;
}
@@ -50,7 +45,6 @@ var Gittyup = Structr({
});
-module.exports = function(root)
-{
+module.exports = function(root) {
return new Gittyup(root || '/etc/gittyup/');
}
View
3  lib/link/index.js
@@ -1,5 +1,4 @@
-module.exports = require('../factory')(__dirname, function(ops, module, callback)
-{
+module.exports = require('../factory')(__dirname, function(ops, module, callback) {
return module.link(ops, callback);
})
View
18 lib/link/javascript.js
@@ -2,17 +2,14 @@ var fs = require('fs'),
spawn = require('child_process').spawn,
EventEmitter = require('events').EventEmitter;
-exports.test = function(ops)
-{
+exports.test = function(ops) {
var files = fs.readdirSync(ops.appDir);
- for(var i = files.length; i--;)
- {
+ for(var i = files.length; i--;) {
var file = files[i];
- if(file == 'package.json')
- {
+ if(file == 'package.json') {
return true;
/*try
{
@@ -32,8 +29,7 @@ exports.test = function(ops)
}
-exports.link = function(ops, callback)
-{
+exports.link = function(ops, callback) {
var npm = spawn('sudo',['npm','install','--unsafe-perm'], { cwd: ops.appDir }),
em = new EventEmitter();
@@ -41,13 +37,11 @@ exports.link = function(ops, callback)
em.emit('data', "Linking with npm: " + ops.appDir);
- npm.stdout.on('data', function(data)
- {
+ npm.stdout.on('data', function(data) {
em.emit('data', data.toString());
});
- npm.stderr.on('data', function(data)
- {
+ npm.stderr.on('data', function(data) {
em.emit('error', data.toString());
});
View
24 lib/process.js
@@ -7,8 +7,7 @@ var Process = module.exports = Structr({
/**
*/
- '__construct': function(app, current)
- {
+ '__construct': function(app, current) {
this.current = current;
@@ -25,14 +24,11 @@ var Process = module.exports = Structr({
/**
*/
- 'start': function(callback)
- {
+ 'start': function(callback) {
var programs = this.config.get('program');
- if(programs)
- {
- for(var programName in programs)
- {
+ if(programs) {
+ for(var programName in programs) {
//skip if already present
if(programName.indexOf(this.processId + '_') == 0) continue;
@@ -50,9 +46,7 @@ var Process = module.exports = Structr({
}
this.config.save();
- }
- else
- {
+ } else {
this.config.addProgram({ script: this.current.appDir, name: this.processId, environment: this.current.environment });
}
@@ -62,18 +56,14 @@ var Process = module.exports = Structr({
/**
*/
- 'stop': function(callback)
- {
+ 'stop': function(callback) {
this.config.disable(callback);
},
/**
*/
- 'restart': function(callback)
- {
-
- console.log("Stopping");
+ 'restart': function(callback) {
var self = this;
this.stop(function() {
console.log('Stopped');
View
37 lib/slug.js
@@ -5,17 +5,14 @@ fs = require('fs'),
http = require('http'),
Url = require('url');
-exports.write = function(input, output, callback)
-{
+exports.write = function(input, output, callback) {
exec('cd ' + input + '; tar -pczf ' + output + ' ./*;', callback);
}
//read locally, or from stream
-exports.checkout = function(source, output, callback)
-{
+exports.checkout = function(source, output, callback) {
- function onStream(input)
- {
+ function onStream(input) {
var tmpFile = '/tmp/gittyup/slugs/',
tmpPath = tmpFile + Date.now() + '.tar.gz';
@@ -25,27 +22,22 @@ exports.checkout = function(source, output, callback)
var stream = fs.createWriteStream(tmpPath, { flags: 'w+', encoding: 'binary', mode: 0755 });
- input.on('data', function(chunk)
- {
+ input.on('data', function(chunk) {
stream.write(chunk);
});
- input.on('end', function()
- {
+ input.on('end', function() {
stream.end();
- exec('cd ' + output + '; sudo tar -xf ' + tmpPath + '; rm ' + tmpPath + ';', function(err, result)
- {
+ exec('cd ' + output + '; sudo tar -xf ' + tmpPath + '; rm ' + tmpPath + ';', function(err, result) {
callback(err, result);
})
});
}
- if(typeof source == 'string')
- {
- if(source.indexOf("://") > -1)
- {
+ if(typeof source == 'string') {
+ if(source.indexOf("://") > -1) {
var hostParts = Url.parse(source),
ops = {
host: hostParts.hostname,
@@ -53,19 +45,14 @@ exports.checkout = function(source, output, callback)
path: hostParts.pathname + hostParts.search
}
- http.get(ops, onStream).on('error', function(e)
- {
+ http.get(ops, onStream).on('error', function(e) {
callback(e);
})
- }
- else
- {
+ } else {
onStream(fs.createReadStream(input));
}
- }
- else
- if(source.on)
- {
+ } else
+ if(source.on) {
onStream(source);
}
View
13 package.json
@@ -1,7 +1,7 @@
{
"name": "gittyup",
"descriptions": "easy git deployment for node.js apps",
- "version": "0.1.1",
+ "version": "0.1.2",
"author": "Craig Condon <craig@crcn.com>",
"repository": {
"type": "git",
@@ -10,15 +10,16 @@
"main": "./lib/index.js",
"dependencies": {
"structr": "0.1.0",
- "node-fs": "*",
+ "node-fs": "0.1.0",
"gumbo": "<0.2.0",
"celeri": "<0.3.0",
- "yaconfig": "*",
- "moment":"*",
- "beet":"*"
+ "yaconfig": "<0.1.0",
+ "moment": "1.1.1",
+ "beet": "<0.2.0",
+ "colors": "0.5.1"
},
"bin": {
- "gup":"./bin/gittyup"
+ "gup": "./bin/gittyup"
},
"os": [
"linux",
View
206 project.sublime-workspace
@@ -19,7 +19,15 @@
"file": "lib/app.js",
"settings":
{
- "buffer_size": 8075,
+ "buffer_size": 8175,
+ "line_ending": "Unix"
+ }
+ },
+ {
+ "file": "/tmp/subl stdin 6zaqkP.txt",
+ "settings":
+ {
+ "buffer_size": 0,
"line_ending": "Unix"
}
},
@@ -78,6 +86,38 @@
"buffer_size": 1769,
"line_ending": "Unix"
}
+ },
+ {
+ "file": "bin/gittyup",
+ "settings":
+ {
+ "buffer_size": 1680,
+ "line_ending": "Unix"
+ }
+ },
+ {
+ "file": "/tmp/subl stdin PYBdDv.txt",
+ "settings":
+ {
+ "buffer_size": 0,
+ "line_ending": "Unix"
+ }
+ },
+ {
+ "file": "package.json",
+ "settings":
+ {
+ "buffer_size": 612,
+ "line_ending": "Unix"
+ }
+ },
+ {
+ "file": "README.md",
+ "settings":
+ {
+ "buffer_size": 3997,
+ "line_ending": "Unix"
+ }
}
],
"build_system": "",
@@ -164,6 +204,10 @@
"find_history":
[
"checkout",
+ "history",
+ "link",
+ "source",
+ "checkout",
"console.log",
".on(",
"using ",
@@ -223,7 +267,7 @@
"groups":
[
{
- "selected": 1,
+ "selected": 11,
"sheets":
[
{
@@ -257,15 +301,15 @@
"file": "lib/app.js",
"settings":
{
- "buffer_size": 8075,
+ "buffer_size": 8175,
"regions":
{
},
"selection":
[
[
- 6125,
- 6125
+ 1652,
+ 1660
]
],
"settings":
@@ -274,13 +318,39 @@
"translate_tabs_to_spaces": false
},
"translation.x": 0.0,
- "translation.y": 4515.0,
+ "translation.y": 2424.0,
"zoom_level": 1.0
},
"type": "text"
},
{
"buffer": 2,
+ "file": "/tmp/subl stdin 6zaqkP.txt",
+ "settings":
+ {
+ "buffer_size": 0,
+ "regions":
+ {
+ },
+ "selection":
+ [
+ [
+ 0,
+ 0
+ ]
+ ],
+ "settings":
+ {
+ "syntax": "Packages/Text/Plain text.tmLanguage"
+ },
+ "translation.x": 0.0,
+ "translation.y": 0.0,
+ "zoom_level": 1.0
+ },
+ "type": "text"
+ },
+ {
+ "buffer": 3,
"file": "lib/link/javascript.js",
"settings":
{
@@ -307,7 +377,7 @@
"type": "text"
},
{
- "buffer": 3,
+ "buffer": 4,
"file": "lib/checkout/git.js",
"settings":
{
@@ -334,7 +404,7 @@
"type": "text"
},
{
- "buffer": 4,
+ "buffer": 5,
"file": "/tmp/subl stdin Lb2MSO.txt",
"settings":
{
@@ -360,7 +430,7 @@
"type": "text"
},
{
- "buffer": 5,
+ "buffer": 6,
"file": "lib/factory.js",
"settings":
{
@@ -387,7 +457,7 @@
"type": "text"
},
{
- "buffer": 6,
+ "buffer": 7,
"file": "lib/link/index.js",
"settings":
{
@@ -413,7 +483,7 @@
"type": "text"
},
{
- "buffer": 7,
+ "buffer": 8,
"file": "lib/checkout/index.js",
"settings":
{
@@ -439,7 +509,7 @@
"type": "text"
},
{
- "buffer": 8,
+ "buffer": 9,
"file": "lib/process.js",
"settings":
{
@@ -450,8 +520,8 @@
"selection":
[
[
- 1527,
- 1527
+ 1364,
+ 1364
]
],
"settings":
@@ -460,10 +530,118 @@
"translate_tabs_to_spaces": false
},
"translation.x": 0.0,
+ "translation.y": 307.0,
+ "zoom_level": 1.0
+ },
+ "type": "text"
+ },
+ {
+ "buffer": 10,
+ "file": "bin/gittyup",
+ "settings":
+ {
+ "buffer_size": 1680,
+ "regions":
+ {
+ },
+ "selection":
+ [
+ [
+ 1678,
+ 1678
+ ]
+ ],
+ "settings":
+ {
+ "syntax": "Packages/Text/Plain text.tmLanguage",
+ "translate_tabs_to_spaces": false
+ },
+ "translation.x": 0.0,
+ "translation.y": 556.0,
+ "zoom_level": 1.0
+ },
+ "type": "text"
+ },
+ {
+ "buffer": 11,
+ "file": "/tmp/subl stdin PYBdDv.txt",
+ "settings":
+ {
+ "buffer_size": 0,
+ "regions":
+ {
+ },
+ "selection":
+ [
+ [
+ 0,
+ 0
+ ]
+ ],
+ "settings":
+ {
+ "syntax": "Packages/Text/Plain text.tmLanguage"
+ },
+ "translation.x": 0.0,
+ "translation.y": 0.0,
+ "zoom_level": 1.0
+ },
+ "type": "text"
+ },
+ {
+ "buffer": 12,
+ "file": "package.json",
+ "settings":
+ {
+ "buffer_size": 612,
+ "regions":
+ {
+ },
+ "selection":
+ [
+ [
+ 481,
+ 481
+ ]
+ ],
+ "settings":
+ {
+ "syntax": "Packages/JavaScript/JSON.tmLanguage",
+ "tab_size": 4,
+ "translate_tabs_to_spaces": true
+ },
+ "translation.x": 0.0,
"translation.y": 0.0,
"zoom_level": 1.0
},
"type": "text"
+ },
+ {
+ "buffer": 13,
+ "file": "README.md",
+ "settings":
+ {
+ "buffer_size": 3997,
+ "regions":
+ {
+ },
+ "selection":
+ [
+ [
+ 384,
+ 384
+ ]
+ ],
+ "settings":
+ {
+ "syntax": "Packages/Markdown/Markdown.tmLanguage",
+ "translate_tabs_to_spaces": false
+ },
+ "translation.x": 0.0,
+ "translation.y": 182.0,
+ "zoom_level": 1.0
+ },
+ "type": "text"
}
]
}
Please sign in to comment.
Something went wrong with that request. Please try again.