From 949431b7dfcea1812b58f35efbc544f7a723708e Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 30 Jan 2015 15:42:26 +0100 Subject: [PATCH] Move remaining files from lib/travis to utils --- .../app/controllers/env-var-new.coffee | 2 +- assets/scripts/app/controllers/env-var.coffee | 2 +- assets/scripts/app/controllers/ssh-key.coffee | 2 +- assets/scripts/app/models/log.coffee | 2 +- assets/scripts/app/router.coffee | 2 +- .../utils}/lines-selector.coffee | 0 .../{lib/travis => app/utils}/location.coffee | 0 .../travis => app/utils}/log-chunks.coffee | 0 .../travis => app/utils}/log-folder.coffee | 0 assets/scripts/app/views/log.coffee | 4 +- assets/scripts/lib/travis/chunk-buffer.coffee | 96 ----------- .../scripts/lib/travis/instrumentation.coffee | 8 - assets/scripts/lib/travis/ordered-log.coffee | 153 ------------------ 13 files changed, 7 insertions(+), 264 deletions(-) rename assets/scripts/{lib/travis => app/utils}/lines-selector.coffee (100%) rename assets/scripts/{lib/travis => app/utils}/location.coffee (100%) rename assets/scripts/{lib/travis => app/utils}/log-chunks.coffee (100%) rename assets/scripts/{lib/travis => app/utils}/log-folder.coffee (100%) delete mode 100644 assets/scripts/lib/travis/chunk-buffer.coffee delete mode 100644 assets/scripts/lib/travis/instrumentation.coffee delete mode 100644 assets/scripts/lib/travis/ordered-log.coffee diff --git a/assets/scripts/app/controllers/env-var-new.coffee b/assets/scripts/app/controllers/env-var-new.coffee index 6b511d6e..ff1bceee 100644 --- a/assets/scripts/app/controllers/env-var-new.coffee +++ b/assets/scripts/app/controllers/env-var-new.coffee @@ -1,4 +1,4 @@ -require 'travis/validations' +require 'utils/validations' Validations = Travis.Validations EnvVar = Travis.EnvVar diff --git a/assets/scripts/app/controllers/env-var.coffee b/assets/scripts/app/controllers/env-var.coffee index 1618bd83..5eb76365 100644 --- a/assets/scripts/app/controllers/env-var.coffee +++ b/assets/scripts/app/controllers/env-var.coffee @@ -1,4 +1,4 @@ -require 'travis/validations' +require 'utils/validations' Validations = Travis.Validations diff --git a/assets/scripts/app/controllers/ssh-key.coffee b/assets/scripts/app/controllers/ssh-key.coffee index f02ff0e3..83076178 100644 --- a/assets/scripts/app/controllers/ssh-key.coffee +++ b/assets/scripts/app/controllers/ssh-key.coffee @@ -1,4 +1,4 @@ -require 'travis/validations' +require 'utils/validations' Validations = Travis.Validations diff --git a/assets/scripts/app/models/log.coffee b/assets/scripts/app/models/log.coffee index 97b0b713..d57dd5ba 100644 --- a/assets/scripts/app/models/log.coffee +++ b/assets/scripts/app/models/log.coffee @@ -1,4 +1,4 @@ -require 'travis/log-chunks' +require 'utils/log-chunks' Ajax = Travis.ajax diff --git a/assets/scripts/app/router.coffee b/assets/scripts/app/router.coffee index 45716538..bd77d34c 100644 --- a/assets/scripts/app/router.coffee +++ b/assets/scripts/app/router.coffee @@ -1,4 +1,4 @@ -require 'travis/location' +require 'utils/location' require 'routes/application' config = ENV.config diff --git a/assets/scripts/lib/travis/lines-selector.coffee b/assets/scripts/app/utils/lines-selector.coffee similarity index 100% rename from assets/scripts/lib/travis/lines-selector.coffee rename to assets/scripts/app/utils/lines-selector.coffee diff --git a/assets/scripts/lib/travis/location.coffee b/assets/scripts/app/utils/location.coffee similarity index 100% rename from assets/scripts/lib/travis/location.coffee rename to assets/scripts/app/utils/location.coffee diff --git a/assets/scripts/lib/travis/log-chunks.coffee b/assets/scripts/app/utils/log-chunks.coffee similarity index 100% rename from assets/scripts/lib/travis/log-chunks.coffee rename to assets/scripts/app/utils/log-chunks.coffee diff --git a/assets/scripts/lib/travis/log-folder.coffee b/assets/scripts/app/utils/log-folder.coffee similarity index 100% rename from assets/scripts/lib/travis/log-folder.coffee rename to assets/scripts/app/utils/log-folder.coffee diff --git a/assets/scripts/app/views/log.coffee b/assets/scripts/app/views/log.coffee index 00a127fa..6264d53e 100644 --- a/assets/scripts/app/views/log.coffee +++ b/assets/scripts/app/views/log.coffee @@ -1,6 +1,6 @@ require 'log' -require 'travis/lines-selector' -require 'travis/log-folder' +require 'utils/lines-selector' +require 'utils/log-folder' Log.DEBUG = false Log.LIMIT = 10000 diff --git a/assets/scripts/lib/travis/chunk-buffer.coffee b/assets/scripts/lib/travis/chunk-buffer.coffee deleted file mode 100644 index e49a90f0..00000000 --- a/assets/scripts/lib/travis/chunk-buffer.coffee +++ /dev/null @@ -1,96 +0,0 @@ -get = Ember.get - -Travis.ChunkBuffer = Em.ArrayProxy.extend - timeout: 5000 - checkTimeoutFrequency: 5000 - start: 1 - next: 1 - - init: -> - @_super.apply this, arguments - - @lastInsert = 0 - - @set('next', @get('start')) - - @checkTimeout() - - if @get('content.length') - @get('queue.content').pushObjects @get('content').toArray() - - arrangedContent: (-> - [] - ).property('content') - - addObject: (obj) -> - @get('content').pushObject(obj) - - removeObject: (obj) -> - @get('content').removeObject(obj) - - replaceContent: (idx, amt, objects) -> - @get('content').replace(idx, amt, objects) - - queue: (-> - Em.ArrayProxy.extend(Em.SortableMixin, { - content: [] - sortProperties: ['number'] - sortAscending: true - }).create() - ).property() - - contentArrayDidChange: (array, index, removedCount, addedCount) -> - @_super.apply this, arguments - - if addedCount - queue = @get('queue') - addedObjects = array.slice(index, index + addedCount) - console.log 'Added log parts with numbers:', addedObjects.map( (element) -> get(element, 'number') )+'', 'current', @get('next') - queue.pushObjects addedObjects - @check() - - check: -> - queue = @get('queue') - next = @get('next') - - arrangedContent = @get('arrangedContent') - toPush = [] - - while queue.get('firstObject.number') <= next - element = queue.shiftObject() - if get(element, 'number') == next - @finalize() if get(element, 'final') - toPush.pushObject get(element, 'content') - next += 1 - - if toPush.length - arrangedContent.pushObjects toPush - @inserted() - - @set('next', next) - - inserted: -> - now = @now() - @lastInsert = now - - finalize: -> - clearTimeout @get('runLaterId') - - checkTimeout: -> - now = @now() - if now - @lastInsert > @get('timeout') - @giveUpOnMissingParts() - @set 'runLaterId', setTimeout((=> @checkTimeout()), @get('checkTimeoutFrequency')) - - willDestroy: -> - @finalize() - @_super.apply this, arguments - - now: -> - (new Date()).getTime() - - giveUpOnMissingParts: -> - if number = @get('queue.firstObject.number') - console.log 'Giving up on missing parts in the buffer, switching to:', number - @set('next', number) - @check() diff --git a/assets/scripts/lib/travis/instrumentation.coffee b/assets/scripts/lib/travis/instrumentation.coffee deleted file mode 100644 index 1e9c9b17..00000000 --- a/assets/scripts/lib/travis/instrumentation.coffee +++ /dev/null @@ -1,8 +0,0 @@ -Travis.Instrumentation = { - subscribe: (event) -> - Em.subscribe event, - before:(name, timestamp, payload) -> - timestamp - after: (name, timestamp, payload, start_timestamp) -> - console.log(name, payload, timestamp - start_timestamp) -} diff --git a/assets/scripts/lib/travis/ordered-log.coffee b/assets/scripts/lib/travis/ordered-log.coffee deleted file mode 100644 index f2127204..00000000 --- a/assets/scripts/lib/travis/ordered-log.coffee +++ /dev/null @@ -1,153 +0,0 @@ -# TODO: revisit those patterns -FOLDS = [ - Em.Object.create(name: 'schema', startPattern: /^\$ (?:bundle exec )?rake( db:create)? db:schema:load/, endPattern: /^(<\/span>)?\$/) - Em.Object.create(name: 'migrate', startPattern: /^\$ (?:bundle exec )?rake( db:create)? db:migrate/, endPattern: /^(<\/span>)?\$/) - Em.Object.create(name: 'bundle', startPattern: /^\$ bundle install/, endPattern: /^(<\/span>)?\$/) -] - -@Travis.OrderedLog = Em.Object.extend - linesLimit: 5000 - init: -> - @set 'folds', [] - @set 'line', 1 - @set 'lineNumber', 1 - @initial = true - - for fold in FOLDS - @addFold fold - - append: (lines) -> - return unless lines - return if @get('lineNumber') > @get('linesLimit') - - log = @join lines - log = @escape log - log = @deansi log - lines = @split log - - target = @get 'target' - index = 0 - currentFold = @currentFold - - result = [] - - for line in lines - if line == '\r' - @set 'replace', true - else if line == '\n' - @set 'newline', true - index += 1 - else - if currentFold && ( @isFoldEnding(currentFold, line) ) - # end of the fold, send fold to target - if result.length > 0 - result.slice(-1)[0].foldEnd = true - target.appendLog result - - @currentFold = currentFold = null - @set 'foldContinuation', false - result = [] - - if !currentFold && ( currentFold = @foldByStart(line) ) - # beginning new fold, send current lines to target - if result.length > 0 - target.appendLog result - - result = [] - start = index - - payload = { content: line } - - if currentFold - payload.fold = currentFold.get('name') - - if @get 'foldContinuation' - payload.foldContinuation = true - - payload.number = @get('lineNumber') + index - - if @get 'replace' - @set 'replace', false - payload.replace = true - else if @get 'newline' - @set 'newline', false - else if !@initial - payload.append = true - - @initial = false - - if payload.foldContinuation && payload.content.match(/Done. Build script exited|Your build has been stopped/) - # script ended, but fold is still closed, which most probably means - # error, end the fold and open it. - # TODO: we need log marks to make it easier - payload.foldContinuation = null - payload.openFold = payload.fold - payload.fold = null - - result.pushObject payload - - if currentFold - @set 'foldContinuation', true - - if @get('lineNumber') + index >= @get('linesLimit') - result.pushObject logWasCut: true - break - - if result.length > 0 - if currentFold - @currentFold = currentFold - - target.appendLog result - - nextLineNumber = @get('lineNumber') + index - @set 'lineNumber', nextLineNumber - - join: (lines) -> - if typeof lines == 'string' - lines - else - lines.toArray().join '' - - split: (log) -> - log = log.replace /\r\n/g, '\n' - lines = log.split(/(\n)/) - - if lines.slice(-1)[0] == '' - lines.popObject() - - result = [] - for line in lines - result.pushObjects line.split(/(\r)/) - - result - - escape: (log) -> - Handlebars.Utils.escapeExpression log - - deansi: (log) -> - log = log.replace(/\r\r/g, '\r') - .replace(/\033\[K\r/g, '\r') - .replace(/\[2K/g, '') - .replace(/\033\(B/g, '') - .replace(/\033\[\d+G/g, '') - - ansi = ansiparse(log) - - text = '' - ansi.forEach (part) -> - classes = [] - part.foreground and classes.push(part.foreground) - part.background and classes.push('bg-' + part.background) - part.bold and classes.push('bold') - part.italic and classes.push('italic') - text += (if classes.length then ('' + part.text + '') else part.text) - text.replace /\033/g, '' - - addFold: (fold) -> - @get('folds').pushObject fold - - foldByStart: (line) -> - @get('folds').find (fold) -> line.match(fold.get('startPattern')) - - isFoldEnding: (fold, line) -> - line.match(fold.get('endPattern'))