rise-cli 0.1.6 → 0.1.7

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: '0185e22100dd231bed9d7cc3e4fc3cc499dcf47a'
4
- data.tar.gz: 7e5a6316aa1d540f4c78eb2871bce557ed1f4adb
3
+ metadata.gz: d388afeca104cc2795a4b124033584c59e6e2d21
4
+ data.tar.gz: 0eee79cafb98f3cdcfadfaff3def1b3f4d9f6f21
5
5
  SHA512:
6
- metadata.gz: 9050d3c0c38806fdce3b774430191df4787da7bf7c143935d0865b241cb19fcaf6282c8de6cef250c12809a569491cbab83ec78cf884c179f25850fd96c84a7c
7
- data.tar.gz: d82f52379586644f1895772621eb2992097901bb7caa1b288ff6f7f9bb2e41d321757b19b7ba654462efd94760fe26e5d4412dd65ebc99c4a4cd56f152d69018
6
+ metadata.gz: de5ac24bcb194d75b971242c94a24326b3e590396e29e23aded7558e0fb5f729a9f459f558c714aa7419fb9af074766951a78dfdc441baf215a47c7b8c09a63c
7
+ data.tar.gz: 22c48506472ce2b0c2f55351444ce2c0d2c3014f749802d0d7b9f3bc7c17f851203cb5fd569f3c94b1f08cfca0196da0b6de86fc07a3291aa07e8684514cae9f
data/.travis.yml CHANGED
@@ -5,4 +5,5 @@ rvm:
5
5
 
6
6
  script:
7
7
  - bundle && bundle install
8
- # - rubocop --fail-level W
8
+ - bundle exec rspec
9
+ - bundle exec rubocop --fail-level W
data/CONTRIBUTING.md CHANGED
@@ -3,10 +3,15 @@ Thank you for wanting to contribute to rise!
3
3
  If you want to contribute, there are a few guidelines that
4
4
  should generally be followed.
5
5
 
6
+ ### How the contributing process goes
7
+ 1. You create a pull request doing your best to follow the do's and dont's outlined below
8
+ 2. I will review your code if it needs to be reviewed
9
+ 3. If travis and codeclimate OK the changes, your code will be merged onto master and eventually shipped with the next gem release
10
+
6
11
  ### Code contributions
7
12
  * **Do** your best to stick to the [Ruby style guide]
8
13
  * **Do** follow the [50/72 rule] for Git commit messages.
9
- * **Do** make sure that there are no rubocop warnings on your new code
14
+ * **Do** make sure that there are no rubocop warnings on your new code (using `--fail-level W`)
10
15
 
11
16
  ### Pull Requests
12
17
  * **Do** have a clear, concise title
@@ -18,4 +23,4 @@ should generally be followed.
18
23
 
19
24
 
20
25
  [Ruby style guide]:https://github.com/bbatsov/ruby-style-guide
21
- [50/72]:http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
26
+ [50/72 rule]:http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
data/Gemfile CHANGED
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  source 'https://rubygems.org'
3
4
 
4
- gem 'whirly'
5
- gem 'paint'
6
5
  gem 'clipboard'
7
- gem 'rex-text'
8
6
  gem 'http'
7
+ gem 'paint'
8
+ gem 'rex-text'
9
+ gem 'rspec'
9
10
  gem 'rubocop'
11
+ gem 'whirly'
data/Gemfile.lock CHANGED
@@ -5,6 +5,7 @@ GEM
5
5
  public_suffix (>= 2.0.2, < 4.0)
6
6
  ast (2.3.0)
7
7
  clipboard (1.1.1)
8
+ diff-lcs (1.3)
8
9
  domain_name (0.5.20170404)
9
10
  unf (>= 0.0.5, < 1.0.0)
10
11
  http (3.0.0)
@@ -26,6 +27,19 @@ GEM
26
27
  rake
27
28
  rake (12.0.0)
28
29
  rex-text (0.2.15)
