gem2exe 0.1.0 → 0.3.0

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
  SHA256:
3
- metadata.gz: 97b38555a372b2b0c11df30fb582e5972c7303be11739699b73e09f6c29c5630
4
- data.tar.gz: 071321bced7fefe7376adea68eec4817a3fd5ccb0450c809b8fe3bbd7d482c3f
3
+ metadata.gz: e3bc1d21a1b618248edd3575d5041b358e5dacf97dc7d25c9cf6ec5e1c93f541
4
+ data.tar.gz: f0cd12d5a6ac070fafc7cb3a93b97d8cd5d07c888aab759ed3efc6be42e7f84f
5
5
  SHA512:
6
- metadata.gz: c49f85d1de61cb458f5c1a6a8c011a55147f9e6fb5563bd5f5f946332225162b1ddc5f1fab79ed2ee9be8533e95ecf75acbf45cf306495cd82d392ac01ae1c94
7
- data.tar.gz: 6964e9996c450167a91f097cdb2f3d716219aeda4cecc9b0761087be185ec704a395de9282bb4637a27fcc29ef084c5830fb8c5b56e319a35557f662b5802b92
6
+ metadata.gz: 6555d1e969916dfe643d869cc99ede65539bc80433f24923e5ebf9655c94df85b6365baf391eac5c7b41fc779ed37e7b143e6e7c5db11a0d52572d1eb860b7a4
7
+ data.tar.gz: 8214ca656546373782e50e0d6c061a3d7fa1063e6d7ee1ea408727bd01791974c76339807ed2cc6770f87b2b7599b5058b6f48162b873e2dad24bca750aa77f6
data/.travis.yml CHANGED
@@ -1,28 +1,54 @@
1
- sudo: true
1
+ stages:
2
+ - name: binary
3
+ if: tag IS present
2
4
 
3
- services:
4
- - docker
5
+ jobs:
6
+ include:
7
+ - stage: binary
8
+ os: linux
5
9
 
6
- env:
7
- - DOCKER_COMPOSE_VERSION=1.23.2
10
+ sudo: required
11
+ services:
12
+ - docker
8
13
 
