gistdoit 0.0.1
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/.gitignore +5 -0
- data/README.md +51 -0
- data/Rakefile +7 -0
- data/bin/gistdoit +7 -0
- data/content.rb +1 -0
- data/gistdoit.gemspec +18 -0
- data/lib/gistdoit.rb +6 -0
- data/lib/gistdoit/cli.rb +68 -0
- data/lib/gistdoit/gist.rb +45 -0
- data/lib/gistdoit/github/client.rb +35 -0
- data/lib/gistdoit/github/user_config.rb +33 -0
- data/lib/gistdoit/net_http_adapter.rb +28 -0
- data/lib/gistdoit/version.rb +3 -0
- data/test/cli_test.rb +0 -0
- data/test/client_test.rb +68 -0
- data/test/command_line_test.rb +4 -0
- data/test/fixtures/create_gist_response +80 -0
- data/test/gist_test.rb +54 -0
- data/test/test_helper.rb +1 -0
- data/test/user_config_test.rb +39 -0
- metadata +70 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ece0f942669210dc40e8fbaf2db709335256de73
|
4
|
+
data.tar.gz: f9a48589427c881d5ae161baf4053c44ef253c2e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4af73a7269ac649058686d9b24991e9c5f86abf41eaabe2ba0fdc8c7349cb4f8710876d0863a70d651f5d2239610c68d605cb67ff9c071c61ad8a681bd8b5187
|
7
|
+
data.tar.gz: 483a301c478082c87e50b2ab32bd0fbf125d50b126655a05e2da2bd0c0ec8137daab4b0c3e8072ae221494b655c5f8a5609080ae798a3dfe9b6c908d79c20806
|
data/.gitignore
ADDED
data/README.md
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
This simple Ruby utility takes a file on your local machine and turns it into a gist on Github.
|
2
|
+
|
3
|
+
I could have used gems to simplify the development process, but I'm not sure how much code that would have actually saved me writing, and it would have undoubtedly added a layer of complexity in terms of understanding the codebase, so I decided to use only libraries which are built in to Ruby itself.
|
4
|
+
|
5
|
+
### Getting started
|
6
|
+
|
7
|
+
`gem install gistdoit`
|
8
|
+
|
9
|
+
### Usage
|
10
|
+
|
11
|
+
To create a new gist, you simply type `gistdoit` along with the relative file path for the file you want to make a gist out of
|
12
|
+
|
13
|
+
```
|
14
|
+
// PWD is /Users/AwesomeUser/Dev/Projects
|
15
|
+
|
16
|
+
gistdoit cool_project_file.rb
|
17
|
+
```
|
18
|
+
|
19
|
+
If you want to edit a file that is currently on Github, then you can pass the `patch` flag
|
20
|
+
|
21
|
+
```
|
22
|
+
// PWD is /Users/AwesomeUser/Dev/Projects
|
23
|
+
|
24
|
+
gistdoit patch cool_project_file.rb
|
25
|
+
```
|
26
|
+
|
27
|
+
If you like to update your gists remotely on Github, then we recommend that you first make sure that your local gist is up to date with the remote version
|
28
|
+
|
29
|
+
```
|
30
|
+
// PWD is /Users/AwesomeUser/Dev/Projects
|
31
|
+
|
32
|
+
gistdoit pull cool_project_file.rb
|
33
|
+
|
34
|
+
// Gistdoit needs permission to update the file
|
35
|
+
Password: ********
|
36
|
+
|
37
|
+
The file was successfully updated!
|
38
|
+
```
|
39
|
+
|
40
|
+
At the moment, Gistdoit only recognizes files which were added to gist.github via Gistdoit.
|
41
|
+
|
42
|
+
### Internals
|
43
|
+
|
44
|
+
Gistdoit keeps a record of the full file paths for gists you've uploaded to Github via Gistdoit along with the slug for that file, and a SHA of the file itself. This allows Gistdoit to quickly check for changes in the file without having to parse it.
|
45
|
+
|
46
|
+
### Things I would like to add in the future
|
47
|
+
|
48
|
+
- Allowing the user to select whether they would like a gist to be either secret or public.
|
49
|
+
- Listing all gists which the option of limited to a certain number of most recent.
|
50
|
+
- Editing a particular gist after selecting it by name.
|
51
|
+
- Show the diff of what was changed when files are updated
|
data/Rakefile
ADDED
data/bin/gistdoit
ADDED
data/content.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
puts 'hello'
|
data/gistdoit.gemspec
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
$:.unshift(File.expand_path("../lib", __FILE__))
|
2
|
+
require 'gistdoit/version'
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "gistdoit"
|
6
|
+
s.version = "0.0.0"
|
7
|
+
s.date = "2015-08-28"
|
8
|
+
s.summary = "File to Gist converter"
|
9
|
+
s.description = "An easy way to convert your files to Gists all within the terminal"
|
10
|
+
s.authors = ["Liam Brady"]
|
11
|
+
s.email = "liamseanbrady+gems@gmail.com"
|
12
|
+
s.executables = %w[gistdoit]
|
13
|
+
s.files = `git ls-files`.split("\n").reject { |file_name| file_name == 'sketch.md' }
|
14
|
+
s.test_files = `git ls-files -- test/*`.split("\n")
|
15
|
+
s.require_paths = %w[lib]
|
16
|
+
s.version = GistDoIt::VERSION
|
17
|
+
s.homepage = "http://github.com/liamseanbrady/gistdoit"
|
18
|
+
end
|
data/lib/gistdoit.rb
ADDED
data/lib/gistdoit/cli.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module GistDoIt
|
4
|
+
class CLI
|
5
|
+
def self.start(*args)
|
6
|
+
new.start(args.first)
|
7
|
+
end
|
8
|
+
|
9
|
+
def start(relative_file_path)
|
10
|
+
base_file_name = File.basename(relative_file_path)
|
11
|
+
file_contents = get_file_contents(relative_file_path)
|
12
|
+
description = get_file_description
|
13
|
+
create_gist(base_file_name, file_contents, description)
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_gist(base_file_name, file_contents, description)
|
17
|
+
gist = Gist.new(name: base_file_name, content: file_contents, summary: description)
|
18
|
+
client = Github::Client.new
|
19
|
+
response = client.create_gist(gist)
|
20
|
+
parsed_response = JSON.parse(response)
|
21
|
+
client.github_username = parsed_response['owner']['login'] unless client.has_github_username?
|
22
|
+
show_url(parsed_response['html_url'])
|
23
|
+
end
|
24
|
+
|
25
|
+
def show_url(url)
|
26
|
+
in_blank_terminal do
|
27
|
+
puts "The link is: #{url}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_file_contents(relative_file_path)
|
32
|
+
path = Dir.pwd
|
33
|
+
File.read("#{path}/#{relative_file_path}")
|
34
|
+
end
|
35
|
+
|
36
|
+
def base_file_name(path)
|
37
|
+
File.basename(path)
|
38
|
+
end
|
39
|
+
|
40
|
+
def get_file_description
|
41
|
+
in_blank_terminal do
|
42
|
+
puts "Please describe your file..."
|
43
|
+
description = $stdin.gets.chomp
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def in_blank_terminal
|
48
|
+
system 'clear'
|
49
|
+
yield
|
50
|
+
end
|
51
|
+
|
52
|
+
def get_token
|
53
|
+
in_blank_terminal do
|
54
|
+
config_path = File.expand_path('~') + '/.gistdoit'
|
55
|
+
if !File.exist?(config_path)
|
56
|
+
in_blank_terminal do
|
57
|
+
puts "Please enter your token:"
|
58
|
+
token = $stdin.gets.chomp
|
59
|
+
end
|
60
|
+
result = File.open(config_path, 'w') do |file|
|
61
|
+
config_data = { 'token' => token }
|
62
|
+
file << YAML.dump(config_data)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'gistdoit/github/user_config'
|
3
|
+
|
4
|
+
module GistDoIt
|
5
|
+
class Gist
|
6
|
+
def initialize(name: nil, content: nil, summary: nil, user_config: Github::UserConfig.new)
|
7
|
+
@name = name
|
8
|
+
@content = content
|
9
|
+
@summary = summary
|
10
|
+
@config = user_config
|
11
|
+
end
|
12
|
+
|
13
|
+
def github_username
|
14
|
+
@config.username
|
15
|
+
end
|
16
|
+
|
17
|
+
def content=(file_contents)
|
18
|
+
@content = file_contents
|
19
|
+
end
|
20
|
+
|
21
|
+
def content
|
22
|
+
@content
|
23
|
+
end
|
24
|
+
|
25
|
+
def summary
|
26
|
+
@summary
|
27
|
+
end
|
28
|
+
|
29
|
+
def summary=(text)
|
30
|
+
@summary = text
|
31
|
+
end
|
32
|
+
|
33
|
+
def name
|
34
|
+
@name
|
35
|
+
end
|
36
|
+
|
37
|
+
def name=(text)
|
38
|
+
@name = text
|
39
|
+
end
|
40
|
+
|
41
|
+
def to_json
|
42
|
+
{ "description" => "#{summary}", "public" => false, "files" => { "#{name}" => { "content" => "#{content}" } } }.to_json
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'yaml'
|
3
|
+
require_relative '../net_http_adapter'
|
4
|
+
require_relative './user_config'
|
5
|
+
|
6
|
+
module Github
|
7
|
+
class Client
|
8
|
+
def initialize(config = UserConfig.new, network = GistDoIt::NetHTTPAdapter.new)
|
9
|
+
@config = config
|
10
|
+
@network = network
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_gist(gist)
|
14
|
+
@data = gist.to_json
|
15
|
+
uri = URI("https://api.github.com/gists")
|
16
|
+
@response = @network.post_with_token(token, uri, @data)
|
17
|
+
end
|
18
|
+
|
19
|
+
def has_github_username?
|
20
|
+
@config.has_github_username?
|
21
|
+
end
|
22
|
+
|
23
|
+
def github_username=(username)
|
24
|
+
@config.set_github_username(username)
|
25
|
+
end
|
26
|
+
|
27
|
+
def response
|
28
|
+
@response
|
29
|
+
end
|
30
|
+
|
31
|
+
def token
|
32
|
+
@config.token
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Github
|
4
|
+
class UserConfig
|
5
|
+
# Do we actually need an instance here. Do we require state at any point?
|
6
|
+
def initialize(file_path = File.expand_path('~') + '/.gistdoit')
|
7
|
+
@file_path = file_path
|
8
|
+
end
|
9
|
+
|
10
|
+
def set_github_username(username)
|
11
|
+
File.open(@file_path, 'a') do |file|
|
12
|
+
file << YAML.dump({ 'github_username' => username })
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def has_github_username?
|
17
|
+
YAML.load(File.readlines(@file_path).select { |line| !line.include?('---') }.join).key?('github_username')
|
18
|
+
end
|
19
|
+
|
20
|
+
def all
|
21
|
+
file = File.read(@file_path)
|
22
|
+
YAML.load(file)
|
23
|
+
end
|
24
|
+
|
25
|
+
def [](key)
|
26
|
+
all[key]
|
27
|
+
end
|
28
|
+
|
29
|
+
def method_missing(symbol, *args)
|
30
|
+
all[symbol.to_s]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
3
|
+
module GistDoIt
|
4
|
+
class NetHTTPAdapter
|
5
|
+
def post_with_token(token, uri, data)
|
6
|
+
request = Net::HTTP::Post.new(uri.to_s)
|
7
|
+
add_headers_to_request!(request, {"content-type" => "application/json", "Authorization" => "token #{token}"})
|
8
|
+
add_body_to_request!(request, data)
|
9
|
+
Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
|
10
|
+
@response = http.request(request).body
|
11
|
+
end
|
12
|
+
|
13
|
+
@response
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def add_headers_to_request!(request, headers)
|
19
|
+
headers.each do |header_name, header_value|
|
20
|
+
request[header_name] = header_value
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def add_body_to_request!(request, data)
|
25
|
+
request.body = data
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/test/cli_test.rb
ADDED
File without changes
|
data/test/client_test.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require_relative './test_helper'
|
3
|
+
require 'gistdoit/github/client'
|
4
|
+
|
5
|
+
module Github
|
6
|
+
class ClientTest < Minitest::Test
|
7
|
+
def setup
|
8
|
+
@gist_data = Struct.new(:gist_data) {
|
9
|
+
def username
|
10
|
+
'liamseanbrady'
|
11
|
+
end
|
12
|
+
|
13
|
+
def summary
|
14
|
+
'This is a cool gist'
|
15
|
+
end
|
16
|
+
|
17
|
+
def name
|
18
|
+
'file.rb'
|
19
|
+
end
|
20
|
+
|
21
|
+
def content
|
22
|
+
'def new_test; end'
|
23
|
+
end
|
24
|
+
}.new
|
25
|
+
end
|
26
|
+
|
27
|
+
def teardown
|
28
|
+
@gist_data = nil
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_client_gets_response_from_service
|
32
|
+
fixture_path = File.expand_path('../fixtures/create_gist_response', __FILE__)
|
33
|
+
response = File.read(fixture_path)
|
34
|
+
|
35
|
+
user_config = Struct.new(:user_config) {
|
36
|
+
def token
|
37
|
+
'ab12345'
|
38
|
+
end
|
39
|
+
}.new
|
40
|
+
|
41
|
+
test_scope = self
|
42
|
+
|
43
|
+
network_adapter = Struct.new(:network_adapter) {
|
44
|
+
def post_with_token(token, uri, data)
|
45
|
+
fixture_path = File.expand_path('../fixtures/create_gist_response', __FILE__)
|
46
|
+
File.read(fixture_path)
|
47
|
+
end
|
48
|
+
}.new
|
49
|
+
|
50
|
+
client = Client.new(user_config, network_adapter)
|
51
|
+
client.create_gist(@gist_data)
|
52
|
+
|
53
|
+
assert_equal(response, client.response)
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_token
|
57
|
+
user_config = Struct.new(:user_config) {
|
58
|
+
def token
|
59
|
+
'ab12345'
|
60
|
+
end
|
61
|
+
}.new
|
62
|
+
|
63
|
+
client = Client.new(user_config)
|
64
|
+
|
65
|
+
assert_equal('ab12345', client.token)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
{
|
2
|
+
"url": "https://api.github.com/gists/e0e1a3cddec61ee89289",
|
3
|
+
"forks_url": "https://api.github.com/gists/e0e1a3cddec61ee89289/forks",
|
4
|
+
"commits_url": "https://api.github.com/gists/e0e1a3cddec61ee89289/commits",
|
5
|
+
"id": "e0e1a3cddec61ee89289",
|
6
|
+
"git_pull_url": "https://gist.github.com/e0e1a3cddec61ee89289.git",
|
7
|
+
"git_push_url": "https://gist.github.com/e0e1a3cddec61ee89289.git",
|
8
|
+
"html_url": "https://gist.github.com/e0e1a3cddec61ee89289",
|
9
|
+
"files": {
|
10
|
+
"file1.txt": {
|
11
|
+
"filename": "file1.txt",
|
12
|
+
"type": "text/plain",
|
13
|
+
"language": "Text",
|
14
|
+
"raw_url": "https://gist.githubusercontent.com/liamseanbrady/e0e1a3cddec61ee89289/raw/043a3b46337b46164a5626816c2984b48be968ea/file1.txt",
|
15
|
+
"size": 4,
|
16
|
+
"truncated": false,
|
17
|
+
"content": "Demo"
|
18
|
+
}
|
19
|
+
},
|
20
|
+
"public": false,
|
21
|
+
"created_at": "2015-08-24T12:12:50Z",
|
22
|
+
"updated_at": "2015-08-24T12:12:50Z",
|
23
|
+
"description": "Created via API",
|
24
|
+
"comments": 0,
|
25
|
+
"user": null,
|
26
|
+
"comments_url": "https://api.github.com/gists/e0e1a3cddec61ee89289/comments",
|
27
|
+
"owner": {
|
28
|
+
"login": "liamseanbrady",
|
29
|
+
"id": 8338057,
|
30
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/8338057?v=3",
|
31
|
+
"gravatar_id": "",
|
32
|
+
"url": "https://api.github.com/users/liamseanbrady",
|
33
|
+
"html_url": "https://github.com/liamseanbrady",
|
34
|
+
"followers_url": "https://api.github.com/users/liamseanbrady/followers",
|
35
|
+
"following_url": "https://api.github.com/users/liamseanbrady/following{/other_user}",
|
36
|
+
"gists_url": "https://api.github.com/users/liamseanbrady/gists{/gist_id}",
|
37
|
+
"starred_url": "https://api.github.com/users/liamseanbrady/starred{/owner}{/repo}",
|
38
|
+
"subscriptions_url": "https://api.github.com/users/liamseanbrady/subscriptions",
|
39
|
+
"organizations_url": "https://api.github.com/users/liamseanbrady/orgs",
|
40
|
+
"repos_url": "https://api.github.com/users/liamseanbrady/repos",
|
41
|
+
"events_url": "https://api.github.com/users/liamseanbrady/events{/privacy}",
|
42
|
+
"received_events_url": "https://api.github.com/users/liamseanbrady/received_events",
|
43
|
+
"type": "User",
|
44
|
+
"site_admin": false
|
45
|
+
},
|
46
|
+
"forks": [
|
47
|
+
|
48
|
+
],
|
49
|
+
"history": [
|
50
|
+
{
|
51
|
+
"user": {
|
52
|
+
"login": "liamseanbrady",
|
53
|
+
"id": 8338057,
|
54
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/8338057?v=3",
|
55
|
+
"gravatar_id": "",
|
56
|
+
"url": "https://api.github.com/users/liamseanbrady",
|
57
|
+
"html_url": "https://github.com/liamseanbrady",
|
58
|
+
"followers_url": "https://api.github.com/users/liamseanbrady/followers",
|
59
|
+
"following_url": "https://api.github.com/users/liamseanbrady/following{/other_user}",
|
60
|
+
"gists_url": "https://api.github.com/users/liamseanbrady/gists{/gist_id}",
|
61
|
+
"starred_url": "https://api.github.com/users/liamseanbrady/starred{/owner}{/repo}",
|
62
|
+
"subscriptions_url": "https://api.github.com/users/liamseanbrady/subscriptions",
|
63
|
+
"organizations_url": "https://api.github.com/users/liamseanbrady/orgs",
|
64
|
+
"repos_url": "https://api.github.com/users/liamseanbrady/repos",
|
65
|
+
"events_url": "https://api.github.com/users/liamseanbrady/events{/privacy}",
|
66
|
+
"received_events_url": "https://api.github.com/users/liamseanbrady/received_events",
|
67
|
+
"type": "User",
|
68
|
+
"site_admin": false
|
69
|
+
},
|
70
|
+
"version": "3439bbd04f75067672425b9f51a11170c072aaf6",
|
71
|
+
"committed_at": "2015-08-24T12:12:50Z",
|
72
|
+
"change_status": {
|
73
|
+
"total": 1,
|
74
|
+
"additions": 1,
|
75
|
+
"deletions": 0
|
76
|
+
},
|
77
|
+
"url": "https://api.github.com/gists/e0e1a3cddec61ee89289/3439bbd04f75067672425b9f51a11170c072aaf6"
|
78
|
+
}
|
79
|
+
]
|
80
|
+
}
|
data/test/gist_test.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require_relative './test_helper'
|
3
|
+
require 'gistdoit/gist'
|
4
|
+
|
5
|
+
class GistTests < Minitest::Test
|
6
|
+
def test_gist_reads_username_from_config_file
|
7
|
+
user_config = Struct.new(:user_config) {
|
8
|
+
def username
|
9
|
+
'liamseanbrady'
|
10
|
+
end
|
11
|
+
}.new
|
12
|
+
|
13
|
+
gist = GistDoIt::Gist.new(user_config: user_config)
|
14
|
+
|
15
|
+
assert_equal('liamseanbrady', gist.github_username)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_gist_has_a_summary
|
19
|
+
user_config = Struct.new(:user_config) {
|
20
|
+
def username
|
21
|
+
'liamseanbrady'
|
22
|
+
end
|
23
|
+
}.new
|
24
|
+
|
25
|
+
gist = GistDoIt::Gist.new(user_config: user_config, summary: 'A good summary')
|
26
|
+
|
27
|
+
assert_equal('A good summary', gist.summary)
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def test_gist_has_a_name
|
32
|
+
user_config = Struct.new(:user_config) {
|
33
|
+
def username
|
34
|
+
'liamseanbrady'
|
35
|
+
end
|
36
|
+
}.new
|
37
|
+
|
38
|
+
gist = GistDoIt::Gist.new(user_config: user_config, name: 'my_gist.rb')
|
39
|
+
|
40
|
+
assert_equal('my_gist.rb', gist.name)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_gist_has_content
|
44
|
+
user_config = Struct.new(:user_config) {
|
45
|
+
def username
|
46
|
+
'liamseanbrady'
|
47
|
+
end
|
48
|
+
}.new
|
49
|
+
|
50
|
+
gist = GistDoIt::Gist.new(user_config: user_config, content: 'def new_method; end')
|
51
|
+
|
52
|
+
assert_equal('def new_method; end', gist.content)
|
53
|
+
end
|
54
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require_relative './test_helper'
|
3
|
+
require 'gistdoit/github/user_config'
|
4
|
+
|
5
|
+
module Github
|
6
|
+
class ConfigTest < Minitest::Test
|
7
|
+
def test_parses_yaml_from_file
|
8
|
+
config_file_path = File.expand_path('../fixtures/config.yml', __FILE__)
|
9
|
+
user_config = UserConfig.new(config_file_path)
|
10
|
+
config_data = { 'username' => 'liamseanbrady', 'token' => 'ab12345' }
|
11
|
+
|
12
|
+
assert_equal(config_data, user_config.all)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_returns_value_if_key_exists
|
16
|
+
config_file_path = File.expand_path('../fixtures/config.yml', __FILE__)
|
17
|
+
user_config = UserConfig.new(config_file_path)
|
18
|
+
config_data = { 'username' => 'liamseanbrady', 'token' => 'ab12345' }
|
19
|
+
|
20
|
+
assert_equal('ab12345', user_config['token'])
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_returns_nil_if_no_method_exists_for_a_key
|
24
|
+
config_file_path = File.expand_path('../fixtures/config.yml', __FILE__)
|
25
|
+
user_config = UserConfig.new(config_file_path)
|
26
|
+
config_data = { 'username' => 'liamseanbrady', 'token' => 'ab12345' }
|
27
|
+
|
28
|
+
assert_equal(nil, user_config.method_that_does_not_exist)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_returns_correct_value_if_method_exists_for_a_key
|
32
|
+
config_file_path = File.expand_path('../fixtures/config.yml', __FILE__)
|
33
|
+
user_config = UserConfig.new(config_file_path)
|
34
|
+
config_data = { 'username' => 'liamseanbrady', 'token' => 'ab12345' }
|
35
|
+
|
36
|
+
assert_equal('liamseanbrady', user_config.username)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gistdoit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Liam Brady
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-08-28 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: An easy way to convert your files to Gists all within the terminal
|
14
|
+
email: liamseanbrady+gems@gmail.com
|
15
|
+
executables:
|
16
|
+
- gistdoit
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- ".gitignore"
|
21
|
+
- README.md
|
22
|
+
- Rakefile
|
23
|
+
- bin/gistdoit
|
24
|
+
- content.rb
|
25
|
+
- gistdoit.gemspec
|
26
|
+
- lib/gistdoit.rb
|
27
|
+
- lib/gistdoit/cli.rb
|
28
|
+
- lib/gistdoit/gist.rb
|
29
|
+
- lib/gistdoit/github/client.rb
|
30
|
+
- lib/gistdoit/github/user_config.rb
|
31
|
+
- lib/gistdoit/net_http_adapter.rb
|
32
|
+
- lib/gistdoit/version.rb
|
33
|
+
- test/cli_test.rb
|
34
|
+
- test/client_test.rb
|
35
|
+
- test/command_line_test.rb
|
36
|
+
- test/fixtures/create_gist_response
|
37
|
+
- test/gist_test.rb
|
38
|
+
- test/test_helper.rb
|
39
|
+
- test/user_config_test.rb
|
40
|
+
homepage: http://github.com/liamseanbrady/gistdoit
|
41
|
+
licenses: []
|
42
|
+
metadata: {}
|
43
|
+
post_install_message:
|
44
|
+
rdoc_options: []
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '0'
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
requirements: []
|
58
|
+
rubyforge_project:
|
59
|
+
rubygems_version: 2.2.2
|
60
|
+
signing_key:
|
61
|
+
specification_version: 4
|
62
|
+
summary: File to Gist converter
|
63
|
+
test_files:
|
64
|
+
- test/cli_test.rb
|
65
|
+
- test/client_test.rb
|
66
|
+
- test/command_line_test.rb
|
67
|
+
- test/fixtures/create_gist_response
|
68
|
+
- test/gist_test.rb
|
69
|
+
- test/test_helper.rb
|
70
|
+
- test/user_config_test.rb
|