pully 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 633d3c3f22aa19eb20d6a03c30f9fd390e86ff89
4
- data.tar.gz: 8219ec9576cbbca33e7a87b455f5f0d11d9275a9
3
+ metadata.gz: ac6ecacdbc362f4fc022fc9fa9fa2d81013a25fa
4
+ data.tar.gz: 1c878608104e3d72f23702a2f153382c11fccc11
5
5
  SHA512:
6
- metadata.gz: 73a299c54c89e2c97b5d3f13c017794707958bcf0d6f05234ef64b1dbe4d9b7d1be93b2b5a53d335dccaaabf9599b2a8056526b00de34b3ff9e480fea7fbb6e7
7
- data.tar.gz: 723e93538a659a44acc11e0ceaadb2a5402f9b4af1d033dc3bcbbd25dbc09e0e98f03dec502bafdfb3e22bcc50ff71156fa5089e7f28ff80bb1bdba853427fc3
6
+ metadata.gz: 2c6131eabbc8ba34f82a79c0a39de726c50cfa5716a039921cfb2d3cd84284b7b3ce0d227596a7044ad95e307683ae54369ccdd86a6e0b383d8e12fd21e770d4
7
+ data.tar.gz: 2497f645f7e725aec7a42812de990f69061f297280ce70ff2483676ce2c2f9bb26363eff0bfabe728696dc111dca677c17920b707a0e1e31a1451f5c01376cc6
data/.gitignore CHANGED
@@ -20,3 +20,4 @@ tmp
20
20
  *.o
21
21
  *.a
22
22
  mkmf.log