30
+ rspec (3.6.0)
31
+ rspec-core (~> 3.6.0)
32
+ rspec-expectations (~> 3.6.0)
33
+ rspec-mocks (~> 3.6.0)
34
+ rspec-core (3.6.0)
35
+ rspec-support (~> 3.6.0)
36
+ rspec-expectations (3.6.0)
37
+ diff-lcs (>= 1.2.0, < 2.0)
38
+ rspec-support (~> 3.6.0)
39
+ rspec-mocks (3.6.0)
40
+ diff-lcs (>= 1.2.0, < 2.0)
41
+ rspec-support (~> 3.6.0)
42
+ rspec-support (3.6.0)
29
43
  rubocop (0.50.0)
30
44
  parallel (~> 1.10)
31
45
  parser (>= 2.3.3.1, < 3.0)
@@ -51,6 +65,7 @@ DEPENDENCIES
51
65
  http
52
66
  paint
53
67
  rex-text
68
+ rspec
54
69
  rubocop
55
70
  whirly
56
71
 
data/README.md CHANGED
@@ -1,7 +1,10 @@
1
1
  ![rise](https://github.com/cbrnrd/rise/raw/master/img/rise_logo.png)
2
- [![Code Climate](https://codeclimate.com/github/cbrnrd/rise/badges/gpa.svg)](https://codeclimate.com/github/cbrnrd/rise)
3
- [![Build Status](https://travis-ci.org/cbrnrd/rise.svg?branch=master)](https://travis-ci.org/cbrnrd/rise)
4
- [![Gem Version](https://badge.fury.io/rb/rise-cli.svg)](https://badge.fury.io/rb/rise-cli)
2
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3
+ [![Code Climate](https://img.shields.io/codeclimate/github/cbrnrd/rise.svg?style=flat-square)](https://codeclimate.com/github/cbrnrd/rise)
4
+ [![Build Status](https://img.shields.io/travis/cbrnrd/rise.svg?style=flat-square)](https://travis-ci.org/cbrnrd/rise)
5
+ [![Gem](https://img.shields.io/gem/v/rise-cli.svg?style=flat-square)](https://rubygems.org/gems/rise-cli)
6
+ [![Gem](https://img.shields.io/gem/dt/rise-cli.svg?style=flat-square)](https://rubygems.org/gems/rise-cli)
7
+ [![license](https://img.shields.io/github/license/mashape/apistatus.svg?style=flat-square)](https://github.com/cbrnrd/rise/blob/master/LICENSE)
5
8
 
6
9
  # Usage
7
10
 
@@ -28,7 +31,7 @@ In order to get rise up and running, there's 2 ways you can install it.
28
31
 
29
32
  ## Built With
30
33
 
31
- - [Rubygems](https://rubygems.org) - the Ruby community's gem hosting service
34
+ - [RubyGems](https://rubygems.org) - the Ruby community's gem hosting service
32
35
  - [Atom](https://atom.io/) - A hackable text editor for the 21st Century
33
36
  - [DigitalOcean](https://digitalocean.com) - Used for server hosting
34
37
 
@@ -36,9 +39,16 @@ In order to get rise up and running, there's 2 ways you can install it.
36
39
 
37
40
  Please read [CONTRIBUTING.md](https://github.com/cbrnrd/rise/blob/master/CONTRIBUTING.md) for details on our code of conduct, and the process for submitting a pull requests.
38
41
 
42
+ ## Features
43
+ - No need to install git, svn, or any other version control software.
44
+ - No complex cloud setup
45
+ - Extremely fast upload speeds
46
+ - Unlimited unique URL's
47
+ - No manual setup of websites
48
+ - Your services are always served over a secure connection
49
+ - Open source so that you can know exactly what code is runnning on your computer.
39
50
 
40
51
  ## Coming soon
41
- - rise.sh registration and 24/7 server uptime
42
52
  - gzip file transfer
43
53
  - actual use of the password hash for secure uploads
44
54
 
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
data/TODO.txt CHANGED
@@ -1,3 +1,6 @@
1
1
  TODO things for rise:
2
2
  * FIX THE DAMN AUTH ARCHITECTURE SO IT WORKS DAMN IT
3
3
  * Add a .keyfile to each upload containing a private key. This file will be used to make sure that the same uuid can't be uploaded to twice and for a future file deletion method.
4
+ * Add said file deletion method
5
+ * Limit uploads to 50MB
6
+ * Add GZIP file uploads
data/bin/console CHANGED
@@ -1,14 +1,14 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "rise"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "rise"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/rise CHANGED
@@ -34,7 +34,7 @@ OptionParser.new do |opts|
34
34
  end
35
35
  end.parse!(ARGV)
36
36
 
37
- if Rise::Util.is_first_run?
37
+ if Rise::Util.first_run?
38
38
  Rise::Util.setup
39
39
  puts "\nPlease run the `rise` command again to upload your files."
40
40
  exit 0
@@ -44,17 +44,16 @@ result_url = ''
44
44
  uploader = Rise::Transport::Uploader.new(options[:directory]) unless options[:directory].nil?
45
45
  uploader = Rise::Transport::Uploader.new(Dir.pwd) if options[:directory].nil?
46
46
 
47
-
48
47
  puts Paint['Thanks for using Rise! Your local source for serverless deployment!', '#95a5a6']
49
48
 
50
49
  Whirly.start(spinner: 'dots', status: "Uploading files (#{uploader.total_files} total files)") do
51
50
  beginning_time = Time.now
52
- result_url = uploader.upload!(options[:verbose]) # Do the file upload
51
+ result_url = uploader.upload!(options[:verbose]) # Do the file upload
53
52
 
54
53
  Whirly.status = 'Done!\n'
55
54
  Clipboard.copy(result_url)
56
55
  print Paint["Your url is: #{result_url} (copied to clipboard) ", :bold]
57
- puts Paint["[#{((Time.now - beginning_time)).round(2)}s]", "#95a5a6"]
56
+ puts Paint["[#{((Time.now - beginning_time)).round(2)}s]", '#95a5a6']
58
57
 
59
58
  puts Paint['Deployment successful!', '#3498db']
60
59
  end
@@ -4,8 +4,11 @@ AUTH_PORT = 4567.freeze
4
4
  UPLOAD_PORT = 8080.freeze
5
5
 
6
6
  module Rise
7
+ #
8
+ # Holds constants used throughout the framework
9
+ #
7
10
  module Constants
8
- VERSION = '0.1.6'
11
+ VERSION = '0.1.7'
9
12
  EMAIL = '0xCB@protonmail.com'
10
13
  AUTHORS = ['Carter Brainerd']
11
14
  NAME = 'rise-cli'
@@ -1,28 +1,31 @@
1
- ##
2
- # This file handles all communication to the Upto servers
3
- ##
4
1
  require 'rex/text'
5
2
  require 'uri'
6
3
  require 'json'
7
4
  require 'http'
8
5
 
9
6
  module Rise
7
+ #
8
+ # Handles all communication with the rise upload server
9
+ #
10
10
  module Transport
11
-
12
11
  # Handles uploading files
13
12
  class Uploader
14
-
15
- attr_reader :folder_path, :total_files, :include_folder, :uuid, :current_file
13
+ attr_reader :folder_path, :total_files, :include_folder
14
+ attr_reader :uuid, :current_file
16
15
  attr_accessor :files
17
16
 
18
- def initialize(folder_path, include_folder=true)
17
+ def initialize(folder_path, include_folder = true)
19
18
  @folder_path = folder_path
20
19
  @files = Dir.glob("#{File.absolute_path(folder_path)}/**/*")
21
20
  @total_files = @files.length
22
21
  @include_folder = include_folder
23
- @uuid = "#{File.basename(File.absolute_path(folder_path))}-#{Rex::Text::rand_text_alphanumeric(8)}" # Structure: foldername-8RNDLTRS
22
+ @uuid = "#{File.basename(File.absolute_path(folder_path))}-#{Rex::Text.rand_text_alphanumeric(8)}" # Structure: foldername-8RNDLTRS
24
23
  end
25
24
 
25
+ #
26
+ # Uploads the files from +folder_path+ to the upload server
27
+ # @return String the final URL of the uploaded contents
28
+ #
26
29
  def upload!(*)
27
30
  upload_uri_base = "http://rise.sh:8080/api/v1/#{@uuid}"
28
31
  access_uri = "https://rise.sh/#{@uuid}"
@@ -34,18 +37,18 @@ module Rise
34
37
  ordered_files = files.sort_by(&:length)
35
38
  ordered_files.each do |f|
36
39
  isdir = File.directory?(f)
37
- final_path = File.absolute_path(f).gsub(File.expand_path(folder_path), '')
40
+ final_path = File.absolute_path(f).gsub(
41
+ File.expand_path(folder_path), '')
38
42
  uri = URI.parse("#{upload_uri_base}/#{final_path}?dir=#{isdir}")
39
43
  begin
40
- HTTP.put(uri.to_s, :body => File.read(f))
44
+ HTTP.put(uri.to_s, body: File.read(f))
41
45
  rescue Errno::EISDIR
42
- HTTP.put(uri.to_s, :body => '')
46
+ HTTP.put(uri.to_s, body: '')
43
47
  next
44
48
  end
45
49
  end
46
- return access_uri
50
+ access_uri
47
51
  end
48
-
49
52
  end
50
53
  end
51
54
  end
data/lib/core/util.rb CHANGED
@@ -8,16 +8,15 @@ require 'tempfile'
8
8
  require 'whirly'
9
9
  require_relative 'constants'
10
10
 
11
- #
12
- # Utility methods
13
- #
14
11
  module Rise
12
+ #
13
+ # Utility methods
14
+ #
15
15
  module Util
16
-
17
16
  #
18
17
  # Checks if rise is being run for the first time
19
18
  #
20
- def self.is_first_run?
19
+ def self.first_run?
21
20
  !File.directory?(File.join(Dir.home, '.rise'))
22
21
  end
23
22
 
@@ -25,27 +24,29 @@ module Rise
25
24
  # Check for a new version of the gem
26
25
  #
27
26
  def self.check_for_update!
28
- begin
29
- output = ''
30
- temp = Tempfile.new('rise-updater-output')
31
- path = temp.path
32
- system("gem outdated > #{path}")
33
- output << temp.read
34
- if output.include? 'rise-cli'
35
- Whirly.start(spinner: 'line', status: Paint['New version available, updating...', 'blue']) do
36
- system("gem uninstall rise-cli -v #{Rise::Constants::VERSION} > /dev/null")
37
- system("gem install rise-cli > /dev/null")
38
- puts Paint["Update complete, just run #{Paint['`rise`', '#3498db']} to deploy"]
39
- end
27
+ output = ''
28
+ temp = Tempfile.new('rise-updater-output')
29
+ path = temp.path
30
+ system("gem outdated > #{path}")
31
+ output << temp.read
32
+ if output.include? 'rise-cli'
33
+ Whirly.start(
34
+ spinner: 'line',
35
+ status: Paint['New version available, updating...', 'blue']
36
+ ) do
37
+ system("gem uninstall rise-cli -v #{Rise::Constants::VERSION} > /dev/null")
38
+ system("gem install rise-cli > /dev/null")
39
+ puts Paint["Update complete, just run #{Paint['`rise`', '#3498db']} to deploy"]
40
40
  end
41
- rescue Exception => e
42
- puts "Unable to check for updates. Error: #{Paint[e.message, 'red']}"
43
- exit 1
44
- ensure
45
- temp.close
46
- temp.unlink
47
41
  end
42
+ rescue StandardError => e
43
+ puts "Unable to check for updates. Error: #{Paint[e.message, 'red']}"
44
+ exit 1
45
+ ensure
46
+ temp.close
47
+ temp.unlink
48
48
  end
49
+
49
50
  #
50
51
  # Creates all of the necessary files and login information
51
52
  #
@@ -54,63 +55,21 @@ module Rise
54
55
  FileUtils.mkdir(RISE_DATA_DIR)
55
56
  FileUtils.mkdir(File.join(RISE_DATA_DIR, 'auth'))
56
57
 
57
- #TODO Reimplement when the backend server actually works
58
- # Get the input from the user
59
- #print Paint['1. Log in\n2. Sign up\n > ', :bold]
60
- #while (choice = gets.chomp!)
61
- # if choice == '1'
62
- # login
63
- # break
64
- # elsif choice == '2'
65
- # signup
66
- # break
67
- # else
68
- # puts Paint['Please type `1` or `2`', :red]
69
- # next
70
- # end
71
- #end
72
-
73
- end
74
-
75
- end
76
- end
77
-
78
- # DO NOT USE
79
- def login
80
-
81
- print '\nEmail: '
82
- email = gets.chomp!
83
- print '\nPassword: '
84
- password = STDIN.noecho(&:gets)
85
- hash = Digest::SHA256.hexdigest(password)
86
- res = HTTP.post("http://#{DOMAIN}:#{AUTH_PORT}/login?email=#{email}&hash=#{hash}")
87
- if res.code == 200
88
- puts Paint['\nLogin successful!', :green, :bold]
89
- else
90
- puts Paint['\nLogin failed!', :red, :bold]
91
- puts "Printing error: #{res.code}: #{res.body}"
92
- end
93
- end
94
-
95
- # DO NOT USE
96
- def signup
97
- print '\nEmail: '
98
- email = gets.chomp!
99
- print '\nPassword: '
100
- password = STDIN.noecho(&:gets)
101
- hash = Digest::SHA256.hexdigest(password)
102
- res = HTTP.post("http://#{DOMAIN}:#{AUTH_PORT}/signup?email=#{email}&hash=#{hash}")
103
- if res.code == 200
104
- puts Paint['\nSignup successful!', :green, :bold]
105
- File.open(File.join(RISE_DATA_DIR, 'auth', 'creds.json'), 'a') do |f|
106
- creds_hash = {
107
- 'email' => email,
108
- 'hash' => hash
109
- }
110
- f.puts(creds_hash.to_json)
58
+ # TODO: Reimplement when the backend server actually works
59
+ # Get the input from the user
60
+ # print Paint['1. Log in\n2. Sign up\n > ', :bold]
61
+ # while (choice = gets.chomp!)
62
+ # if choice == '1'
63
+ # login
64
+ # break
65
+ # elsif choice == '2'
66
+ # signup
67
+ # break
68
+ # else
69
+ # puts Paint['Please type `1` or `2`', :red]
70
+ # next
71
+ # end
72
+ # end
111
73
  end
112
- elsif res.code == 409 # user already exists
113
- puts Paint['\nSignup failed!', :red, :bold]
114
- puts "Printing error: #{res.body}"
115
74
  end
116
75
  end
data/rise-cli.gemspec CHANGED
@@ -5,17 +5,16 @@ require 'core'
5
5
  Gem::Specification.new do |s|
6
6
  s.name = Rise::Constants::NAME
7
7
  s.version = Rise::Constants::VERSION
8
- s.executables = ['rise', 'setup', 'console']
8
+ s.executables = %w[rise setup console]
9
9
  s.date = Time.now.strftime('%Y-%m-%d')
10
- s.summary = "Simple serverless website deployment"
10
+ s.summary = 'Simple serverless website deployment'
11
11
  s.authors = Rise::Constants::AUTHORS
12
12
  s.email = Rise::Constants::EMAIL
13
13
  s.files = `git ls-files`.split($/).reject { |file|
14
- file =~ /^server|^spec|^pkg/
15
- }
16
- s.homepage =
17
- 'http://rubygems.org/gems/rise-cli'
18
- s.license = 'MIT'
14
+ file =~ /^server|^spec|^pkg/
15
+ }
16
+ s.homepage = 'http://rubygems.org/gems/rise-cli'
17
+ s.license = 'MIT'
19
18
 
20
19
  s.add_runtime_dependency 'clipboard'
21
20
  s.add_runtime_dependency 'http'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rise-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carter Brainerd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-09 00:00:00.000000000 Z
11
+ date: 2017-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clipboard