Skip to content

Commit

Permalink
togglateコマンドからローカル文書とリモート文書のdiffを取れるようにコマンドを追加
Browse files Browse the repository at this point in the history
とりあえず版なのでコマンドの名前、オプションの名前暫定
マジックナンバーとかも多め
エラーハンドリングなし
  • Loading branch information
gosyujin committed Apr 27, 2014
1 parent 5aa8a20 commit 8d66b93
Showing 1 changed file with 64 additions and 0 deletions.
64 changes: 64 additions & 0 deletions lib/togglate/cli.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,70 @@ def commentout(file)
exit
end

desc "diff FILE", "Extract commented contents from a FILE"
option :difference, aliases:'-d', desc:"Difference path local-original"
option :revision, aliases:'-r', default:'master', desc:"Base revision DEFAULT: master"
option :remains, aliases:'-r', default:false, type: :boolean, desc:"Output remaining text after extraction of comments"
option :tag, aliases:'-t', default:'original', desc:"Specify comment tag name"
def diff(file)
local_doc = "#{file}_togglate_local"
original_doc = "#{file}_togglate_original"
system("touch #{local_doc}")
system("touch #{original_doc}")

# get local doc of commentout
$stdout = File.open("#{local_doc}", 'w')
commentout(file)
$stdout.close
$stdout = STDOUT
puts "Local doc: #{file}"

# get remote doc
raw_url = 'https://raw.githubusercontent.com'
user = ''
repository = ''

remote = `git remote -v`
remote = remote.split("\n")
remote.each do |r|
if r =~ /^togglate\t(.*) \(fetch\)/
togglate_url = $1.split("/")
user = togglate_url[-2]
repository = togglate_url[-1].delete!(".git")
end
end

revision = options['revision']
difference = options['difference']
if difference.nil?
original_doc_url = "#{raw_url}/#{user}/#{repository}/#{revision}/#{file}"
else
original_doc_url = "#{raw_url}/#{user}/#{repository}/#{revision}/#{difference}/#{file}"
end
puts "Original doc url: #{original_doc_url}"
puts " GitHub user: #{user}"
puts " GitHub repository: #{repository}"
puts " Revision: #{revision}"

system("curl -s #{original_doc_url} > #{original_doc}")

# diff
system("diff -u #{local_doc} #{original_doc}")
case $?
when 0
puts 'Diff result: OK'
exit 0
else
puts 'Diff result: NG'
exit 1
end
system("rm #{local_doc}")
system("rm #{original_doc}")
ensure
system("rm #{local_doc}")
system("rm #{original_doc}")
end

desc "version", "Show Togglate version"
def version
puts "Togglate #{Togglate::VERSION} (c) 2014 kyoendo"
Expand Down

0 comments on commit 8d66b93

Please sign in to comment.