Skip to content

Commit

Permalink
Merge pull request #196 from matheussbernardo/backup_diff
Browse files Browse the repository at this point in the history
Backup Diff: Adding show-diff command (WIP)
  • Loading branch information
Ana06 committed Aug 20, 2018
2 parents 0d0c756 + 9bf2def commit 76f8eaf
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 9 deletions.
38 changes: 33 additions & 5 deletions lib/backup.rb
Expand Up @@ -10,11 +10,11 @@ def initialize(settings)
end

def backup(board_id)
backup_path = File.join(@directory, board_id)
backup_path = File.join(@directory, board_id, Time.now.to_i.to_s)

FileUtils.mkdir_p(backup_path)

trello = TrelloWrapper.new(@settings)

data = trello.backup(board_id)

File.open(File.join(backup_path, 'board.json'), 'w') do |f|
Expand All @@ -23,13 +23,41 @@ def backup(board_id)
end

def list
Dir.entries(@directory).reject { |d| d =~ /^\./ }
backups = {}
Dir.foreach(@directory) do |sub_dir|
unless sub_dir =~ /^\./
sub_dir_path = File.join(@directory, sub_dir)
backups[sub_dir] = Dir.entries(sub_dir_path).reject { |d| d =~ /^\./ }
end
end

backups
end

def show_diff(board_id, version, optional_version)
if optional_version.nil?
trello = TrelloWrapper.new(@settings)
board_online = trello.retrieve_board_data(board_id)

backup_path = File.join(@directory, board_id, version, 'board.json')
board_backup = JSON.parse(File.read(backup_path))

JsonDiff.diff(board_backup, board_online)
else
backup_path = File.join(@directory, board_id, version, 'board.json')
board_backup = JSON.parse(File.read(backup_path))

second_backup_path = File.join(@directory, board_id, optional_version, 'board.json')
board_second_backup = JSON.parse(File.read(second_backup_path))

JsonDiff.diff(board_backup, board_second_backup)
end
end

def show(board_id, options = {})
def show(board_id, version, options = {})
out = options[:output] || STDOUT

backup_path = File.join(@directory, board_id)
backup_path = File.join(@directory, board_id, version)

board = JSON.parse(File.read(File.join(backup_path, 'board.json')))

Expand Down
14 changes: 13 additions & 1 deletion lib/cli/backup.rb
Expand Up @@ -20,8 +20,20 @@ def list

desc 'show', 'Show backup of board'
option 'board-id', desc: 'Id of Trello board', required: true
option 'board-version', desc: 'Version of Trello board', required: true
option 'show-descriptions', desc: 'Show descriptions of cards', required: false, type: :boolean
def show
Backup.new(CliSettings.settings).show(CliSettings.board_id(options['board-id']), options)
Backup.new(CliSettings.settings).show(CliSettings.board_id(options['board-id']), options['board-version'], options)
end

desc 'show-diff', 'Show diff backup of board from online'
option 'board-id', desc: 'Id of Trello board', required: true
option 'board-version', desc: 'Version of Trello board', required: true
option 'second-board-version', desc: 'Second Local Version of Trello board'
def show_diff
backup = Backup.new(CliSettings.settings)
output_diff = backup.show_diff(CliSettings.board_id(options['board-id']), options['board-version'], options['second-board-version'])

pp output_diff
end
end
2 changes: 2 additions & 0 deletions lib/trollolo.rb
Expand Up @@ -17,8 +17,10 @@

require 'thor'
require 'json'
require 'json-diff'
require 'yaml'
require 'erb'
require 'pp'

require_relative 'array'
require_relative 'version'
Expand Down
10 changes: 7 additions & 3 deletions spec/unit/backup_spec.rb
Expand Up @@ -19,21 +19,25 @@
end

it 'backups board' do
version = Time.now.to_i.to_s
@backup.backup('53186e8391ef8671265eba9d')
backup_file = File.join(@directory, '53186e8391ef8671265eba9d', 'board.json')
backup_file = File.join(@directory, '53186e8391ef8671265eba9d', version, 'board.json')
expect(File.exist?(backup_file)).to be true
expect(File.read(backup_file)).to eq load_test_file('full-board.json').chomp
end

it 'lists backups' do
version = Time.now.to_i.to_s
@backup.backup('53186e8391ef8671265eba9d')
expect(@backup.list).to eq ['53186e8391ef8671265eba9d']
expected_output = { '53186e8391ef8671265eba9d' => [version] }
expect(@backup.list).to eq expected_output
end

it 'shows backup' do
output_capturer = StringIO.new
version = Time.now.to_i.to_s
@backup.backup('53186e8391ef8671265eba9d')
@backup.show('53186e8391ef8671265eba9d', output: output_capturer )
@backup.show('53186e8391ef8671265eba9d', version, output: output_capturer )
expect(output_capturer.string).to eq(<<EOT
Trollolo Testing Board
Sprint Backlog
Expand Down
1 change: 1 addition & 0 deletions trollolo.gemspec
Expand Up @@ -19,6 +19,7 @@ Gem::Specification.new do |s|
s.add_dependency 'thor', '~> 0.19'
s.add_dependency 'ruby-trello', '~> 2.0'
s.add_dependency 'activemodel', '~> 5.1.5'
s.add_dependency 'json-diff', '~> 0.4.1'

s.files = `git ls-files`.split("\n")
s.executables = `git ls-files`.split("\n").map{|f| f =~ %r{^bin/(.*)} ? Regexp.last_match(1) : nil}.compact
Expand Down

0 comments on commit 76f8eaf

Please sign in to comment.