ruby-traveler 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5a96af732a35fc59869600cec67624e7e28a0393
4
+ data.tar.gz: f649bd8aca31b7c2745c6857690bbc8964c95f52
5
+ SHA512:
6
+ metadata.gz: a873546f84b2b33c59d3f0bb27ed3d7bafb36f68670f6ea51ec27e668d741007618d4d12027d9b2cf9df34b4576a5e82ed9b7fc1455ebd3e056a9ae9770c4a14
7
+ data.tar.gz: 35d4e2cd91c10809b5366f429e991bf9b89e1d4a1fe15983dd9fc17531ecf369f421867aba544911f105890df71f2bc8654fb6816893449c84412e35d61b351f
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "ruby-traveler"
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
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/bin/travel ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/ruby-traveler'
4
+ require_relative '../lib/generators/project'
5
+
6
+ module RubyTraveler
7
+ require 'thor'
8
+
9
+ class Cli < Thor
10
+
11
+ desc "version", "Show version info"
12
+ def version
13
+ puts "RubyTraveler - #{RubyTraveler::VERSION}"
14
+ end
15
+
16
+ register(Project, 'new', 'new NAME', 'Generate a new traveling ruby project.')
17
+ tasks["new"].options = Project.class_options
18
+
19
+ private
20
+
21
+ def self.source_root
22
+ File.expand_path File.join(File.dirname(__FILE__), "../lib/templates/")
23
+ end
24
+
25
+ end
26
+ end
27
+
28
+ RubyTraveler::Cli.start(ARGV)
@@ -0,0 +1,37 @@
1
+ module RubyTraveler
2
+ require 'thor'
3
+
4
+ class Project < Thor::Group
5
+ include Thor::Actions
6
+
7
+ argument :name, type: :string, desc: "Project name"
8
+
9
+ # class_option :platforms, type: :array, desc: "Build platforms", default: ['osx','linux-x86','linux-x86_64']
10
+
11
+ def vars
12
+ @name = name
13
+ end
14
+
15
+ def structure
16
+ empty_directory "#{@name}/packaging"
17
+ template "app.rb.erb", "#{@name}/lib/app/app.rb"
18
+ template "Rakefile.erb", "#{@name}/Rakefile"
19
+ template "Gemfile.erb", "#{@name}/Gemfile"
20
+ template "wrapper.sh.erb", "#{@name}/packaging/wrapper.sh"
21
+ template "bundler-config.erb", "#{@name}/packaging/bundler-config"
22
+ chmod "#{@name}/packaging/wrapper.sh", "+x"
23
+ end
24
+
25
+ def install
26
+ inside @name do
27
+ run "bundle"
28
+ run "rake package DIR_ONLY=1"
29
+ end
30
+ end
31
+
32
+ private
33
+ def self.source_root
34
+ File.expand_path File.join(File.dirname(__FILE__), "../templates/project/")
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,5 @@
1
+ require "ruby-traveler/version"
2
+
3
+ module RubyTraveler
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,3 @@
1
+ module RubyTraveler
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'faker'
4
+
5
+ group :development do
6
+ gem 'rake'
7
+ end
@@ -0,0 +1,78 @@
1
+ # For Bundler.with_clean_env
2
+ require 'bundler/setup'
3
+
4
+ PACKAGE_NAME = "<%= @name %>"
5
+ VERSION = "1.0.0"
6
+ TRAVELING_RUBY_VERSION = "20150210-2.1.5"
7
+
8
+ desc "Package your app"
9
+ task :package => ['package:linux:x86', 'package:linux:x86_64', 'package:osx']
10
+
11
+ namespace :package do
12
+ namespace :linux do
13
+ desc "Package your app for Linux x86"
14
+ task :x86 => [:bundle_install, "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86.tar.gz"] do
15
+ create_package("linux-x86")
16
+ end
17
+
18
+ desc "Package your app for Linux x86_64"
19
+ task :x86_64 => [:bundle_install, "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86_64.tar.gz"] do
20
+ create_package("linux-x86_64")
21
+ end
22
+ end
23
+
24
+ desc "Package your app for OS X"
25
+ task :osx => [:bundle_install, "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx.tar.gz"] do
26
+ create_package("osx")
27
+ end
28
+
29
+ desc "Install gems to local directory"
30
+ task :bundle_install do
31
+ if RUBY_VERSION !~ /^2\.1\./
32
+ abort "You can only 'bundle install' using Ruby 2.1, because that's what Traveling Ruby uses."
33
+ end
34
+ sh "rm -rf packaging/tmp"
35
+ sh "mkdir packaging/tmp"
36
+ sh "cp Gemfile Gemfile.lock packaging/tmp/"
37
+ Bundler.with_clean_env do
38
+ sh "cd packaging/tmp && env BUNDLE_IGNORE_CONFIG=1 bundle install --path ../vendor --without development"
39
+ end
40
+ sh "rm -rf packaging/tmp"
41
+ sh "rm -f packaging/vendor/*/*/cache/*"
42
+ end
43
+ end
44
+
45
+ file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86.tar.gz" do
46
+ download_runtime("linux-x86")
47
+ end
48
+
49
+ file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86_64.tar.gz" do
50
+ download_runtime("linux-x86_64")
51
+ end
52
+
53
+ file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx.tar.gz" do
54
+ download_runtime("osx")
55
+ end
56
+
57
+ def create_package(target)
58
+ package_dir = "#{PACKAGE_NAME}-#{VERSION}-#{target}"
59
+ sh "rm -rf #{package_dir}"
60
+ sh "mkdir #{package_dir}"
61
+ sh "cp -r lib #{package_dir}/"
62
+ sh "mkdir -p #{package_dir}/lib/ruby"
63
+ sh "tar -xzf packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz -C #{package_dir}/lib/ruby"
64
+ sh "cp packaging/wrapper.sh #{package_dir}/<%= @name %>"
65
+ sh "cp -pR packaging/vendor #{package_dir}/lib/"
66
+ sh "cp Gemfile Gemfile.lock #{package_dir}/lib/vendor/"
67
+ sh "mkdir #{package_dir}/lib/vendor/.bundle"
68
+ sh "cp packaging/bundler-config #{package_dir}/lib/vendor/.bundle/config"
69
+ if !ENV['DIR_ONLY']
70
+ sh "tar -czf #{package_dir}.tar.gz #{package_dir}"
71
+ sh "rm -rf #{package_dir}"
72
+ end
73
+ end
74
+
75
+ def download_runtime(target)
76
+ url = "https://d6r77u77i8pq3.cloudfront.net/releases"
77
+ sh "cd packaging && curl -L -O --fail #{url}/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz"
78
+ end
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require 'faker'
3
+ puts "hello #{Faker::Name.name}"
@@ -0,0 +1,3 @@
1
+ BUNDLE_PATH: .
2
+ BUNDLE_WITHOUT: development
3
+ BUNDLE_DISABLE_SHARED_GEMS: '1'
@@ -0,0 +1,13 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ # Figure out where this script is located.
5
+ SELFDIR="`dirname \"$0\"`"
6
+ SELFDIR="`cd \"$SELFDIR\" && pwd`"
7
+
8
+ # Tell Bundler where the Gemfile and gems are.
9
+ export BUNDLE_GEMFILE="$SELFDIR/lib/vendor/Gemfile"
10
+ unset BUNDLE_IGNORE_CONFIG
11
+
12
+ # Run the actual app using the bundled Ruby interpreter, with Bundler activated.
13
+ exec "$SELFDIR/lib/ruby/bin/ruby" -rbundler/setup "$SELFDIR/lib/app/app.rb"
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-traveler
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Alex Clink
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-04-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '4.2'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: thor
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.19.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.19.1
83
+ description: Generates the scaffolding for a new traveling ruby project
84
+ email:
85
+ - code@alexclink.com
86
+ executables:
87
+ - travel
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - bin/console
92
+ - bin/setup
93
+ - bin/travel
94
+ - lib/generators/project.rb
95
+ - lib/ruby-traveler.rb
96
+ - lib/ruby-traveler/version.rb
97
+ - lib/templates/project/Gemfile.erb
98
+ - lib/templates/project/Rakefile.erb
99
+ - lib/templates/project/app.rb.erb
100
+ - lib/templates/project/bundler-config.erb
101
+ - lib/templates/project/wrapper.sh.erb
102
+ homepage:
103
+ licenses:
104
+ - MIT
105
+ metadata: {}
106
+ post_install_message:
107
+ rdoc_options: []
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ requirements: []
121
+ rubyforge_project:
122
+ rubygems_version: 2.4.8
123
+ signing_key:
124
+ specification_version: 4
125
+ summary: Traveling ruby project generator
126
+ test_files: []