repotube 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/exe/repotube +19 -12
  3. data/lib/repotube.rb +31 -7
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f85f05d82a54961d23fef432c76187dd2a3ce6c705201897b459de97ac00f03a
4
- data.tar.gz: 0bdb04a417cc8b546d80b9fe26fa7f73d2d68c76703646686354cbd4b9f7dd94
3
+ metadata.gz: dfe47d60ab1d4645acfa7dcb74ce52b516ff2b54285d7df19c6c287d26057bd7
4
+ data.tar.gz: ff9dced1eedc5dac81c6260b045e4032e2c11e368abac27486f13279ddb84deb
5
5
  SHA512:
6
- metadata.gz: d464bc9d304b7540ac13a90c66ee13e50b1b8263f25d22902b5c14a1b4f55d29bc1ad58769b1fffba8c27c8ea196fa3bfdf72119307307ee862d069725760c28
7
- data.tar.gz: 86551e8194965119fca08ef39ec7463c41e0e5c74042a59adea6548d43d99c0a90b65626becd68797801ba6e21cccf8f46698c5b9a772a6ddafd4bdfbdc20a7f
6
+ metadata.gz: 6cf569736f58df4bdaf919db36843a1e27dac2d54a0dcc27ebcb87eddc4fc4c8b9eb2f4dfb795facfd46a4e3607147567a2bbf39f8b2b8937274f06d38ccdad2
7
+ data.tar.gz: 6dd779e90ca2d1f05f888e6ebf072f8bfa95774ce3a5055ba2c98c05d7057ed248ad5a3e761e5a79bd39417337df78234f707af2a12741e5d92a330849a0d6e8
data/exe/repotube CHANGED
@@ -10,21 +10,28 @@ Mercenary.program(:repotube) do |p|
10
10
  p.version RepoTube::VERSION
11
11
  p.description "YouTube time-marked URLs from Git commit timestamps"
12
12
  p.syntax "repotube [options] <youtube short URL>"
13
- p.option "start", "-s SECONDS", 'Set the timestamp for the first commit; defaults to 0'
14
- p.option "offset", "-o SECONDS", "Set the offset, from the start of the video, for the first commit;\n defaults to 0"
15
- p.option "first", "-f HASH", "Set the hash of the first commit in the video"
16
- p.option "last", "-l HASH", "Set the hash of the last commit in the video"
13
+ p.option "start", "-s SECONDS", "--start SECONDS", 'Set the timestamp for the first commit; defaults to 0'
14
+ p.option "offset", "-o SECONDS", "--offset SECONDS", "Set the offset, from the start of the video, for the first commit;\n defaults to 0"
15
+ p.option "first", "-f HASH", "--first HASH", "Set the hash of the first commit in the video"
16
+ p.option "last", "-l HASH", "--last HASH", "Set the hash of the last commit in the video"
17
+ p.option "remote", "-r USERNAME/REPO", "--remote USERNAME/REPO", "Set the remote repo path on GitHub; auto-detected if repo has a remote"
18
+ p.option "readme", "-d FILENAME", "--readme FILENAME", "Set the README file name; defaults to README.md"
19
+ p.option "noreadme", "-n", "--no-readme", "Disable generating the README.md file"
17
20
 
18
21
  p.action do |args, options|
19
- thing = RepoTube::Program.new(args,options)
20
- if thing.is_repo?
21
- puts "At least we're in a Git repo"
22
- thing.process_commits
23
- puts thing.commits
24
- thing.output_index
25
- else
26
- puts "Not a Git repo!"
22
+ if args.empty?
23
+ puts "A YouTube URL is required"
27
24
  abort
25
+ else
26
+ rt = RepoTube::Program.new(args,options)
27
+ if rt.is_repo?
28
+ rt.process_commits
29
+ rt.output_index
30
+ rt.output_readme
31
+ else
32
+ puts "Not a Git repo!"
33
+ abort
34
+ end
28
35
  end
29
36
  end
30
37
 
data/lib/repotube.rb CHANGED
@@ -3,10 +3,9 @@
3
3
  require 'pathname'
4
4
 
5
5
  module RepoTube
6
- VERSION = "0.1.0"
6
+ VERSION = "0.2.0"
7
7
 
8
8
  class Program
9
- #COMMITS = `git log #{RANGE} --date=unix --format=tformat:"%at|%h|%s" --reverse`
10
9
 
11
10
  attr_reader :git_path, :url, :start, :offset, :first, :last, :commits
12
11
 
@@ -18,7 +17,9 @@ module RepoTube
18
17
  @offset = set_value(options['offset'].to_i, 0)
19
18
  @first = set_value(options['first'], "")
20
19
  @last = set_value(options['last'], "HEAD")
21
-
20
+ @remote = set_value(options['remote'], discover_remote)
21
+ @readme = set_value(options['readme'],"README.md")
22
+ @noreadme = options['noreadme']
22
23
  @commits = log_commits
23
24
 
24
25
  end
@@ -28,20 +29,23 @@ module RepoTube
28
29
  end
29
30
 
30
31
  def log_commits
31
- # TODO: include the range
32
32
  if !@first.empty?
33
33
  range = "#{@first}~1..#{@last}"
34
34
  else
35
35
  range = ""
36
36
  end
37
37
  if is_repo?
38
- `git log #{range} --date=unix --format=tformat:"%at|%h|%s" --reverse`
38
+ `git log #{range} --date=unix --format=tformat:"%at|%H|%s" --reverse`
39
39
  else
40
40
  puts "Oops. repotube must be run in a Git repository"
41
41
  abort
42
42
  end
43
43
  end
44
44
 
45
+ def discover_remote
46
+ `git remote -v`.split("\n")[0].match(/:(.+).git+/)[1]
47
+ end
48
+
45
49
  def set_value(custom,default)
46
50
  if custom.to_s.empty?
47
51
  custom = default
@@ -74,10 +78,30 @@ module RepoTube
74
78
  end
75
79
 
76
80
  def output_index
77
- puts "Video Index by Commit:"
81
+ puts "\nYouTube-Friendly Index by Commit"
82
+ puts "(cut and paste into the YouTube description box):\n\n"
83
+ @commits.each do |commit|
84
+ puts "#{Time.at(commit[:offset]).utc.strftime("%H:%M:%S")} #{commit[:cs]}"
85
+ end
86
+ puts "\n"
87
+ end
88
+
89
+ def output_markdown
90
+ markdown = "## [YouTube Video](#{@url}) Indexes by Commit\n"
78
91
  @commits.each do |commit|
79
- puts "#{commit[:cs]}: https://youtu.be/V-rIj30x_LM?t=#{commit[:offset]}"
92
+ markdown += "* [#{commit[:cs]}](https://github.com/#{@remote}/commit/#{commit[:ch]}) [[Video](#{@url}?t=#{commit[:offset]})]\n"
93
+ end
94
+ markdown
95
+ end
96
+
97
+ def output_readme
98
+ # NB: Append mode will create a file if it doesn't exist
99
+ if @noreadme.nil?
100
+ File.open(@readme,'a') do |file|
101
+ file.write(output_markdown)
102
+ end
80
103
  end
104
+
81
105
  end
82
106
 
83
107
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: repotube
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karl Stolley
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-01 00:00:00.000000000 Z
11
+ date: 2020-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mercenary