projectionist-projects 0.1.3 → 0.1.4
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 +4 -4
- data/.gitignore +1 -0
- data/.rspec +2 -0
- data/Guardfile +13 -0
- data/bin/rspec +16 -0
- data/exe/projection +78 -31
- data/lib/projectionist/projects.rb +34 -1
- data/lib/projectionist/projects/version.rb +1 -1
- data/projectionist-projects.gemspec +4 -0
- data/projections/gem.projections.json +16 -0
- metadata +62 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d94b54468a1ad385f2304a3fd79eb825367656f5
|
4
|
+
data.tar.gz: 08d9a4dec50141c88a7cf1e467e6c0eb53235cbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc99640426ee0002b05fa9dcd97862dcbaba9378e840d41f250a1fc3baf30870de07f6c8e4ab5fb5271304d447b31774cd9f8e6e6bf03a55b3bfe5b56dad84a2
|
7
|
+
data.tar.gz: b0f1554a2492b15ce6bb5bb60df039214df38cf4b7d71c91368ec1a8bf4989a0fe13afdacb4762f3f0c8ae0ea7a82de90a30cd5b4c93ea99455672dfb0e44874
|
data/.gitignore
CHANGED
data/.rspec
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
guard :rspec, cmd: "./bin/rspec" do
|
2
|
+
require "guard/rspec/dsl"
|
3
|
+
dsl = Guard::RSpec::Dsl.new(self)
|
4
|
+
|
5
|
+
rspec = dsl.rspec
|
6
|
+
watch(rspec.spec_helper) { rspec.spec_dir }
|
7
|
+
watch(rspec.spec_support) { rspec.spec_dir }
|
8
|
+
watch(rspec.spec_files)
|
9
|
+
|
10
|
+
# Ruby files
|
11
|
+
ruby = dsl.ruby
|
12
|
+
dsl.watch_spec_files_for(ruby.lib_files)
|
13
|
+
end
|
data/bin/rspec
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'rspec' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('rspec-core', 'rspec')
|
data/exe/projection
CHANGED
@@ -6,60 +6,107 @@ require "highline/import"
|
|
6
6
|
require "pathname"
|
7
7
|
require "fileutils"
|
8
8
|
require "optparse"
|
9
|
+
require "projectionist/projects"
|
9
10
|
|
10
11
|
include FileUtils
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
include Projectionist::Projects
|
14
|
+
extend Projectionist::Projects
|
15
|
+
|
16
|
+
AVAILABLE_FILES = Dir["#{DOWNLOAD_DIRECTORY}/*.projections.json"]
|
17
|
+
DOWNLOADED_FILES = Hash[AVAILABLE_FILES.map do |filename|
|
16
18
|
name = Pathname.new(filename).basename(".projections.json").to_s
|
17
19
|
[name, filename]
|
18
20
|
end]
|
19
21
|
|
22
|
+
def colorize(string, *colors)
|
23
|
+
colors = Array(colors)
|
24
|
+
HighLine::String.new(string).color(*colors)
|
25
|
+
end
|
26
|
+
|
27
|
+
def setup_cache_directory
|
28
|
+
unless File.exist? DOWNLOAD_DIRECTORY
|
29
|
+
puts "create projection-projects cache directory (y/N)? #{DOWNLOAD_DIRECTORY}"
|
30
|
+
mkdir_p DOWNLOAD_DIRECTORY if "y" == gets.strip.downcase
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
20
34
|
def copy_projection(name, source, destination = "#{getwd}/.projections.json")
|
21
|
-
colored_name = HighLine::String.new(name).color(:red)
|
22
35
|
unless source
|
23
|
-
puts "#{
|
36
|
+
puts "#{colorize(name, :red)} projection was not found. Use `projection -l` to show available projection files."
|
24
37
|
exit -1
|
25
38
|
end
|
26
39
|
|
27
40
|
cp source, destination
|
28
|
-
puts "Projection #{
|
41
|
+
puts "Projection #{colorize(name, :red)} was copied to the current directory."
|
29
42
|
end
|
30
43
|
|
31
|
-
|
32
|
-
|
33
|
-
|
44
|
+
def run_interactive_shell
|
45
|
+
choose do |menu|
|
46
|
+
menu.prompt = "What type of project? "
|
47
|
+
menu.choices(*DOWNLOADED_FILES.keys) { |name| copy_projection name, DOWNLOADED_FILES[name] }
|
48
|
+
end
|
49
|
+
exit
|
50
|
+
end
|
34
51
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
52
|
+
run_interactive_shell if ARGV.count == 0
|
53
|
+
|
54
|
+
parser = OptionParser.new do |opts|
|
55
|
+
opts.banner = "Usage: projection [options]"
|
56
|
+
|
57
|
+
opts.on("-s", "--setup") do
|
58
|
+
setup_cache_directory
|
59
|
+
exit
|
60
|
+
end
|
61
|
+
|
62
|
+
opts.on("-p", "--path [name]", "Lists out the paths for the matching name") do |value|
|
63
|
+
value ||= ""
|
64
|
+
filtered = DOWNLOADED_FILES.select { |name| name.downcase.include? value.downcase }
|
65
|
+
maximum = filtered.keys.map(&:length).max
|
66
|
+
filtered.each do |name, path|
|
67
|
+
puts [
|
68
|
+
colorize(name.ljust(maximum), :bold, :blue),
|
69
|
+
colorize("=>", :cyan),
|
70
|
+
colorize(path, :red)
|
71
|
+
].join(" ")
|
43
72
|
end
|
73
|
+
exit
|
74
|
+
end
|
75
|
+
|
76
|
+
opts.on("-l", "--list", "List installed projection names") do |list|
|
77
|
+
Projectionist::Projects.fetch.each{ |fetched| puts fetched[:project] }
|
78
|
+
exit
|
79
|
+
end
|
44
80
|
|
45
|
-
|
46
|
-
|
47
|
-
|
81
|
+
opts.on("-d", "--download=DOWNLOADS", "Download projections from remote") do |downloads|
|
82
|
+
downloads = (downloads || "").split(",").map(&:strip)
|
83
|
+
|
84
|
+
catch(:server_unavailable) do
|
85
|
+
results = Projectionist::Projects.fetch
|
86
|
+
projects = results.map { |result| result[:project] }
|
87
|
+
maximum = results.map(&:length).max
|
88
|
+
filtered = downloads.any? ? (downloads & projects) : projects
|
89
|
+
|
90
|
+
filtered.each do |project|
|
91
|
+
puts "downloading: #{colorize(project.ljust(maximum), :bold, :blue)}"
|
92
|
+
Projectionist::Projects.download project: project
|
48
93
|
end
|
49
94
|
exit
|
50
95
|
end
|
51
96
|
|
52
|
-
|
53
|
-
|
54
|
-
exit
|
55
|
-
end
|
97
|
+
puts "The server is unavailable.. do you haz internets?"
|
98
|
+
exit -1
|
56
99
|
end
|
57
100
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
101
|
+
opts.on("-i", "--interactive", "Run in interactive mode") do
|
102
|
+
run_interactive_shell
|
103
|
+
end
|
104
|
+
|
105
|
+
opts.on_tail("-h", "--help") do
|
106
|
+
puts opts
|
107
|
+
exit
|
64
108
|
end
|
65
109
|
end
|
110
|
+
|
111
|
+
parser.parse!
|
112
|
+
copy_projection ARGV.first.strip, DOWNLOADED_FILES[ARGV.first.strip]
|
@@ -1,7 +1,40 @@
|
|
1
|
+
require "net/http"
|
2
|
+
require "csv"
|
1
3
|
require "projectionist/projects/version"
|
2
4
|
|
3
5
|
module Projectionist
|
4
6
|
module Projects
|
5
|
-
|
7
|
+
INDEX_ROOT = "jeremywrowe.github.io"
|
8
|
+
|
9
|
+
if ENV["TEST"]
|
10
|
+
DOWNLOAD_DIRECTORY = File.join(File.expand_path("../../..", __FILE__), "spec", "output")
|
11
|
+
else
|
12
|
+
DOWNLOAD_DIRECTORY = File.join(ENV["HOME"], ".projection-projects")
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.fetch
|
16
|
+
csv_contents = Net::HTTP.get INDEX_ROOT, "/projectionist-projects-files/downloads/index.csv"
|
17
|
+
CSV.new(csv_contents, headers: true, header_converters: :symbol)
|
18
|
+
.map(&:to_hash)
|
19
|
+
rescue SocketError
|
20
|
+
throw :server_unavailable
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.download(project:, ask_to_overwrite: true, stdin: -> { gets })
|
24
|
+
normalized_project = "#{project}.projections.json"
|
25
|
+
destination_file = File.join(DOWNLOAD_DIRECTORY, normalized_project)
|
26
|
+
|
27
|
+
if ask_to_overwrite && File.exist?(destination_file)
|
28
|
+
print "Overwrite existing file? (y/N) "
|
29
|
+
return unless stdin.call.strip.downcase == "y"
|
30
|
+
end
|
31
|
+
|
32
|
+
json_contents = Net::HTTP.get INDEX_ROOT, "/projectionist-projects-files/downloads/#{normalized_project}"
|
33
|
+
File.open(destination_file, "w") do |file|
|
34
|
+
file.write json_contents
|
35
|
+
end
|
36
|
+
rescue SocketError
|
37
|
+
throw :server_unavailable
|
38
|
+
end
|
6
39
|
end
|
7
40
|
end
|
@@ -24,4 +24,8 @@ Gem::Specification.new do |spec|
|
|
24
24
|
|
25
25
|
spec.add_development_dependency "bundler", "~> 1.10"
|
26
26
|
spec.add_development_dependency "rake", "~> 10.0"
|
27
|
+
spec.add_development_dependency "rspec", "~> 3.3.0"
|
28
|
+
spec.add_development_dependency "byebug", "~> 6.0.2"
|
29
|
+
spec.add_development_dependency "simplecov", "~> 0.10.0"
|
30
|
+
spec.add_development_dependency "guard-rspec"
|
27
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: projectionist-projects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy W. Rowe
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
@@ -52,6 +52,62 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 3.3.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 3.3.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: byebug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 6.0.2
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 6.0.2
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.10.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.10.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: guard-rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
55
111
|
description: Projectionist + vim make it easier to jump between alternate files. Configuration
|
56
112
|
of projectionist is mind numbing, I hope to reduce that by adding projectionist
|
57
113
|
project files over time.
|
@@ -63,17 +119,21 @@ extensions: []
|
|
63
119
|
extra_rdoc_files: []
|
64
120
|
files:
|
65
121
|
- ".gitignore"
|
122
|
+
- ".rspec"
|
66
123
|
- ".travis.yml"
|
67
124
|
- Gemfile
|
125
|
+
- Guardfile
|
68
126
|
- README.md
|
69
127
|
- Rakefile
|
70
128
|
- bin/console
|
129
|
+
- bin/rspec
|
71
130
|
- bin/setup
|
72
131
|
- exe/projection
|
73
132
|
- lib/projectionist/projects.rb
|
74
133
|
- lib/projectionist/projects/version.rb
|
75
134
|
- projectionist-projects.gemspec
|
76
135
|
- projections/ember.projections.json
|
136
|
+
- projections/gem.projections.json
|
77
137
|
homepage: https://github.com/jeremywrowe/projectionist-projects
|
78
138
|
licenses:
|
79
139
|
- MIT
|