gistribute 0.1 → 0.2
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 +7 -0
- data/LICENSE +1 -1
- data/README.md +6 -4
- data/VERSION +1 -1
- data/bin/gistribute +22 -22
- data/gistribute.gemspec +5 -3
- data/spec/gistribute_spec.rb +33 -0
- metadata +40 -32
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 943e1cbafa8fcd6769fdf9e11c4770a7589335247b4232fa4f37c7720cfb3769
|
4
|
+
data.tar.gz: 1d4fe35b75840e4d8f9a2510616790fdafe9e7b216422514736f9d82943f7dc4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 84563d81f9d47098a8a6a48b64c20a606f0831a34cf2d9fc3b150c0dd6e25cc9728103e0e3e7648a5e154f81c1ddc7ac2a7670d8d753689693f9d6f4b966dc52
|
7
|
+
data.tar.gz: ad01c45e1e7adcd4650ac23fcf0ed6c3f72112837639874350a3a22e1bc655e1369e26341d11b5d9a388d89e2e5f525697474235a7f503e16d08f63879be70ca
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -11,7 +11,9 @@ a tweak to one of the files that you're sharing.
|
|
11
11
|
|
12
12
|
## Installation
|
13
13
|
|
14
|
-
|
14
|
+
```sh
|
15
|
+
gem install gistribute
|
16
|
+
```
|
15
17
|
|
16
18
|
## How It Works
|
17
19
|
|
@@ -38,7 +40,7 @@ If the resulting Gist link was, for example, https://gist.github.com/123456,
|
|
38
40
|
the user would be able to run either of these commands to download the file
|
39
41
|
to `~/.vimrc`:
|
40
42
|
|
41
|
-
```
|
42
|
-
|
43
|
-
|
43
|
+
```sh
|
44
|
+
gistribute 123456
|
45
|
+
gistribute https://gist.github.com/123456
|
44
46
|
```
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2
|
data/bin/gistribute
CHANGED
@@ -1,27 +1,28 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require "colorize"
|
4
|
+
require "fileutils"
|
5
|
+
require "json"
|
6
|
+
require "open-uri"
|
7
|
+
|
8
|
+
# Print to STDOUT to clear line
|
9
|
+
CLEAR = "\r\e[K"
|
10
|
+
|
3
11
|
if %w[-v --version].include? ARGV.first
|
4
12
|
puts "Gistribute #{File.read(File.expand_path("../../VERSION", __FILE__)).strip}"
|
5
13
|
exit 0
|
6
14
|
end
|
7
15
|
|
8
|
-
require "json"
|
9
|
-
require "fileutils"
|
10
|
-
require "open-uri"
|
11
|
-
require "nutella"
|
12
|
-
|
13
16
|
print "Downloading data..."
|
14
17
|
|
15
18
|
# The user can pass in either just the ID or the entire URL to the Gist.
|
16
19
|
id = ARGV.first[/(^|\/)([[:xdigit:]]+)/, 2]
|
17
20
|
|
18
21
|
begin
|
19
|
-
gist = JSON.parse
|
22
|
+
gist = JSON.parse(URI.open("https://api.github.com/gists/#{id}").read)
|
20
23
|
rescue OpenURI::HTTPError => msg
|
21
|
-
print
|
22
|
-
|
23
|
-
|
24
|
-
There was an error downloading the requested Gist.
|
24
|
+
print <<~EOS.red
|
25
|
+
#{CLEAR}There was an error downloading the requested Gist.
|
25
26
|
The error is as follows:
|
26
27
|
EOS
|
27
28
|
puts msg
|
@@ -39,8 +40,8 @@ end
|
|
39
40
|
# "html_url" => "Link to the Gist",
|
40
41
|
# "description" => "The description for the Gist",
|
41
42
|
#
|
42
|
-
# "
|
43
|
-
# "
|
43
|
+
# "owner" => nil, # IF ANONYMOUS
|
44
|
+
# "owner" => { # IF TIED TO A USER
|
44
45
|
# "login" => "username"
|
45
46
|
# },
|
46
47
|
#
|
@@ -58,14 +59,13 @@ end
|
|
58
59
|
desc = gist["description"].gsub(/(.{1,79})(\s+|\Z)/, "\\1\n").strip
|
59
60
|
desc = "\n#{desc}\n" unless desc.empty?
|
60
61
|
|
61
|
-
puts
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
}
|
67
|
-
|
68
|
-
Beginning install...
|
62
|
+
puts <<~EOS
|
63
|
+
#{CLEAR}Finished downloading Gist from: #{gist["html_url"]}
|
64
|
+
Gist uploaded by #{
|
65
|
+
gist["owner"] ? "user #{gist["owner"]["login"]}" : "an anonymous user"
|
66
|
+
}.
|
67
|
+
#{desc}
|
68
|
+
Beginning install...
|
69
69
|
EOS
|
70
70
|
|
71
71
|
gist["files"].each do |filename, data|
|
@@ -73,7 +73,7 @@ gist["files"].each do |filename, data|
|
|
73
73
|
|
74
74
|
# | as path separator in the Gist's file name, as Gist doesn't allow the
|
75
75
|
# usage of /.
|
76
|
-
path = metadata.last.gsub
|
76
|
+
path = metadata.last.gsub(/[~|]/, "|" => "/", "~" => Dir.home)
|
77
77
|
# Default description is the name of the file.
|
78
78
|
description = metadata.size == 1 ? File.basename(path) : metadata.first
|
79
79
|
|
@@ -82,5 +82,5 @@ gist["files"].each do |filename, data|
|
|
82
82
|
# Handle directories that don't exist.
|
83
83
|
FileUtils.mkdir_p File.dirname(path)
|
84
84
|
|
85
|
-
File.write
|
85
|
+
File.write(path, data["content"])
|
86
86
|
end
|
data/gistribute.gemspec
CHANGED
@@ -14,10 +14,12 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.bindir = "bin"
|
15
15
|
gem.executables = %w[gistribute]
|
16
16
|
|
17
|
-
gem.
|
17
|
+
gem.test_files = Dir["spec/**/*"]
|
18
|
+
gem.files = Dir["bin/**/*"] + gem.test_files + %w[
|
18
19
|
LICENSE Rakefile README.md VERSION gistribute.gemspec
|
19
20
|
]
|
20
21
|
|
21
|
-
gem.add_dependency "
|
22
|
-
gem.
|
22
|
+
gem.add_dependency "colorize", "~> 1.0"
|
23
|
+
gem.add_development_dependency "fuubar", "~> 2.0"
|
24
|
+
gem.add_development_dependency "rspec", "~> 3.12"
|
23
25
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
|
3
|
+
TEMP = "/tmp/gistribute_spec"
|
4
|
+
|
5
|
+
describe "gistribute" do
|
6
|
+
# Make sure we start and end with a clean `/tmp`
|
7
|
+
before { FileUtils.rm_rf TEMP }
|
8
|
+
after { FileUtils.rm_rf TEMP }
|
9
|
+
|
10
|
+
BAD_LINK = "bad_link"
|
11
|
+
let(:output_404) { `gistribute #{BAD_LINK}` }
|
12
|
+
|
13
|
+
let(:output) { `gistribute https://gist.github.com/4346763` }
|
14
|
+
let(:output_only_id) { `gistribute 4346763` }
|
15
|
+
|
16
|
+
let :version do
|
17
|
+
File.read(File.expand_path("../../VERSION", __FILE__)).strip
|
18
|
+
end
|
19
|
+
|
20
|
+
%w[--version -v].each do |flag|
|
21
|
+
context "with the #{flag} flag" do
|
22
|
+
it "outputs the version" do
|
23
|
+
expect(`gistribute #{flag}`).to eq "Gistribute #{version}\n"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context "with a single file Gist" do
|
29
|
+
it "allows both the full URL and the Gist ID" do
|
30
|
+
expect(output).to eq output_only_id
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,48 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gistribute
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
5
|
-
prerelease:
|
4
|
+
version: '0.2'
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Vinny Diehl
|
9
|
-
autorequire:
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2023-07-18 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
14
|
+
name: colorize
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '1.
|
19
|
+
version: '1.0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '1.
|
26
|
+
version: '1.0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
28
|
+
name: fuubar
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: '0
|
38
|
-
type: :
|
33
|
+
version: '2.0'
|
34
|
+
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: '0
|
40
|
+
version: '2.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.12'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.12'
|
46
55
|
description: Distribute files simply using GitHub Gist.
|
47
56
|
email: vinny.diehl@gmail.com
|
48
57
|
executables:
|
@@ -50,36 +59,35 @@ executables:
|
|
50
59
|
extensions: []
|
51
60
|
extra_rdoc_files: []
|
52
61
|
files:
|
53
|
-
- bin/gistribute
|
54
62
|
- LICENSE
|
55
|
-
- Rakefile
|
56
63
|
- README.md
|
64
|
+
- Rakefile
|
57
65
|
- VERSION
|
66
|
+
- bin/gistribute
|
58
67
|
- gistribute.gemspec
|
68
|
+
- spec/gistribute_spec.rb
|
59
69
|
homepage: https://github.com/gbchaosmaster/gistribute
|
60
70
|
licenses:
|
61
71
|
- MIT
|
62
|
-
|
72
|
+
metadata: {}
|
73
|
+
post_install_message:
|
63
74
|
rdoc_options: []
|
64
75
|
require_paths:
|
65
76
|
- lib
|
66
77
|
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
78
|
requirements:
|
69
|
-
- -
|
79
|
+
- - ">="
|
70
80
|
- !ruby/object:Gem::Version
|
71
81
|
version: '0'
|
72
82
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
83
|
requirements:
|
75
|
-
- -
|
84
|
+
- - ">="
|
76
85
|
- !ruby/object:Gem::Version
|
77
86
|
version: '0'
|
78
87
|
requirements: []
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
specification_version: 3
|
88
|
+
rubygems_version: 3.4.17
|
89
|
+
signing_key:
|
90
|
+
specification_version: 4
|
83
91
|
summary: GitHub Gist based file distribution.
|
84
|
-
test_files:
|
85
|
-
|
92
|
+
test_files:
|
93
|
+
- spec/gistribute_spec.rb
|