9
- before_install:
10
- - sudo rm /usr/local/bin/docker-compose
11
- - curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
12
- - chmod +x docker-compose
13
- - sudo mv docker-compose /usr/local/bin
14
- script:
15
- - docker-compose build
16
- - docker create --name gem2exe mattipaksula/gem2exe
17
- - mkdir releases
18
- - docker cp gem2exe:/app/gem2exe releases/gem2exe-linux-amd64-${TRAVIS_TAG}
19
- - gzip releases/gem2exe-linux-amd64-${TRAVIS_TAG}
14
+ before_install:
15
+ - sudo rm /usr/local/bin/docker-compose
16
+ - curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > docker-compose
17
+ - chmod +x docker-compose
18
+ - sudo mv docker-compose /usr/local/bin
19
+ script:
20
+ - docker-compose build
21
+ - docker create --name gem2exe gem2exe
22
+ - mkdir releases
23
+ - docker cp gem2exe:/usr/local/bin/gem2exe releases/gem2exe-linux-amd64-${TRAVIS_TAG}
24
+ - chmod a+x releases/gem2exe-linux-amd64-${TRAVIS_TAG}
25
+ - gzip releases/*
26
+
27
+ - stage: binary
28
+ os: osx
29
+ rvm:
30
+ - "2.6"
31
+ script:
32
+ - gem update --system
33
+ - bundle install
34
+ - bundle exec rake
35
+ - bundle exec rake install
36
+ - bundle exec gem2exe setup
37
+ - bundle exec gem2exe local --out releases/gem2exe-darwin-amd64-${TRAVIS_TAG} gem2exe
38
+ - chmod a+x releases/gem2exe-darwin-amd64-${TRAVIS_TAG}
39
+ - gzip releases/*
20
40
 
21
41
  deploy:
22
- provider: releases
23
- api_key: "GITHUB OAUTH TOKEN"
24
- file_glob: true
25
- file: releases/*
26
- skip_cleanup: true
27
- on:
28
- tags: true
42
+ - provider: releases
43
+ api_key:
44
+ secure: "d0uXeYO/b1yb/9NgUAlUqAqDgfCgGLxPork1qIaJ5fuK0UMtqKvJp40jLhpoiGjGrc+YvVJ55otlxH5PBnofW/QaEGYJVtWMi54VZlddsszYk6wfsVQFFgVdtGVly//ImfjEIobdEBVzJp+IjX7OA6EXriCH9VxpdwC+gEL8Fi2jyxmTtM/x16ONGxYYzImrXL5iQj8ETUgPkElVaoAm9JceApnu3iwEMR1R+U9zeWUYvBYCjehg1aKkPy42Grm5m9rsYMeQ+DossCPu873lZBl3L9Pj2BpRoBVZsAaXCwARRlfh9B5lMMWVxaf7SDrk0o7r+nSGaV3BywxuM5P0JNOBeh4z3bf/CWelMF7oSC04dgNwZbvv9YR6j+gQqFpXTU74AYVLf3Zt8b5iY30z/JQtyoWcX+QVyTrfgVsoZjjzzqdEFlbjClhYUHsV2gtqixy/78EsqDkLuLL3FXcxBNd//hwBvgUJSIBqlb4Ecnfu1bxLVW/xHUQReklFAv5XhNJSAlrzLVdRdaBnFS3zjxJ11VHVZH1b+gTbBXWG3iUtS5wWZV5MmcOrc5QdZQOgtVfnmW0pRoGUzrA4S/QLUkzuhcYFodvv19UTyO9mDQgf3K9+sJ3XtcUKiTcHmg1WzFp35BGi6PVhXTtgg2LcsmHhkGxMuCu0S/ksX2mXoZw="
45
+ file_glob: true
46
+ file: releases/*
47
+ skip_cleanup: true
48
+ on:
49
+ tags: true
50
+ - provider: rubygems
51
+ api_key:
52
+ secure: "oNnsB58gFTwkBu+XpxhnFGfaMBonKghmh08NnH4naPmOH4aOkCwI2CB7UIBKq3dmZlfO9h67nVyQ9NvDVhmOrsSxkudzluIZ0RXiaz57YuWYP21j7TeyssuQIUaXEBbRuE/wb85rdYtRY+je6/vJjVZoRk524/VnWBf+guIRTY6yZWBzxwn/zECZsQgL7i9rXbaFO2Sm5XRDW//hwiIijqdBjQ3zvWeMSKh2in0GgCgbVmarYxFAV8bTXUgCOQIDM9Je4Q647430p8VpQ9kbhhSF2bdJVeeuUIMdnTel+OGjdejMoSEHIyRB1+QjPGKKXzx8JSOcON7C78af0lyZf6NEtJK4DnHfA6OJORhNSL4xvHvxlR20iiCuplOnLujzBppxnkA25ck4R5OodXkYUVT8dL+z6S2kDsnkiQ25frdHBks9MDD4AumdezhM06NbLWdwhJbN8D0B47z14ZSXOQ1zNYg2mqVidZS/qhbtlQEib70jIgGquj17ETEgTTSiyI0C5myc/rkLc1UYs8rKT7fY5VGeaaFmyHC/oQWSaM709rAJe35UvyYo6mTMBI6g/Vy8jmh1ZodXlzJE/CXfAkTI6s/zP2rABlnz3hxggE95ZEDrlO8q7v/njXGGpPjTH8HtAkqNzBDJEDRXPpB2jBuhhx75ho1YlCVYJj2lpOY="
53
+ on:
54
+ branch: master
data/Dockerfile CHANGED
@@ -1,19 +1,17 @@
1
1
  FROM ruby:2.6.0 as builder
2
2
 
3
- RUN apt-get update && apt-get install -y squashfs-tools build-essential bison curl openssl
4
-
5
- RUN curl -sL https://github.com/kontena/ruby-packer/releases/download/0.5.0%2Bextra7/rubyc-0.5.0+extra7-linux-amd64.gz | gunzip > /usr/local/bin/rubyc
6
- RUN chmod +x /usr/local/bin/rubyc
7
-
8
- RUN update-ca-certificates
9
-
10
- WORKDIR /app
3
+ WORKDIR /build
11
4
  COPY . .
12
5
 
13
- RUN rubyc --openssl-dir=/etc/ssl -o gem2exe -d /tmp/build --make-args="-j$((`nproc`+1))" gem2exe
6
+ RUN bundle install
7
+ RUN rake
8
+ RUN rake install
9
+ RUN gem2exe setup
10
+ RUN gem2exe local gem2exe
14
11
 
15
12
  # -----------
16
13
  FROM ubuntu:18.04
17
- COPY --from=builder /app/gem2exe /usr/local/bin
14
+ RUN apt-get update && apt-get install -y git-core
15
+ COPY --from=builder /build/gem2exe /usr/local/bin
18
16
  RUN /usr/local/bin/gem2exe setup
19
17
  ENTRYPOINT [ "/usr/local/bin/gem2exe" ]
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gem2exe (0.1.0)
4
+ gem2exe (0.3.0)
5
5
  clamp (= 1.3.0)
6
6
 
7
7
  GEM
@@ -29,9 +29,9 @@ PLATFORMS
29
29
 
30
30
  DEPENDENCIES
31
31
  bundler (~> 1.16)
32
+ gem2exe!
32
33
  rake (~> 10.0)
33
34
  rspec (~> 3.0)
34
- gem2exe!
35
35
 
36
36
  BUNDLED WITH
37
37
  1.16.6
data/README.md CHANGED
@@ -1,39 +1,21 @@
1
- # Gem2exe
1
+ # gem2exe
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/gem2exe`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ Uses https://github.com/kontena/ruby-packer/releases
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ ## local gems
6
6
 
7
- ## Installation
7
+ Building a local gem:
8
8
 
9
- Add this line to your application's Gemfile:
9
+ cd yourgem
10
+ gem2exe local command-to-start-gem
10
11
 
11
- ```ruby
12
- gem 'gem2exe'
13
- ```
12
+ Full options:
14
13
 
15
- And then execute:
14
+ gem2exe local --path /path/to/your/gem \
15
+ --out /build/name \
16
+ --cache-dir /tmp/cache \
17
+ command-to-start-gem
16
18
 
17
- $ bundle
19
+ ## remote gems
18
20
 
19
- Or install it yourself as:
20
-
21
- $ gem install gem2exe
22
-
23
- ## Usage
24
-
25
- TODO: Write usage instructions here
26
-
27
- ## Development
28
-
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
-
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
-
33
- ## Contributing
34
-
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/gem2exe.
36
-
37
- ## License
38
-
39
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
21
+ TODO
data/docker-compose.yml CHANGED
@@ -2,5 +2,5 @@ version: '3.7'
2
2
 
3
3
  services:
4
4
  gem2exe:
5
+ image: gem2exe
5
6
  build: .
6
- image: mattipaksula/gem2exe
data/exe/gem2exe CHANGED
@@ -8,6 +8,6 @@ require 'pathname'
8
8
  lib_path = File.expand_path('../../lib', Pathname.new(__FILE__).realpath)
9
9
  $LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
10
10
 
11
- require 'Gem2exe'
12
- require 'Gem2exe/cli'
11
+ require 'gem2exe'
12
+ require 'gem2exe/cli'
13
13
  Gem2exe::Cli::RootCommand.run
@@ -0,0 +1,42 @@
1
+ require "tmpdir"
2
+ require "fileutils"
3
+ module Gem2exe
4
+ class Builder
5
+ def initialize(path:,entrypoint:,out:,cores:nil,cache_dir:nil)
6
+ @path = path
7
+ @entrypoint = entrypoint
8
+ @out = out
9
+ @cores = (cores || self.cores+1)
10
+ @tmpdir = (cache_dir || Dir.mktmpdir)
11
+ end
12
+
13
+ def build
14
+ FileUtils.mkdir_p File.dirname(@out)
15
+
16
+ cmd = [Gem2exe.rubyc_path]
17
+ if Gem2exe.platform == "darwin"
18
+ cmd += ["--openssl-dir", "/usr/local/etc/openssl"]
19
+ else
20
+ cmd += ["--openssl-dir", "/etc/ssl"]
21
+ end
22
+ cmd += ["--root", @path]
23
+ cmd += ["-o", @out]
24
+ cmd += ["-d", @tmpdir]
25
+ cmd += ["--make-args", "-j#{@cores}"]
26
+ cmd += [@entrypoint]
27
+
28
+ Runner.run! cmd, output: true
29
+ end
30
+
31
+
32
+ protected
33
+
34
+ def cores
35
+ if Gem2exe.platform == "darwin"
36
+ Integer(`sysctl -n hw.ncpu`)
37
+ else
38
+ Integer(`nproc`)
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Gem2exe
4
+ module Cli
5
+ class LocalCommand < Clamp::Command
6
+ parameter "ENTRYPOINT", "entrypoint"
7
+ option "--cache-dir", "CACHE_DIR", "build cache dir"
8
+ option "--path", "PATH", "path to gem, defaults to working directory"
9
+ option "--out", "OUT", "executable, defaults to entrypoint"
10
+
11
+ def execute
12
+ Gem2exe.ensure_setup
13
+
14
+ out_with_path = out || entrypoint
15
+
16
+ path_expanded = if path
17
+ File.expand_path(path)
18
+ else
19
+ Dir.pwd
20
+ end
21
+
22
+ builder = Builder.new path: path_expanded, entrypoint: entrypoint, out: out_with_path, cache_dir: cache_dir
23
+ builder.build
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Gem2exe
4
+ module Cli
5
+ class RemoteCommand < Clamp::Command
6
+ parameter "GEM", "gem"
7
+ parameter "VERSION", "version"
8
+ parameter "ENTRYPOINT", "entrypoint"
9
+
10
+ option "--cache-dir", "CACHE_DIR", "build cache dir"
11
+ option "--out", "OUT", "executable, defaults to entrypoint"
12
+
13
+ def execute
14
+ Gem2exe.ensure_setup
15
+ out_with_path = out || entrypoint
16
+
17
+ unpacker = Unpacker.new gem: gem, version: version
18
+ unpacker.unpack
19
+
20
+ builder = Builder.new path: unpacker.path, entrypoint: entrypoint, out: out_with_path, cache_dir: cache_dir
21
+ builder.build
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "build_command"
4
-
5
3
  module Gem2exe
6
4
  module Cli
7
5
  class RootCommand < Clamp::Command
@@ -15,7 +13,9 @@ module Gem2exe
15
13
  subcommand ["setup"], "setup", SetupCommand
16
14
  subcommand ["uninstall"], "uninstall", UninstallCommand
17
15
 
18
- subcommand ["build"], "build", BuildCommand
16
+ subcommand ["local"], "local", LocalCommand
17
+ subcommand ["remote"], "remote", RemoteCommand
18
+
19
19
  subcommand ["version"], "Show version information", VersionCommand
20
20
 
21
21
  def self.run
@@ -3,10 +3,39 @@
3
3
  module Gem2exe
4
4
  module Cli
5
5
  class SetupCommand < Clamp::Command
6
+ option "--sudo", :flag, "use sudo"
7
+
6
8
  def execute
7
- Gem2exe.ensure_rubyc
9
+ $stderr.puts "installing dependencies ..."
10
+
11
+ if Gem2exe.platform == "darwin"
12
+ runner_opts = {
13
+ shell: true, output: true, prepend: {
14
+ stdboth: " brew: "
15
+ }
16
+ }
17
+
18
+ Runner.run! "brew install squashfs || brew upgrade squashfs || true", runner_opts
19
+ Runner.run! "brew install openssl || brew upgrade openssl || true", runner_opts
20
+ Runner.run! "curl -sL https://curl.haxx.se/ca/cacert.pem > /usr/local/etc/openssl/cacert.pem", runner_opts
21
+ else
22
+ runner_opts = {
23
+ sudo: sudo?, shell: true, output: true, prepend: {
24
+ stdboth: " apt-get: "
25
+ }
26
+ }
27
+ $stderr.puts "installing dependencies with apt-get ..."
28
+ Runner.run! "apt-get update", runner_opts
29
+ Runner.run! "apt-get install -y ruby squashfs-tools build-essential bison curl", runner_opts
30
+ end
31
+ $stderr.puts "... dependencies installed"
32
+
33
+ $stderr.puts "installing rubyc ..."
34
+ Gem2exe.download_rubyc
35
+ $stderr.puts "... rubyc installed"
8
36
 
9
- puts "ready"
37
+ puts ""
38
+ puts "setup ok"
10
39
  end
11
40
  end
12
41
  end
data/lib/gem2exe/cli.rb CHANGED
@@ -1,8 +1,11 @@
1
1
  require 'clamp'
2
+ Clamp.allow_options_after_parameters = true
2
3
 
3
4
  require_relative "cli/version_command"
4
5
  require_relative "cli/setup_command"
5
6
  require_relative "cli/uninstall_command"
6
7
 
7
- require_relative "cli/build_command"
8
+ require_relative "cli/local_command"
9
+ require_relative "cli/remote_command"
10
+
8
11
  require_relative "cli/root_command"
@@ -0,0 +1,102 @@
1
+ require "open3"
2
+
3
+ module Gem2exe
4
+ class RunnerError < StandardError
5
+ end
6
+ class RunnerBuffer
7
+ def initialize
8
+ @buffer = []
9
+ end
10
+
11
+ def <<(c)
12
+ @buffer << c
13
+ end
14
+
15
+ def to_s
16
+ @buffer.join ""
17
+ end
18
+
19
+ def method_missing(m, *args, &block)
20
+ to_s.send m, *args, block
21
+ end
22
+ end
23
+
24
+ class Runner
25
+ def initialize(cmd, env:nil, shell:false, sudo:false, chdir:nil, output:false,prepend:{})
26
+ cmd.insert(0, "sudo") if sudo
27
+ @cmd = if shell
28
+ ["sh","-c"] + [cmd.join(" ")]
29
+ else
30
+ cmd
31
+ end
32
+
33
+ @env = (env || {})
34
+ @opts = {}
35
+ @opts[:chdir] = chdir if chdir
36
+ @output = output
37
+ @prepend = {}
38
+ if prepend[:stdboth]
39
+ @prepend[:stderr] = prepend[:stdboth]
40
+ @prepend[:stdout] = prepend[:stdboth]
41
+ else
42
+ @prepend = prepend
43
+ end
44
+
45
+ @status, @stdout, @stderr, @stdboth = nil, RunnerBuffer.new, RunnerBuffer.new, RunnerBuffer.new
46
+ end
47
+ attr_reader :status, :stdout, :stderr, :stdboth
48
+
49
+ def self.run!(cmd_string_or_array, opts={})
50
+ cmd = if cmd_string_or_array.is_a? Array
51
+ cmd_string_or_array
52
+ else
53
+ cmd_string_or_array.split(" ")
54
+ end
55
+
56
+ runner = self.new cmd, opts
57
+ runner.run
58
+
59
+ if runner.status.exitstatus != 0
60
+ exit 1
61
+ end
62
+
63
+ runner
64
+ end
65
+
66
+ def run
67
+ executable, *args = @cmd
68
+ stdin, stdout, stderr, wait_thr = Open3.popen3(@env, executable, *args, @opts)
69
+
70
+ stderr_thr = Thread.new do
71
+ stderr.each do |line|
72
+ @stdboth << line
73
+ @stderr << line
74
+ if @prepend[:stderr]
75
+ $stdout.print @prepend[:stderr]+line
76
+ else
77
+ $stdout.print line
78
+ end
79
+ end
80
+ end
81
+
82
+ stdout_thr = Thread.new do
83
+ stdout.each do |line|
84
+ @stdboth << line
85
+ @stderr << line
86
+
87
+ if @prepend[:stdout]
88
+ $stdout.print @prepend[:stdout]+line
89
+ else
90
+ $stdout.print line
91
+ end
92
+ end
93
+ end
94
+
95
+ wait_thr.join
96
+ stdout_thr.join
97
+ stderr_thr.join
98
+
99
+ @status = wait_thr.value
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,27 @@
1
+ require "tmpdir"
2
+
3
+ module Gem2exe
4
+ class Unpacker
5
+ def initialize(gem:,version:)
6
+ @gem = gem
7
+ @version = version
8
+ @tmpdir = Dir.mktmpdir
9
+ @path = File.join(
10
+ @tmpdir,
11
+ "#{@gem}-#{@version}"
12
+ )
13
+ end
14
+ attr_reader :path
15
+
16
+ def unpack
17
+ cmd = ["gem", "unpack", @gem, "-v", @version]
18
+
19
+ r = Runner.run! cmd, chdir: @tmpdir, output: true
20
+ unless r.stderr.start_with? "Unpacked gem:"
21
+ exit 1
22
+ end
23
+
24
+ self
25
+ end
26
+ end
27
+ end
@@ -1,3 +1,3 @@
1
1
  module Gem2exe
2
- VERSION = "0.1.0"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/gem2exe.rb CHANGED
@@ -1,31 +1,35 @@
1
1
  require "fileutils"
2
2
 
3
3
  module Gem2exe
4
- def self.cores
5
- Integer(`sysctl -n hw.ncpu`)
6
- end
7
-
8
4
  def self.uninstall
9
5
  FileUtils.rm_rf install_path
10
6
  end
11
7
 
12
- def self.ensure_rubyc
13
- return if File.exists? self.rubyc_path
8
+ def self.download_rubyc
9
+ return if File.exist? rubyc_path
14
10
  FileUtils.mkdir_p File.dirname(self.rubyc_path)
15
11
 
16
12
  rubyc_url = if self.platform == "darwin"
17
- # "https://github.com/kontena/ruby-packer/releases/download/2.6.0-0.6.0/rubyc-2.6.0-0.6.0-osx-amd64.gz"
18
- "https://dl.bintray.com/kontena/ruby-packer/0.5.0-dev/rubyc-0.5.0-extra2-darwin-amd64.gz"
13
+ "https://github.com/kontena/ruby-packer/releases/download/2.6.0-0.6.0/rubyc-2.6.0-0.6.0-osx-amd64.gz"
19
14
  else
20
15
  "https://github.com/kontena/ruby-packer/releases/download/2.6.0-0.6.0/rubyc-2.6.0-0.6.0-linux-amd64.gz"
21
16
  end
22
17
 
23
18
  $stderr.puts "downloading rubyc from #{rubyc_url}"
24
- `sh -c "curl -sL #{rubyc_url} | gunzip > #{self.rubyc_path}"`
25
- `chmod +x #{self.rubyc_path}`
19
+
20
+ Runner.run! "curl -sL #{rubyc_url} | gunzip > #{self.rubyc_path}", shell: true
21
+ Runner.run! "chmod +x #{self.rubyc_path}"
22
+
26
23
  $stderr.puts "installed in #{self.rubyc_path}"
27
24
  end
28
25
 
26
+ def self.ensure_setup
27
+ unless File.exists? self.rubyc_path
28
+ $stderr.puts "rubyc not found - run: gem2exe setup"
29
+ exit 1
30
+ end
31
+ end
32
+
29
33
  def self.rubyc_path
30
34
  install_path_parts = [self.install_path]
31
35
  install_path_parts << self.platform
@@ -48,3 +52,6 @@ module Gem2exe
48
52
  end
49
53
 
50
54
  require_relative "gem2exe/version"
55
+ require_relative "gem2exe/builder"
56
+ require_relative "gem2exe/unpacker"
57
+ require_relative "gem2exe/runner"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem2exe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matti Paksula
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-20 00:00:00.000000000 Z
11
+ date: 2019-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -89,12 +89,16 @@ files:
89
89
  - exe/gem2exe
90
90
  - gem2exe.gemspec
91
91
  - lib/gem2exe.rb
92
+ - lib/gem2exe/builder.rb
92
93
  - lib/gem2exe/cli.rb
93
- - lib/gem2exe/cli/build_command.rb
94
+ - lib/gem2exe/cli/local_command.rb
95
+ - lib/gem2exe/cli/remote_command.rb
94
96
  - lib/gem2exe/cli/root_command.rb
95
97
  - lib/gem2exe/cli/setup_command.rb
96
98
  - lib/gem2exe/cli/uninstall_command.rb
97
99
  - lib/gem2exe/cli/version_command.rb
100
+ - lib/gem2exe/runner.rb
101
+ - lib/gem2exe/unpacker.rb
98
102
  - lib/gem2exe/version.rb
99
103
  homepage: https://github.com/matti/gem2exe
100
104
  licenses:
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "tmpdir"
4
-
5
- module Gem2exe
6
- module Cli
7
- class BuildCommand < Clamp::Command
8
- parameter "NAME", "name"
9
- option "--cache-dir", "CACHE_DIR", "build cache dir"
10
-
11
- def execute
12
- cores = Gem2exe.cores + 1
13
- tmpdir = if cache_dir
14
- cache_dir
15
- else
16
- Dir.mktmpdir
17
- end
18
-
19
- if Gem2exe.platform == "darwin"
20
- `"#{Gem2exe.rubyc_path}" --openssl-dir=/usr/local/etc/openssl -o "#{name}" -d "#{tmpdir}" --make-args="-j#{cores} --silent" #{name}`
21
- else
22
- `"#{Gem2exe.rubyc_path}" --openssl-dir=/etc/ssl rubyc -o "#{name}" -d "#{tmpdir}" --make-args="-j#{cores}" #{name}`
23
- end
24
- end
25
- end
26
- end
27
- end