23
+ .run
@@ -1,3 +1,3 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.0
3
+ - 2.1.2
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  ![pully: A command line interface for building a pull request bot](https://raw.githubusercontent.com/sotownsend/pully/master/logo.png)
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/iarrogant.svg)](http://badge.fury.io/rb/pully)
4
- [![Build Status](https://travis-ci.org/sotownsend/pully.svg)](https://travis-ci.org/sotownsend/pully)
3
+ [![Gem Version](https://badge.fury.io/rb/pully.svg)](http://badge.fury.io/rb/pully)
4
+ [![Build Status](https://travis-ci.org/sotownsend/Pully.svg?branch=master)](https://travis-ci.org/sotownsend/Pully)
5
5
  [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/sotownsend/pully/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
6
6
  [![License](http://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/sotownsend/pully/blob/master/LICENSE)
7
7
 
@@ -9,33 +9,31 @@
9
9
 
10
10
  A work in progress
11
11
 
12
- # Pully Modules
13
- A concept borrowed from [Rails engines](http://guides.rubyonrails.org/engines.html), Pully modules both serve as your project files, all library modules, and gemified instances. That is, a project you create is automatically modular and can be imported in another pully module/project.
12
+ # Basic usage
13
+ ```ruby
14
+ require 'pully'
14
15
 
15
- # Compilation
16
- Pully does not rely on ruby for the final produced `application.js` file. The output file is pure javascript and written in javascript (not transcoded). Ruby only serves as a compilation assistant.
16
+ #Create a new pully object, each pully object targets (1) repository.
17
+ pully = Pully.new("github_username", "github_password", "my_repository")
17
18
 
18
- # Task
19
- The task is the base unit in pully, similar to a rack module except that rack is a stack and pully is a party. Based on concepts borrowed from XNU®, FreeBSD®, and GNU HURD®; tasks are combined in pully to produce behavior by many tasks inter-cooperating. Efficiency has been provided through virtualizing the task communication so that no message passing takes place inside pully and all modules are combined into an efficient monolithic module.
19
+ #Create a new pull request to merge 'my_branch' into 'master' with the title 'My pull request' and the message 'Hey XXX...'
20
+ pull_number = pully.create_pull_request(from:"my_branch", to:"master", subject:"My pull request", message:"Hey XXXX, can you merge this for me?")
20
21
 
21
- ### Task Facilities
22
- Tasks are able to
23
- - send and receive events from a global or internal source.
24
- - set interval and timeout timers.
25
- - store temporary data in it's own heap '$__'
22
+ #Comment on that pull request
23
+ pully.write_comment_to_pull_request(pull_number, "Test Comment")
26
24
 
27
- ### Default modules
28
- This pully project contains the 'micro-task-kernel', the 'ui', and the 'operations' modules.
25
+ #Get all comments
26
+ comments = pully.comments_for_pull_request(pull_number)
27
+ ```
29
28
 
30
29
  ## Requirements
31
30
 
32
- - Mac OS X 10.9+ (Untested)
33
31
  - Ruby 2.1 or Higher
34
32
 
35
33
  ## Communication
36
34
 
37
- - If you **found a bug**, open an issue.
38
- - If you **have a feature request**, open an issue.
35
+ - If you **found a bug**, submit a pull request.
36
+ - If you **have a feature request**, submit a pull request.
39
37
  - If you **want to contribute**, submit a pull request.
40
38
 
41
39
  ## Installation
@@ -48,7 +46,8 @@ Run `sudo gem install pully`
48
46
 
49
47
  ### When should I use pully?
50
48
 
51
- Todo
49
+ When you want to automate GitHub pull requests. Pully provides the necessary facilities for you to authenticate and control GitHub pull requests in
50
+ any way you wish. Duplicate the functionality of many popular CI solutions.
52
51
 
53
52
  ### What's Fittr?
54
53
 
data/Rakefile CHANGED
@@ -5,4 +5,9 @@ require "bundler/gem_tasks"
5
5
  # Run with `rake spec`
6
6
  RSpec::Core::RakeTask.new(:spec)
7
7
 
8
+ task :set_private_key_permissions do
9
+ File.chmod(0400, "./spec/assets/gh_key.private")
10
+ end
11
+
12
+ task :spec => :set_private_key_permissions
8
13
  task :default => :spec
@@ -1,5 +1,141 @@
1
1
  require "pully/version"
2
+ require 'ghee'
3
+ require 'octokit'
4
+ require 'git'
5
+ require 'tempfile'
2
6
 
3
7
  module Pully
4
- # Your code goes here...
8
+ class Pully
9
+ def initialize(user:, pass:, repo:)
10
+ @user = user
11
+ @pass = pass
12
+ @repo = repo
13
+ @repo_selector = "#{@user}/#{@repo}"
14
+
15
+ @ghee = Ghee.basic_auth(@user, @pass)
16
+ @gh_client = Octokit::Client.new(:login => @user, :password => @pass)
17
+
18
+ #Test authentication, to_s required to have side-effects
19
+ @ghee.repos(user, repo).to_s
20
+ @gh_client.user #throw exception if auth is bad
21
+ end
22
+
23
+ def create_pull_request(from:, to:, subject:, message:)
24
+ @ghee.repos(@user, @repo).pulls.create(:title => subject, :body => message, :base => to, :head => from)["number"]
25
+ end
26
+
27
+ def comments_for_pull_request pull_number
28
+ @gh_client.issue_comments(@repo_selector, pull_number)
29
+ end
30
+
31
+ def write_comment_to_pull_request pull_number, comment
32
+ @gh_client.add_comment(@repo_selector, pull_number, comment)
33
+ end
34
+ end
35
+
36
+ module TestHelpers
37
+ class Branch
38
+ module Error
39
+ class NoSuchRepository < StandardError; end
40
+ class BadRepoSelector < StandardError; end
41
+ class BadLogin < StandardError; end
42
+ class NoSuchCloneURL< StandardError; end
43
+ end
44
+
45
+ #repo_selector is like 'my_user/repo'
46
+ def initialize(user:, pass:, repo_selector:, clone_url:)
47
+ @user = user
48
+ @pass = pass
49
+ @repo_selector = repo_selector
50
+ @clone_url = clone_url
51
+
52
+
53
+ #Setup the local git client
54
+ ##############################################################
55
+ Git.configure do |config|
56
+ config.git_ssh = "./spec/assets/git_ssh"
57
+ end
58
+ ##############################################################
59
+
60
+ clone_repo
61
+
62
+ #Setup Octocat client
63
+ ##############################################################
64
+ @gh_client = Octokit::Client.new(:login => @user, :password => @pass)
65
+ begin
66
+ @gh_client.user #throw exception if auth is bad
67
+ rescue Octokit::Unauthorized
68
+ raise Error::BadLogin
69
+ end
70
+
71
+ begin
72
+ @repo = @gh_client.repo(repo_selector)
73
+ rescue ArgumentError
74
+ raise Error::BadRepoSelector
75
+ rescue Octokit::NotFound
76
+ raise Error::NoSuchRepository
77
+ end
78
+ ##############################################################
79
+ end
80
+
81
+ #Will clone down repo and set @gh_client to the new repo
82
+ def clone_repo
83
+ #Create a temp path
84
+ temp_file = Tempfile.new('pully')
85
+ @path = temp_file.path
86
+ temp_file.close
87
+ temp_file.unlink
88
+
89
+ #Clone repo
90
+ begin
91
+ @git_client = Git.clone(@clone_url, 'pully', :path => @path)
92
+ @git_client.config("user.name", "pully-test-account")
93
+ @git_client.config("user.email", "pully-test-account@gmail.com")
94
+ rescue Git::GitExecuteError => e
95
+ raise Error::NoSuchCloneURL if e.message =~ /fatal: repository.*does not exist/
96
+ raise "Unknown git execute error: #{e}"
97
+ end
98
+ end
99
+
100
+ def create_branch(new_branch_name)
101
+ #Checkout what ever real master is
102
+ @git_client.branch(master_branch).checkout
103
+
104
+ #Create a new branch
105
+ @git_client.branch(new_branch_name)
106
+ @git_client.branch(new_branch_name).checkout
107
+ end
108
+
109
+ def delete_branch(branch_name)
110
+ @git_client.push("origin", ":#{branch_name}")
111
+ end
112
+
113
+ def list_branches
114
+ #Re-pull repo from github
115
+ clone_repo
116
+ @git_client.branches.remote.map{|e| e.name}
117
+ end
118
+
119
+ def master_branch
120
+ @repo.default_branch
121
+ end
122
+
123
+ #Create, commit, and push to github
124
+ def commit_new_random_file(branch_name)
125
+ #Create a new file
126
+ Dir.chdir "#{@path}/pully" do
127
+ File.write branch_name, branch_name
128
+ end
129
+
130
+ #Commit
131
+ @git_client.add(:all => true)
132
+ @git_client.commit_all("New branch from Pully Test Suite #{SecureRandom.hex}")
133
+ @git_client.push("origin", branch_name)
134
+ end
135
+ end
136
+ end
137
+
138
+ def self.new(user:, pass:, repo:)
139
+ Pully.new(user: user, pass: pass, repo: repo)
140
+ end
5
141
  end
@@ -1,3 +1,3 @@
1
1
  module Pully
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "rake", "~> 10.3"
23
23
  spec.add_development_dependency "rspec", "~> 3.2"
24
24
  spec.add_runtime_dependency "thor", "~> 0.19"
25
- spec.executables << 'pully'
26
-
25
+ spec.add_runtime_dependency "ghee", "~> 0.12.17"
26
+ spec.add_runtime_dependency "octokit", "~> 3.0"
27
+ spec.add_runtime_dependency "git", "~> 1.2.9.1"
27
28
  end
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEAsz09BY1HZNOjMH3XmP0NArT6LWmvWOUHgUA2pVO9RrxekJwa
3
+ OMoS3HQVDwONn1e7p8ROhSr7U9hYRO9ZvPR3pr8olboWDg8IyYXXiy+tY29tZXqb
4
+ M1tAQinj2qlnZhEn9b1HqwrsLy/fYQaWvlhdEQ690+z7/pHQ1Gy89Ewmvlr7Bl6D
5
+ KYfe7JIAICYUQeZI2AyaJ3u9ltNE9kA6eHuVJUcFziQrQjKwuWoS0GWfhlbWnhRJ
6
+ JHH/IEYDg8KUBjFu0nBs2ObLrhLu9XJsMIV8MrwCRL+8hr1VeLhydjP3qcQ44YQx
7
+ urGmcbgX7km3dVFkPTPPbCxHhv1eVwK2Kqbp8wIDAQABAoIBAG2hNjKwIAvemsDt
8
+ J7KOjKesNB0UuEiCBV4b/ZCPsISUcK64nB1CE9k9Myg0vynICqJporE3AfRdrlez
9
+ okq9qHWYFGXIJPdCYNiKAbVDWyUnoVzhag42cQ5G+vPii7jVI4Dd3fkTPDT8bf+1
10
+ fPw9pebqAleeat9hJr7XJ5exAD2K9s6Wg/VRnhfIFFna3gIb+h8rCVb94npEzfQw
11
+ yZ9virDBjBIcUJuHKMZjDNHnxwMBFdSf+jwmWDnXmuiSZiCEoMQq0foRRg1lA8bg
12
+ W6onEZ6pqZlNqr/uWf4/c5452CftGMIznIURPieXHhgodTFk3RfGE5+c7d4NXyqC
13
+ lGaSvHECgYEA7qdDnCYafQ0jFzGKavIzWUJipCpHF7JwYjhPZs4oftxhKDGWi6Pq
14
+ J2zutr+20jmvSRUXZsaz6ijTh6n6TbAs8uS2YBJnXWnZsMAqqIlbId86K9k68xat
15
+ WeaN0sbgj6jl0A7l32tPEpKRBNhMkAggFpizbiK1byoc7e3jyP+YWHkCgYEAwERt
16
+ SkxBIm8QG+CEqIhGxHgK6poWO5uzVYm9Xb0ODiprnIKt6KEDB+f+Fqhh2jbU2lVx
17
+ tkrpX4OhYYSxp+vRtCs3ypfyDBVqwyRwPpActNynaEK9WeN4j5rEJEAB5NI7xK7n
18
+ NixtYc2bfQdSdjD5ft13pA8e5QOx8ctGhDgSUssCgYAnJH39VW6Qxh/URQbb5Z+w
19
+ ayf8nwaMB3NRWMUFKpkPvZud2QxFGPxlvQMmLCmTL2zlgrUU4VBO/qU7IhDwvw2Q
20
+ RRz4guw7MQpIaCxW+jhdRNyopnd5uWVzUlI+mOnqBhyzVE41p8cPV8S7U7KzCPIi
21
+ YqdDUCQL+I9IIvVyWSGmmQKBgHEf0a4Fb81yy2ebknIWvIyclM+0GaC426tYf7LH
22
+ qZ1sGCTePrTBB6d/OGDccbaSzGoqG93F9cndCPb3vA+xEJGRXCI3hJLXhxmKNwCY
23
+ iktgCJ+vpPlefXEA/qbVgke/6qquvhuByFnjP7kwtbQU3LdoVxyQSP02T1yU3cit
24
+ tRpBAoGBAMrHa/DN4x5y+5fyn3qdg9R0mfDm/UVpXTepLIxRjNw/kcmCF8c7/LJZ
25
+ fRs4sAKruDI1aA/PuydyQUl9Bwx+e4vmBTcBrLOGEcOmFz9Vbs4M5mSjUaDhdBxu
26
+ iDG0r4yYvCv0N2InWdgOMU2JPaK78WnPKyiVR6P3uJjuE1Kmj75O
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzPT0FjUdk06MwfdeY/Q0CtPotaa9Y5QeBQDalU71GvF6QnBo4yhLcdBUPA42fV7unxE6FKvtT2FhE71m89HemvyiVuhYODwjJhdeLL61jb21lepszW0BCKePaqWdmESf1vUerCuwvL99hBpa+WF0RDr3T7Pv+kdDUbLz0TCa+WvsGXoMph97skgAgJhRB5kjYDJone72W00T2QDp4e5UlRwXOJCtCMrC5ahLQZZ+GVtaeFEkkcf8gRgODwpQGMW7ScGzY5suuEu71cmwwhXwyvAJEv7yGvVV4uHJ2M/epxDjhhDG6saZxuBfuSbd1UWQ9M89sLEeG/V5XArYqpunz Seo@imac.local
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+
3
+ #Execute SSH with the private keyfile stored in ./spec/assets/
4
+ #Used by lib_test_spec when pushing back to github
5
+ ssh -i "./spec/assets/gh_key.private" "$@"
@@ -0,0 +1,5 @@
1
+ github:
2
+ user: pully-test-account
3
+ pass: pully-test-account0
4
+ repo: pully-test-account
5
+ clone_url: git@github.com:pully-test-account/pully-test-account.git
@@ -0,0 +1,18 @@
1
+ require 'yaml'
2
+ require 'ghee'
3
+ require './lib/pully.rb'
4
+ require 'securerandom'
5
+
6
+ RSpec.describe "Test Environment" do
7
+ it "Can write to a tempfile" do
8
+ #Create a temp path
9
+ temp_file = Tempfile.new('pully')
10
+ @path = temp_file.path
11
+ temp_file.close
12
+ temp_file.unlink
13
+
14
+ File.write temp_file, "test"
15
+ str = File.read temp_file
16
+ expect(str).to eq("test")
17
+ end
18
+ end
@@ -0,0 +1,52 @@
1
+ require 'yaml'
2
+ require 'ghee'
3
+ require './lib/pully.rb'
4
+
5
+ #Get github information
6
+ def gh_info
7
+ yaml = YAML.load_file("./spec/assets/test.yml")
8
+ return yaml["github"]
9
+ end
10
+
11
+ RSpec.describe "Library" do
12
+ it "Does throw an exception with INcorrect credentials while creating an object" do
13
+ expect { pully = Pully.new(user: "abcdefgh", pass: "abcdefgh", repo: "abcdefgh") }.to raise_error(Ghee::Unauthorized)
14
+ end
15
+
16
+ it "Does NOT throw an exception with correct credentials while creating an object" do
17
+ pully = Pully.new(user: gh_info["user"], pass: gh_info["pass"], repo: gh_info["repo"])
18
+ end
19
+
20
+ it "Can call create a new pull request and returns an integer for the pull request #" do
21
+ #test branch creator
22
+ new_branch_name = SecureRandom.hex
23
+ th = Pully::TestHelpers::Branch.new(user: gh_info["user"], pass: gh_info["pass"], repo_selector: repo_selector, clone_url: gh_info["clone_url"])
24
+ th.create_branch(new_branch_name)
25
+ th.commit_new_random_file(new_branch_name)
26
+
27
+ pully = Pully.new(user: gh_info["user"], pass: gh_info["pass"], repo: gh_info["repo"])
28
+ n = pully.create_pull_request(from:new_branch_name, to:"master", subject:"My pull request", message:"Hey XXXX, can you merge this for me?")
29
+ expect(n.class).to be(Fixnum)
30
+
31
+ th.delete_branch(new_branch_name)
32
+ end
33
+
34
+ it "Can call create a new pull request and write a comment on that pull request" do
35
+ #test branch creator
36
+ new_branch_name = SecureRandom.hex
37
+ th = Pully::TestHelpers::Branch.new(user: gh_info["user"], pass: gh_info["pass"], repo_selector: repo_selector, clone_url: gh_info["clone_url"])
38
+ th.create_branch(new_branch_name)
39
+ th.commit_new_random_file(new_branch_name)
40
+
41
+ pully = Pully.new(user: gh_info["user"], pass: gh_info["pass"], repo: gh_info["repo"])
42
+ pull_number = pully.create_pull_request(from:new_branch_name, to:"master", subject:"My pull request", message:"Hey XXXX, can you merge this for me?")
43
+
44
+ before_create = pully.comments_for_pull_request(pull_number).length
45
+ pully.write_comment_to_pull_request(pull_number, "Test Comment")
46
+ after_create = pully.comments_for_pull_request(pull_number).length
47
+
48
+ expect(after_create).to eq(before_create+1)
49
+
50
+ th.delete_branch(new_branch_name)
51
+ end
52
+ end
@@ -0,0 +1,55 @@
1
+ require 'yaml'
2
+ require 'ghee'
3
+ require './lib/pully.rb'
4
+ require 'securerandom'
5
+
6
+ #Get github information
7
+ def gh_info
8
+ yaml = YAML.load_file("./spec/assets/test.yml")
9
+ return yaml["github"]
10
+ end
11
+
12
+ def repo_selector
13
+ return "#{gh_info["user"]}/#{gh_info["repo"]}"
14
+ end
15
+
16
+ def rand_repo_selector
17
+ return "#{gh_info["user"]}/#{SecureRandom.hex}"
18
+ end
19
+
20
+ RSpec.describe "Test Library" do
21
+ it "Fails creation with incorrect credentials" do
22
+ expect { Pully::TestHelpers::Branch.new(user: SecureRandom.hex, pass: SecureRandom.hex, repo_selector: repo_selector, clone_url: gh_info["clone_url"]) }.to raise_error(Pully::TestHelpers::Branch::Error::BadLogin)
23
+ end
24
+
25
+ it "does not fail creation with incorrect credentials" do
26
+ Pully::TestHelpers::Branch.new(user: gh_info["user"], pass: gh_info["pass"], repo_selector: repo_selector, clone_url: gh_info["clone_url"])
27
+ end
28
+
29
+ it "does fail creation with bad repo selector if passed a repo_selector without a /" do
30
+ expect { Pully::TestHelpers::Branch.new(user: gh_info["user"], pass: gh_info["pass"], repo_selector: SecureRandom.hex, clone_url: gh_info["clone_url"]) }.to raise_error(Pully::TestHelpers::Branch::Error::BadRepoSelector)
31
+ end
32
+
33
+ it "does fail creation with unreal repository selector" do
34
+ expect { Pully::TestHelpers::Branch.new(user: gh_info["user"], pass: gh_info["pass"], repo_selector: rand_repo_selector, clone_url: gh_info["clone_url"]) }.to raise_error(Pully::TestHelpers::Branch::Error::NoSuchRepository)
35
+ end
36
+
37
+ it "does fail creation with bad clone url" do
38
+ expect { Pully::TestHelpers::Branch.new(user: gh_info["user"], pass: gh_info["pass"], repo_selector: rand_repo_selector, clone_url: "#{SecureRandom.hex}.com") }.to raise_error(Pully::TestHelpers::Branch::Error::NoSuchCloneURL)
39
+ end
40
+
41
+ it "Can create a new branch from our repository and delete it" do
42
+ new_branch_name = SecureRandom.hex
43
+ th = Pully::TestHelpers::Branch.new(user: gh_info["user"], pass: gh_info["pass"], repo_selector: repo_selector, clone_url: gh_info["clone_url"])
44
+
45
+ th.create_branch(new_branch_name)
46
+ th.commit_new_random_file(new_branch_name)
47
+
48
+ #Make sure the branch is listed in the names
49
+ expect(th.list_branches).to include(new_branch_name)
50
+
51
+ #Delete the branch
52
+ th.delete_branch(new_branch_name)
53
+ expect(th.list_branches).not_to include(new_branch_name)
54
+ end
55
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pully
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seo Townsend
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-30 00:00:00.000000000 Z
11
+ date: 2015-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,11 +66,52 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.19'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ghee
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.12.17
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.12.17
83
+ - !ruby/object:Gem::Dependency
84
+ name: octokit
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: git
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 1.2.9.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.2.9.1
69
111
  description: Create your own pull request GitHub bot with ease
70
112
  email:
71
113
  - seotownsend@icloud.com
72
- executables:
73
- - pully
114
+ executables: []
74
115
  extensions: []
75
116
  extra_rdoc_files: []
76
117
  files:
@@ -80,12 +121,17 @@ files:
80
121
  - LICENSE
81
122
  - README.md
82
123
  - Rakefile
83
- - bin/pully
84
124
  - lib/pully.rb
85
125
  - lib/pully/version.rb
86
126
  - logo.png
87
127
  - pully.gemspec
88
- - spec/cli_spec.rb
128
+ - spec/assets/gh_key.private
129
+ - spec/assets/gh_key.public
130
+ - spec/assets/git_ssh
131
+ - spec/assets/test.yml
132
+ - spec/env_spec.rb
133
+ - spec/lib_spec.rb
134
+ - spec/lib_test_spec.rb
89
135
  homepage: https://github.com/sotownsend/pully
90
136
  licenses:
91
137
  - MIT
@@ -111,5 +157,11 @@ signing_key:
111
157
  specification_version: 4
112
158
  summary: A ruby library for managing GitHub pull requests
113
159
  test_files:
114
- - spec/cli_spec.rb
160
+ - spec/assets/gh_key.private
161
+ - spec/assets/gh_key.public
162
+ - spec/assets/git_ssh
163
+ - spec/assets/test.yml
164
+ - spec/env_spec.rb
165
+ - spec/lib_spec.rb
166
+ - spec/lib_test_spec.rb
115
167
  has_rdoc:
data/bin/pully DELETED
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pully'
4
- require 'thor'
5
-
6
- class PullyCLI < Thor
7
- desc "test", "Test the binary, returns 'ok\\n' on stdout"
8
- def test
9
- puts "ok"
10
- end
11
- #desc "new <path>", "Create a new flok project and/or module, you may supply an absolute path or relative, the last entry in the path will be the module name and folder name of the project"
12
- #def new path
13
- #name = File.basename(path)
14
- #Dir.chdir File.dirname(path) do
15
- #`bundle gem #{name}`
16
-
17
- #Dir.chdir name do
18
- #Dir.mkdir "app"
19
- #Dir.mkdir "config"
20
- #end
21
- #end
22
- #end
23
-
24
- #option :compress, type: :boolean
25
- #desc "build", "Build a flok project, you must be in the root of the project"
26
- #def build
27
- #Dir.mkdir("./public") unless File.exists?("./public")
28
- #FileUtils.touch "./public/application.js"
29
-
30
- #src = Flok::MergeSource.merge_all
31
-
32
- ##Compress by writing to a temporary dir, run closure, and then put back
33
- #if options["compress"] == true
34
- #src = Closure::Compiler.new.compile(src)
35
- #end
36
-
37
- #File.write("./public/application.js", src)
38
- #end
39
- end
40
-
41
- PullyCLI.start(ARGV)
@@ -1,15 +0,0 @@
1
- require './lib/pully.rb'
2
- require 'tempfile'
3
- require 'securerandom'
4
-
5
- def ensure_tmp
6
- tmp_spec_path = './spec/tmp'
7
- Dir.mkdir(tmp_spec_path) unless File.exists?(tmp_spec_path)
8
- end
9
-
10
- RSpec.describe "CLI" do
11
- it "Runs" do
12
- a = `ruby -Ilib ./bin/pully test`
13
- expect(a).to eq("ok\n")
14
- end
15
- end