github-auto-locker 1.0.0 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc9273f3326183b6f148ea285e832a062f41ecbf
4
- data.tar.gz: 8bd1bc2c80f9974e6e693283dc275d6d071cfb52
3
+ metadata.gz: 7fe1aeda931f62b891753dde4f0af886d27f4e54
4
+ data.tar.gz: f148beb5e8b6d9302f9af470a3d384ef7848131a
5
5
  SHA512:
6
- metadata.gz: abea29689d9933d08b0df9ffcbe5ed03a4d973bb951143530ebd36ac828bc7b4d5cd0104ce2cf921127f6ddc03b0b292ac062860702fc92cc007bd55a64bded9
7
- data.tar.gz: 7cee629c8db329bf402bf34e9e6bed026bdaaca098b3561a3bfabc7b29e5dc1157dea0cbc5588de495491ad4d4173b9dbb8dce5181b49fe6684ee25f325777bb
6
+ metadata.gz: 13c5f9f5cfd2798c8e187bcacf0ee35c9bdc6eaec28887ec3ff82cdff15144327a7ec30eedc82c48ccca8ff1bd315fa6b9feb0a1c4c333c6362089ae6d057ada
7
+ data.tar.gz: 4ac3e2e746c511e72cc0b73df2f88178913c7d04d5133f7462ae8f113f26da242ce70c88a06407fd3fd05085504bdfb655b75b1c39bc09f7fd8fa3c18164cbde
data/README.md CHANGED
@@ -8,12 +8,21 @@ By default it locks closed issues that are over 120 days old.
8
8
 
9
9
  This requires Ruby.
10
10
 
11
+ From source:
12
+
11
13
  * Clone or download repo
12
- * Run `./bin/github-auto-locker USER REPO TOKEN [age in days]`
14
+ * Run `./bin/github-auto-locker USER REPO TOKEN [age in days] [-n]`
15
+
16
+ As a gem:
17
+
18
+ * Run `gem install github-auto-locker`
19
+ * Run `github-auto-locker USER REPO TOKEN [age in days]`[-n]
13
20
 
14
21
  The age is optional.
15
22
 
16
- `TOKEN` is a personal access token from [here](https://github.com/settings/tokens). It will require the 'repo' scope.
23
+ `TOKEN` is a personal access token from [here](https://github.com/settings/tokens). It will require the 'repo' scope. Alternatively, credentials will be loaded from `~/.config/hub` if it exists.
24
+
25
+ `-n` can be used to perform a dry run and show which issues *would* be locked, but does not make any changes.
17
26
 
18
27
  ### License
19
28
 
@@ -1,6 +1,19 @@
1
1
  #!/usr/bin/env ruby
2
2
  require_relative '../lib/locker'
3
3
 
4
- abort "Usage: auto-lock [user] [repo] [token] [days]" unless ARGV[2]
4
+ noop = ARGV.delete "-n"
5
+ user, repo, token, days = ARGV
5
6
 
6
- Locker.new(ARGV[0], ARGV[1], ARGV[2], ARGV[3] || 120).lock
7
+ unless token then
8
+ hub_config = File.expand_path "~/.config/hub"
9
+
10
+ if File.file? hub_config then
11
+ require "yaml"
12
+ config = YAML.load File.read hub_config
13
+ token = config.dig("github.com", 0, "oauth_token")
14
+ end
15
+ end
16
+
17
+ abort "Usage: auto-lock [user] [repo] [token] [days]" unless user && repo && token
18
+
19
+ Locker.new(user, repo, token, days || 120, noop).lock
@@ -5,15 +5,17 @@ require 'base64'
5
5
 
6
6
  # Automatically locks old issues that have been closed already
7
7
  class Locker
8
- def initialize user, repo, token, old_days = 120
8
+ def initialize user, repo, token, old_days = 120, noop = false
9
9
  @user = user
10
10
  @repo = repo
11
11
  @token = token
12
12
  @old_days = old_days
13
+ @noop = noop
13
14
  end
14
15
 
15
16
  # Locks old closed issues
16
17
  def lock
18
+ notify "Not locking anything due to -n flag" if @noop
17
19
  notify "Getting closed issues..."
18
20
  issues = get_closed_issues
19
21
 
@@ -22,6 +24,19 @@ class Locker
22
24
  else
23
25
  notify "Received #{issues.length} issues"
24
26
  notify "Locking old closed issues..."
27
+
28
+ if @noop then
29
+ total = issues.size
30
+
31
+ issues.each_with_index do |issue, i|
32
+ number = issue['number']
33
+ locking number, i, total
34
+ puts issue['title']
35
+ end
36
+
37
+ return
38
+ end
39
+
25
40
  lock_old_closed_issues issues
26
41
  end
27
42
  end
@@ -38,6 +53,11 @@ class Locker
38
53
 
39
54
  resp = http.get(path)
40
55
  new_issues = JSON.parse(resp.body)
56
+
57
+ unless Array === new_issues then
58
+ abort "bad response: %p" % new_issues
59
+ end
60
+
41
61
  issues += new_issues
42
62
 
43
63
  # Pagination
@@ -71,7 +91,7 @@ class Locker
71
91
  number = issue['number']
72
92
  locking number, i, total
73
93
 
74
- path = issue["url"][22..-1] # pull path from full URL
94
+ _, _, _, _, _, path, * = URI.split issue["url"]
75
95
  response = http.put("#{path}/lock", '', headers)
76
96
 
77
97
  if response.code == "204" # 204 means it worked, apparently
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github-auto-locker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Collins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-13 00:00:00.000000000 Z
11
+ date: 2017-05-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: "Automatically locks GitHub issues older than a specified number of days.\nThis
14
14
  forces people to open new issues instead of attaching themselves to old (typically