vagrant-protobox 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 54594875a579b910380428ccbc1e0c8e2600527a
4
+ data.tar.gz: b83d59464d62bb5570c47a0c9fe053af73de922b
5
+ SHA512:
6
+ metadata.gz: ec36471e9f6874ff412b913342864c1a6fa439628fd97d3c0701e386b63c45fdda3d02b3524eff9a770192d1a3ed0ba325c959a3d077d62b58ecc0dbc6ad5ab2
7
+ data.tar.gz: c086d369144c4fb11c37c62bc3afc795b90a7a01b7a30235addb6a651ce24514c2ac8c3c95eca0ea987292967527e0ee001d0ef1e0dea28a397dd8dd5f8b1e81
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+
15
+ # YARD artifacts
16
+ .yardoc
17
+ _yardoc
18
+ doc/
19
+
20
+ # Protobox files
21
+ .protobox
22
+ data
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ group :development do
6
+ gem "vagrant", git: "https://github.com/mitchellh/vagrant.git"
7
+ end
8
+
9
+ group :plugins do
10
+ gem "vagrant-protobox", path: "."
11
+ end
@@ -0,0 +1,53 @@
1
+ GIT
2
+ remote: https://github.com/mitchellh/vagrant.git
3
+ revision: 240523b1aa9f328c09060cff34a211bd3f93f7ca
4
+ specs:
5
+ vagrant (1.5.1.dev)
6
+ bundler (~> 1.5.2)
7
+ childprocess (~> 0.5.0)
8
+ erubis (~> 2.7.0)
9
+ i18n (~> 0.6.0)
10
+ listen (~> 2.4.0)
11
+ log4r (~> 1.1.9, < 1.1.11)
12
+ net-scp (~> 1.1.0)
13
+ net-ssh (>= 2.6.6, < 2.8.0)
14
+ rb-kqueue (~> 0.2.0)
15
+ wdm (~> 0.1.0)
16
+
17
+ PATH
18
+ remote: .
19
+ specs:
20
+ vagrant-protobox (0.0.1)
21
+
22
+ GEM
23
+ remote: https://rubygems.org/
24
+ specs:
25
+ celluloid (0.15.2)
26
+ timers (~> 1.1.0)
27
+ childprocess (0.5.1)
28
+ ffi (~> 1.0, >= 1.0.11)
29
+ erubis (2.7.0)
30
+ ffi (1.9.3)
31
+ i18n (0.6.9)
32
+ listen (2.4.1)
33
+ celluloid (>= 0.15.2)
34
+ rb-fsevent (>= 0.9.3)
35
+ rb-inotify (>= 0.9)
36
+ log4r (1.1.10)
37
+ net-scp (1.1.2)
38
+ net-ssh (>= 2.6.5)
39
+ net-ssh (2.7.0)
40
+ rb-fsevent (0.9.4)
41
+ rb-inotify (0.9.3)
42
+ ffi (>= 0.5.0)
43
+ rb-kqueue (0.2.2)
44
+ ffi (>= 0.5.0)
45
+ timers (1.1.0)
46
+ wdm (0.1.0)
47
+
48
+ PLATFORMS
49
+ ruby
50
+
51
+ DEPENDENCIES
52
+ vagrant!
53
+ vagrant-protobox!
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Patrick Heeney
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,30 @@
1
+ # vagrant-protobox
2
+
3
+ Vagrant Protobox Plugin
4
+
5
+ ## Installation
6
+
7
+ Make sure you have downloaded and installed Vagrant 1.5 or newer from the [Vagrant downloads page](http://downloads.vagrantup.com/).
8
+
9
+ ```
10
+ vagrant plugin install vagrant-protobox
11
+ ```
12
+
13
+ ## Development
14
+
15
+ ```
16
+ bundle
17
+ bundle exec vagrant up
18
+ ```
19
+
20
+ ## Contributing
21
+
22
+ 1. Fork it
23
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
24
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
25
+ 4. Push to the branch (`git push origin my-new-feature`)
26
+ 5. Create new Pull Request
27
+
28
+ ## Authors
29
+
30
+ [Patrick Heeney](https://github.com/patrickheeney)
@@ -0,0 +1,15 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ # Check for protobox plugin
5
+ if !Vagrant.has_plugin?('vagrant-protobox')
6
+ puts "Protobox vagrant plugin missing, run the following:"
7
+ puts "bundle"
8
+ puts "bundle exec vagrant up"
9
+ exit
10
+ end
11
+
12
+ Vagrant.configure("2") do |config|
13
+ config.vm.box = "hashicorp/precise64"
14
+ config.vm.synced_folder "./", "/vagrant", id: 'vagrant-root', nfs: true
15
+ end
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'protobox'
4
+
5
+ VagrantPlugins::Protobox::Command.execute
@@ -0,0 +1,31 @@
1
+ require "pathname"
2
+
3
+ require 'vagrant-protobox/version'
4
+ require 'vagrant-protobox/plugin'
5
+
6
+ module VagrantPlugins
7
+ module Protobox
8
+ lib_path = Pathname.new(File.expand_path("../vagrant-protobox", __FILE__))
9
+ autoload :Action, lib_path.join("action")
10
+ autoload :Errors, lib_path.join("errors")
11
+
12
+ def self.logo
13
+ return <<-LOGOBLOCK
14
+ __ __
15
+ .-----.----.-----| |_.-----| |--.-----.--.--.
16
+ | _ | _| _ | _| _ | _ | _ |_ _|
17
+ | __|__| |_____|____|_____|_____|_____|__.__|
18
+ |__|
19
+ LOGOBLOCK
20
+ end
21
+
22
+ def self.system_dir(path)
23
+ @system_dir ||= path.join('.protobox')
24
+ end
25
+
26
+ # This returns the path to the source of this plugin.
27
+ def self.source_root
28
+ @source_root ||= Pathname.new(File.expand_path("../../", __FILE__))
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,27 @@
1
+ require 'vagrant/action/builder'
2
+
3
+ module VagrantPlugins
4
+ module Protobox
5
+ module Action
6
+
7
+ def self.action_install
8
+ Vagrant::Action::Builder.new.tap do |b|
9
+ b.use Install
10
+ end
11
+ end
12
+
13
+ def self.action_switch
14
+ Vagrant::Action::Builder.new.tap do |b|
15
+ b.use ConfigExistsCheck
16
+ b.use SwitchConfig
17
+ end
18
+ end
19
+
20
+ # The autoload farm
21
+ action_root = Pathname.new(File.expand_path("../action", __FILE__))
22
+ autoload :Install, action_root.join("install")
23
+ autoload :ConfigExistsCheck, action_root.join("config_exists_check")
24
+ autoload :SwitchConfig, action_root.join("switch_config")
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,29 @@
1
+ require "vagrant/plugin/manager"
2
+
3
+ module VagrantPlugins
4
+ module Protobox
5
+ module Action
6
+ class ConfigExistsCheck
7
+ def initialize(app, env)
8
+ @app = app
9
+ end
10
+
11
+ def call(env)
12
+ system_dir = Protobox.system_dir(env[:root_path])
13
+ config_name = env[:config_name]
14
+ config_dir = system_dir.join("config")
15
+ data_dir = env[:root_path].join("data", "config")
16
+ config_path = data_dir.join(config_name + ".yml")
17
+
18
+ if !File.exist?(config_path)
19
+ raise Protobox::Errors::ConfigNotFound,
20
+ name: config_name,
21
+ path: config_path
22
+ end
23
+
24
+ @app.call(env)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,122 @@
1
+ require "digest/sha1"
2
+ require "log4r"
3
+ require "pathname"
4
+ require "uri"
5
+
6
+ require 'net/http'
7
+ require 'yaml'
8
+
9
+ #
10
+ # TODO:
11
+ # - switch downloading to vagrant util
12
+ # - move yaml to a protobox/util folder
13
+ # - add meta verification
14
+ #
15
+
16
+ #require "vagrant/box_metadata"
17
+ #require "vagrant/util/downloader"
18
+ #require "vagrant/util/file_checksum"
19
+ #require "vagrant/util/platform"
20
+
21
+ module VagrantPlugins
22
+ module Protobox
23
+ module Action
24
+ class Install
25
+ # This is the size in bytes that if a file exceeds, is considered
26
+ # to NOT be metadata.
27
+ METADATA_SIZE_LIMIT = 20971520
28
+
29
+ def initialize(app, env)
30
+ @app = app
31
+ @logger = Log4r::Logger.new("protobox::action::install")
32
+ end
33
+
34
+ def call(env)
35
+
36
+ url_name = env[:install_url]
37
+
38
+ @logger.info("Downloading config: #{url_name} => config/name")
39
+
40
+ env[:ui].info("Downloading config: #{url_name} => config/name")
41
+
42
+ # Build http
43
+ uri = URI.parse(url_name.to_s)
44
+ http = Net::HTTP.new(uri.host, uri.port)
45
+
46
+ # Build request
47
+ request = Net::HTTP::Get.new(uri.request_uri)
48
+ request["User-Agent"] = "Protobox"
49
+
50
+ # Get response
51
+ response = http.request(request)
52
+
53
+ # Check for invalid resonse code
54
+ if response.code != "200"
55
+ puts "Could not fetch url: #{url_name}"
56
+ exit(-1)
57
+ end
58
+
59
+ # Store response
60
+ body = response.body.to_s
61
+
62
+ # Convert tabs to spaces
63
+ body = body.gsub!(/(?:^ {2})|\G {2}/m, " ")
64
+
65
+ # Check for yaml document starter
66
+ #if !!yaml[/^---/m]
67
+ # body = "---\n" + body
68
+ #end
69
+
70
+ # Validate response
71
+ begin
72
+ yaml_data = YAML.load(body)
73
+ rescue Exception
74
+ puts "Failed parse yaml for #{url_name}: #{$!}"
75
+ #puts "Failed parse yaml for #{url_name}"
76
+ exit(-1)
77
+ end
78
+
79
+ # Validate yaml
80
+ if !yaml_data.instance_of?(Hash)
81
+ puts "Invalid yaml for #{url_name}"
82
+ end
83
+
84
+ # Check for protobox data
85
+ if yaml_data['protobox'].nil? or yaml_data['protobox']['version'].nil? or yaml_data['protobox']['document'].nil?
86
+ puts "Document is missing protobox information"
87
+ exit(-1)
88
+ end
89
+
90
+ document = yaml_data['protobox']['document']
91
+
92
+ # Check for bad document name
93
+ if document == 'common'
94
+ puts "Invalid protobox document name"
95
+ exit(-1)
96
+ end
97
+
98
+ system_dir = Protobox.system_dir(env[:root_path])
99
+ config_dir = system_dir.join("config")
100
+ data_dir = env[:root_path].join("data", "config")
101
+ config_path = data_dir.join(document + ".yml")
102
+ config_local_path = File.join("data", "config", document + ".yml")
103
+
104
+
105
+ # Save document to file system
106
+ File.open(config_path, 'w') do |file|
107
+ file.write(body)
108
+ end
109
+
110
+ # Write the boot file
111
+ File.open(config_dir, 'w') do |file|
112
+ file.write(config_local_path)
113
+ end
114
+
115
+ env[:ui].info("You can now 'vagrant up' using the '#{document}' configuration")
116
+
117
+ @app.call(env)
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,33 @@
1
+ module VagrantPlugins
2
+ module Protobox
3
+ module Action
4
+ class SwitchConfig
5
+ def initialize(app, env)
6
+ @app = app
7
+ end
8
+
9
+ def call(env)
10
+ system_dir = Protobox.system_dir(env[:root_path])
11
+ config_name = env[:config_name]
12
+ config_dir = system_dir.join("config")
13
+ config_local_path = File.join("data", "config", config_name + ".yml")
14
+
15
+ # Create protobox dir if it doesn't exist
16
+ if !File.directory?(system_dir)
17
+ Dir.mkdir(system_dir)
18
+ end
19
+
20
+ # Write the config file
21
+ File.open(config_dir, 'w') do |file|
22
+ file.write(config_local_path)
23
+ end
24
+
25
+ env[:ui].info(I18n.t("vagrant_protobox.actions.switch_config.switched",
26
+ :name => config_name))
27
+
28
+ @app.call(env)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,70 @@
1
+ require 'optparse'
2
+
3
+ module VagrantPlugins
4
+ module Protobox
5
+ module Command
6
+ class Install < Vagrant.plugin("2", :command)
7
+ def execute
8
+ options = { verbose: false }
9
+
10
+ opts = OptionParser.new do |o|
11
+ o.banner = "Usage: vagrant protobox install [options] <url>"
12
+ o.separator ""
13
+ o.separator "Options:"
14
+ o.separator ""
15
+
16
+ o.on("-c", "--clean", "Clean any temporary download files") do |c|
17
+ options[:clean] = c
18
+ end
19
+
20
+ o.on("-f", "--force", "Overwrite an existing box if it exists") do |f|
21
+ options[:force] = f
22
+ end
23
+
24
+ o.on("--verbose", "Enable verbose output for the installation") do |v|
25
+ options[:verbose] = v
26
+ end
27
+
28
+ o.separator ""
29
+ end
30
+
31
+ # Parse the options
32
+ argv = parse_options(opts)
33
+ return if !argv
34
+
35
+ if argv.empty? || argv.length > 2
36
+ raise Vagrant::Errors::CLIInvalidUsage,
37
+ help: opts.help.chomp
38
+ end
39
+
40
+ url = argv[0]
41
+ if argv.length == 2
42
+ options[:name] = argv[0]
43
+ url = argv[1]
44
+ end
45
+
46
+ # Install the gem
47
+ #argv.each do |name|
48
+ # action(Action.action_install, {
49
+ # :plugin_entry_point => options[:entry_point],
50
+ # :plugin_version => options[:plugin_version],
51
+ # :plugin_sources => options[:plugin_sources],
52
+ # :plugin_name => name,
53
+ # :plugin_verbose => options[:verbose]
54
+ # })
55
+ #end
56
+
57
+ @env.action_runner.run(Protobox::Action.action_install, {
58
+ install_url: url,
59
+ install_name: options[:name],
60
+ install_verbose: options[:verbose],
61
+ ui: Vagrant::UI::Prefixed.new(@env.ui, "protobox"),
62
+ })
63
+
64
+ # Success, exit status 0
65
+ 0
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,70 @@
1
+ require 'optparse'
2
+
3
+ module VagrantPlugins
4
+ module Protobox
5
+ module Command
6
+ class Root < Vagrant.plugin("2", :command)
7
+ def self.synopsis
8
+ "manages protobox: installation, config, etc."
9
+ end
10
+
11
+ def initialize(argv, env)
12
+ super
13
+
14
+ @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
15
+
16
+ @subcommands = Vagrant::Registry.new
17
+
18
+ @subcommands.register(:install) do
19
+ require_relative "install"
20
+ Install
21
+ end
22
+
23
+ @subcommands.register(:switch) do
24
+ require_relative "switch"
25
+ Switch
26
+ end
27
+ end
28
+
29
+ def execute
30
+ if @main_args.include?("-h") || @main_args.include?("--help")
31
+ # Print the help for all the box commands.
32
+ return help
33
+ end
34
+
35
+ # If we reached this far then we must have a subcommand. If not,
36
+ # then we also just print the help and exit.
37
+ command_class = @subcommands.get(@sub_command.to_sym) if @sub_command
38
+ return help if !command_class || !@sub_command
39
+ @logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")
40
+
41
+ # Initialize and execute the command class
42
+ command_class.new(@sub_args, @env).execute
43
+ end
44
+
45
+ # Prints the help out for this command
46
+ def help
47
+ opts = OptionParser.new do |opts|
48
+ opts.banner = "Usage: vagrant protobox <subcommand> [<args>]"
49
+ opts.separator ""
50
+ opts.separator "Available subcommands:"
51
+
52
+ # Add the available subcommands as separators in order to print them
53
+ # out as well.
54
+ keys = []
55
+ @subcommands.each { |key, value| keys << key.to_s }
56
+
57
+ keys.sort.each do |key|
58
+ opts.separator " #{key}"
59
+ end
60
+
61
+ opts.separator ""
62
+ opts.separator "For help on any individual subcommand run `vagrant protobox <subcommand> -h`"
63
+ end
64
+
65
+ @env.ui.info(opts.help, :prefix => false)
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,39 @@
1
+ require 'optparse'
2
+
3
+ module VagrantPlugins
4
+ module Protobox
5
+ module Command
6
+ class Switch < Vagrant.plugin("2", :command)
7
+ def execute
8
+ options = { verbose: false }
9
+
10
+ opts = OptionParser.new do |o|
11
+ o.banner = "Usage: vagrant protobox switch <config>"
12
+ #o.separator ""
13
+ #o.separator "Options:"
14
+ #o.separator ""
15
+ end
16
+
17
+ # Parse the options
18
+ argv = parse_options(opts)
19
+ return if !argv
20
+
21
+ if argv.empty? || argv.length > 1
22
+ raise Vagrant::Errors::CLIInvalidUsage,
23
+ help: opts.help.chomp
24
+ end
25
+
26
+ config = argv[0]
27
+
28
+ @env.action_runner.run(Protobox::Action.action_switch, {
29
+ config_name: config,
30
+ ui: Vagrant::UI::Prefixed.new(@env.ui, "protobox"),
31
+ })
32
+
33
+ # Success, exit status 0
34
+ 0
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,19 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module Protobox
5
+ module Errors
6
+ class VagrantError < Vagrant::Errors::VagrantError
7
+ error_namespace("vagrant_protobox.errors")
8
+ end
9
+
10
+ class VersionError < VagrantError
11
+ error_key(:version_error)
12
+ end
13
+
14
+ class ConfigNotFound < VagrantError
15
+ error_key(:config_not_found)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,44 @@
1
+ begin
2
+ require 'vagrant'
3
+ rescue LoadError
4
+ raise 'The protobox plugin must be run within Vagrant.'
5
+ end
6
+
7
+ # sanity check
8
+ if Vagrant::VERSION < "1.5.0"
9
+ raise 'The protobox plugin is only compatible with Vagrant 1.5+'
10
+ end
11
+
12
+ # Add our custom translations to the load path
13
+ I18n.load_path << File.expand_path("../../../locales/en.yml", __FILE__)
14
+
15
+ module VagrantPlugins
16
+ module Protobox
17
+
18
+ def initialize
19
+ puts "here"
20
+ exit
21
+ end
22
+
23
+ class Plugin < Vagrant.plugin("2")
24
+ name "vagrant-protobox"
25
+ description <<-DESC
26
+ The `protobox` plugin allows you to interact with your getprotobox.com install.
27
+ DESC
28
+
29
+ command("protobox") do
30
+ require_relative 'command/root'
31
+ Command::Root
32
+ end
33
+
34
+
35
+
36
+ # This initializes the internationalization strings.
37
+ #def self.setup_i18n
38
+ # I18n.load_path << File.expand_path("locales/en.yml", Protobox.source_root)
39
+ # I18n.reload!
40
+ #end
41
+
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,5 @@
1
+ module VagrantPlugins
2
+ module Protobox
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ en:
2
+ vagrant_protobox:
3
+ actions:
4
+ switch_config:
5
+ switched: |-
6
+ Switch configuration to %{name}
7
+
8
+ errors:
9
+ config_not_found: |-
10
+ Could not find protobox configuration file.
11
+
12
+ Config Name: %{name}
13
+ Config Path: %{path}
@@ -0,0 +1,68 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.unshift File.expand_path("../lib", __FILE__)
3
+ require "vagrant-protobox/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "vagrant-protobox"
7
+ s.version = VagrantPlugins::Protobox::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ['Patrick Heeney']
10
+ s.email = ["patrickheeney@gmail.com"]
11
+ s.homepage = "https://getprotobox.com"
12
+ s.license = "MIT"
13
+ s.summary = "The official getprotobox.com command line helper."
14
+ s.description = "The official getprotobox.com command line helper."
15
+
16
+ s.rubyforge_project = s.name
17
+ s.post_install_message =<<eos
18
+ ********************************************************************************
19
+
20
+ Web GUI: http://getprotobox.com/
21
+
22
+ Follow @getprotobox on Twitter for announcements, updates, and news.
23
+ https://twitter.com/getprotobox
24
+
25
+ ********************************************************************************
26
+ eos
27
+
28
+ #s.files = `git ls-files`.split("\n")
29
+ #s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
30
+ #s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
31
+ #s.require_paths = ["lib"]
32
+
33
+ root_path = File.dirname(__FILE__)
34
+ all_files = Dir.chdir(root_path) { Dir.glob("**/{*,.*}") }
35
+ all_files.reject! { |file| [".", ".."].include?(File.basename(file)) }
36
+
37
+ gitignore_path = File.join(root_path, ".gitignore")
38
+ gitignore = File.readlines(gitignore_path)
39
+ gitignore.map! { |line| line.chomp.strip }
40
+ gitignore.reject! { |line| line.empty? || line =~ /^(#|!)/ }
41
+
42
+ unignored_files = all_files.reject do |file|
43
+ # Ignore any directories, the gemspec only cares about files
44
+ next true if File.directory?(file)
45
+
46
+ # Ignore any paths that match anything in the gitignore. We do
47
+ # two tests here:
48
+ #
49
+ # - First, test to see if the entire path matches the gitignore.
50
+ # - Second, match if the basename does, this makes it so that things
51
+ # like '.DS_Store' will match sub-directories too (same behavior
52
+ # as git).
53
+ #
54
+ gitignore.any? do |ignore|
55
+ File.fnmatch(ignore, file, File::FNM_PATHNAME) ||
56
+ File.fnmatch(ignore, File.basename(file), File::FNM_PATHNAME)
57
+ end
58
+ end
59
+
60
+ s.files = unignored_files
61
+ s.executables = unignored_files.map { |f| f[/^bin\/(.*)/, 1] }.compact
62
+ s.require_path = 'lib'
63
+
64
+
65
+ #s.add_development_dependency "bundler", "~> 1.3"
66
+ #s.add_development_dependency "rake"
67
+ #s.add_development_dependency "rspec"
68
+ end
metadata ADDED
@@ -0,0 +1,75 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vagrant-protobox
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Patrick Heeney
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-03-12 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: The official getprotobox.com command line helper.
14
+ email:
15
+ - patrickheeney@gmail.com
16
+ executables:
17
+ - protobox
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - Gemfile
23
+ - Gemfile.lock
24
+ - LICENSE
25
+ - README.md
26
+ - Vagrantfile
27
+ - bin/protobox
28
+ - data/config/DZq.yml
29
+ - data/config/protobox.yml
30
+ - lib/vagrant-protobox.rb
31
+ - lib/vagrant-protobox/action.rb
32
+ - lib/vagrant-protobox/action/config_exists_check.rb
33
+ - lib/vagrant-protobox/action/install.rb
34
+ - lib/vagrant-protobox/action/switch_config.rb
35
+ - lib/vagrant-protobox/command/install.rb
36
+ - lib/vagrant-protobox/command/root.rb
37
+ - lib/vagrant-protobox/command/switch.rb
38
+ - lib/vagrant-protobox/errors.rb
39
+ - lib/vagrant-protobox/plugin.rb
40
+ - lib/vagrant-protobox/version.rb
41
+ - locales/en.yml
42
+ - vagrant-protobox.gemspec
43
+ homepage: https://getprotobox.com
44
+ licenses:
45
+ - MIT
46
+ metadata: {}
47
+ post_install_message: |
48
+ ********************************************************************************
49
+
50
+ Web GUI: http://getprotobox.com/
51
+
52
+ Follow @getprotobox on Twitter for announcements, updates, and news.
53
+ https://twitter.com/getprotobox
54
+
55
+ ********************************************************************************
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ requirements: []
70
+ rubyforge_project: vagrant-protobox
71
+ rubygems_version: 2.2.2
72
+ signing_key:
73
+ specification_version: 4
74
+ summary: The official getprotobox.com command line helper.
75
+ test_files: []