ruby_leiningen 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +56 -0
  3. data/.circleci/gpg.private.enc +0 -0
  4. data/.envrc +5 -0
  5. data/.git-crypt/.gitattributes +4 -0
  6. data/.git-crypt/keys/default/0/41D2606F66C3FF28874362B61A16916844CE9D82.gpg +0 -0
  7. data/.git-crypt/keys/default/0/837D1812341A8C7F3E556D33623A196DE10A7326.gpg +0 -0
  8. data/.gitattributes +1 -0
  9. data/.gitignore +32 -0
  10. data/.rspec +2 -0
  11. data/.ruby-version +1 -0
  12. data/CODE_OF_CONDUCT.md +74 -0
  13. data/Gemfile +4 -0
  14. data/Gemfile.lock +59 -0
  15. data/LICENSE.txt +21 -0
  16. data/README.md +111 -0
  17. data/Rakefile +24 -0
  18. data/bin/console +14 -0
  19. data/bin/setup +8 -0
  20. data/config/secrets/.unlocked +1 -0
  21. data/config/secrets/ci/encryption.passphrase +1 -0
  22. data/config/secrets/ci/gpg.private +105 -0
  23. data/config/secrets/ci/gpg.public +51 -0
  24. data/config/secrets/ci/ssh.private +51 -0
  25. data/config/secrets/ci/ssh.public +1 -0
  26. data/config/secrets/rubygems/credentials +2 -0
  27. data/go +56 -0
  28. data/lib/ruby_leiningen/commands/base.rb +53 -0
  29. data/lib/ruby_leiningen/commands/check.rb +17 -0
  30. data/lib/ruby_leiningen/commands/clean.rb +17 -0
  31. data/lib/ruby_leiningen/commands/deps.rb +17 -0
  32. data/lib/ruby_leiningen/commands/mixins/profile.rb +27 -0
  33. data/lib/ruby_leiningen/commands/run.rb +35 -0
  34. data/lib/ruby_leiningen/commands/uberjar.rb +22 -0
  35. data/lib/ruby_leiningen/commands/version.rb +24 -0
  36. data/lib/ruby_leiningen/commands.rb +57 -0
  37. data/lib/ruby_leiningen/version.rb +3 -0
  38. data/lib/ruby_leiningen.rb +36 -0
  39. data/ruby_leiningen.gemspec +34 -0
  40. data/scripts/ci/common/configure-git.sh +8 -0
  41. data/scripts/ci/common/configure-rubygems.sh +16 -0
  42. data/scripts/ci/common/install-git-crypt.sh +8 -0
  43. data/scripts/ci/common/install-gpg-key.sh +19 -0
  44. data/scripts/ci/steps/prerelease.sh +16 -0
  45. data/scripts/ci/steps/release.sh +18 -0
  46. data/scripts/ci/steps/test.sh +12 -0
  47. metadata +179 -0
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDeC/IOvJFbCF0omlHrq6tZmV1Z6ygJKTM1WkFs7A/xBGya/tr/WhRvkkbv2u6sa5Lxf4d3R5xlYbxVIbmiVzHEz0QofVIqYy6LyOoW98ytKTlj4QL3qzc6dWyBf4BTmlwIoowflEpQGNHDFPiOR0/A+cAabeYQ2OoBPZUl7YvqFSCLYsUdCE3drqjoZG6YkLWBjZwHM6RW50g7Hz7Rw46xGiERZbDR5HZb+j+p2D3CIxNBsESvfa9eZRiyXBO4DBRMrgkuba61VFu7kHIkU4TfnEQ+h4TagsAuOcmh9DHokHCam2YdmQqC78RD88wDb3FGUpbnjNCaAB6dLq25P7vsseYnlgzNtA+WSx01LkBoCfUP/v/YgI5anhKdmSWDIr2f+Zl5+Eq5SJuBsp/eYSN2GZyuocsmwtwzdUaKktQOXr8mpLEUwB5kuYA500CpJOnkhaANWlYDqvwbzFeWSNH/Bugo1fMbSwKy0HRDT1/lwOZyqce5TAq88yDncNzl3gtWxXdqHWs4TIeNeYFdST94eWyEBJWjn3HfoM6DRO7kcnSw56mOpR813ZNj4ORKMaoQ/HdXZtur9Hpiu72Gr95JuZMQTvIGRszWWmvvTMiTao4WhrvzhKLJNQHNECEa6/xmn0zat22diNRz8rR+1BytqOE2oncDgYO94C1QxZ8vyQ== maintainers@infrablocks.io
@@ -0,0 +1,2 @@
1
+ ---
2
+ :rubygems_api_key: 2937a6dcdc84dd7685848a67da4c394c
data/go ADDED
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env bash
2
+
3
+ [ -n "$GO_DEBUG" ] && set -x
4
+ set -e
5
+
6
+ project_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
7
+
8
+ verbose="no"
9
+ skip_checks="no"
10
+ offline="no"
11
+
12
+ missing_dependency="no"
13
+
14
+ [ -n "$GO_DEBUG" ] && verbose="yes"
15
+ [ -n "$GO_SKIP_CHECKS" ] && skip_checks="yes"
16
+ [ -n "$GO_OFFLINE" ] && offline="yes"
17
+
18
+
19
+ if [[ "$skip_checks" = "no" ]]; then
20
+ echo "Checking for system dependencies."
21
+ ruby_version="$(cat "$project_dir"/.ruby-version)"
22
+ if ! type ruby >/dev/null 2>&1 || ! ruby -v | grep -q "$ruby_version"; then
23
+ echo "This codebase requires Ruby $ruby_version."
24
+ missing_dependency="yes"
25
+ fi
26
+
27
+ if [[ "$missing_dependency" = "yes" ]]; then
28
+ echo "Please install missing dependencies to continue."
29
+ exit 1
30
+ fi
31
+
32
+ echo "All system dependencies present. Continuing."
33
+ fi
34
+
35
+ if [[ "$offline" = "no" ]]; then
36
+ echo "Installing bundler."
37
+ if [[ "$verbose" = "yes" ]]; then
38
+ gem install --no-document bundler
39
+ else
40
+ gem install --no-document bundler > /dev/null
41
+ fi
42
+
43
+ echo "Installing ruby dependencies."
44
+ if [[ "$verbose" = "yes" ]]; then
45
+ bundle install
46
+ else
47
+ bundle install > /dev/null
48
+ fi
49
+ fi
50
+
51
+ echo "Starting rake."
52
+ if [[ "$verbose" = "yes" ]]; then
53
+ time bundle exec rake --verbose "$@"
54
+ else
55
+ time bundle exec rake "$@"
56
+ fi
@@ -0,0 +1,53 @@
1
+ require 'lino'
2
+
3
+ module RubyLeiningen
4
+ module Commands
5
+ class Base
6
+ attr_reader :binary
7
+
8
+ def initialize(binary: nil)
9
+ @binary = binary || RubyLeiningen.configuration.binary
10
+ end
11
+
12
+ def stdin
13
+ ''
14
+ end
15
+
16
+ def stdout
17
+ STDOUT
18
+ end
19
+
20
+ def stderr
21
+ STDERR
22
+ end
23
+
24
+ def execute(opts = {})
25
+ builder = instantiate_builder
26
+
27
+ do_before(opts)
28
+ configure_command(builder, opts)
29
+ .build
30
+ .execute(
31
+ stdin: stdin,
32
+ stdout: stdout,
33
+ stderr: stderr)
34
+ do_after(opts)
35
+ end
36
+
37
+ def instantiate_builder
38
+ Lino::CommandLineBuilder
39
+ .for_command(binary)
40
+ end
41
+
42
+ def do_before(opts)
43
+ end
44
+
45
+ def configure_command(builder, opts)
46
+ builder
47
+ end
48
+
49
+ def do_after(opts)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,17 @@
1
+ require 'lino'
2
+
3
+ require_relative 'base'
4
+ require_relative 'mixins/profile'
5
+
6
+ module RubyLeiningen
7
+ module Commands
8
+ class Check < Base
9
+ include Mixins::Profile
10
+
11
+ def configure_command(builder, opts)
12
+ builder = super(builder, opts)
13
+ builder.with_subcommand('check')
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'lino'
2
+
3
+ require_relative 'base'
4
+ require_relative 'mixins/profile'
5
+
6
+ module RubyLeiningen
7
+ module Commands
8
+ class Clean < Base
9
+ include Mixins::Profile
10
+
11
+ def configure_command(builder, opts)
12
+ builder = super(builder, opts)
13
+ builder.with_subcommand('clean')
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'lino'
2
+
3
+ require_relative 'base'
4
+ require_relative 'mixins/profile'
5
+
6
+ module RubyLeiningen
7
+ module Commands
8
+ class Deps < Base
9
+ include Mixins::Profile
10
+
11
+ def configure_command(builder, opts)
12
+ builder = super(builder, opts)
13
+ builder.with_subcommand('deps')
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,27 @@
1
+ module RubyLeiningen
2
+ module Commands
3
+ module Mixins
4
+ module Profile
5
+ def initialize(opts)
6
+ super(opts)
7
+ @profile = opts[:profile]
8
+ end
9
+
10
+ def for_profile(profile)
11
+ @profile = profile
12
+ self
13
+ end
14
+
15
+ def configure_command(builder, opts)
16
+ profile = opts[:profile] || @profile
17
+ if profile
18
+ builder = builder
19
+ .with_subcommand('with-profile')
20
+ .with_subcommand(profile)
21
+ end
22
+ builder
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,35 @@
1
+ require 'lino'
2
+
3
+ require_relative 'base'
4
+ require_relative 'mixins/profile'
5
+
6
+ module RubyLeiningen
7
+ module Commands
8
+ class Run < Base
9
+ include Mixins::Profile
10
+
11
+ def configure_command(builder, opts)
12
+ builder = super(builder, opts)
13
+
14
+ main_function = opts[:main_function]
15
+ arguments = opts[:arguments] || []
16
+ quote_arguments = opts[:quote_arguments]
17
+
18
+ builder = builder.with_subcommand('run') do |sub|
19
+ sub = sub.with_option('-m', main_function) if main_function
20
+ sub = sub.with_flag('--quote-args') if quote_arguments
21
+ sub
22
+ end
23
+
24
+ if arguments.any?
25
+ builder = builder.with_argument("--")
26
+ builder = arguments.inject(builder) do |b, argument|
27
+ b.with_argument(argument)
28
+ end
29
+ end
30
+
31
+ builder
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,22 @@
1
+ require 'lino'
2
+
3
+ require_relative 'base'
4
+ require_relative 'mixins/profile'
5
+
6
+ module RubyLeiningen
7
+ module Commands
8
+ class Uberjar < Base
9
+ include Mixins::Profile
10
+
11
+ def configure_command(builder, opts)
12
+ builder = super(builder, opts)
13
+
14
+ main_namespace = opts[:main_namespace]
15
+
16
+ builder = builder.with_subcommand('uberjar')
17
+ builder = builder.with_argument(main_namespace) if main_namespace
18
+ builder
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ require 'lino'
2
+ require_relative 'base'
3
+
4
+ module RubyLeiningen
5
+ module Commands
6
+ class Version < Base
7
+ def stdout
8
+ @version_string
9
+ end
10
+
11
+ def do_before(opts)
12
+ @version_string = StringIO.new
13
+ end
14
+
15
+ def configure_command(builder, opts)
16
+ builder.with_argument('version')
17
+ end
18
+
19
+ def do_after(opts)
20
+ @version_string.string.gsub(/\n/, '')
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,57 @@
1
+ require 'active_support'
2
+ require 'active_support/core_ext/string/inflections'
3
+
4
+ require_relative 'commands/check'
5
+ require_relative 'commands/clean'
6
+ require_relative 'commands/deps'
7
+ require_relative 'commands/run'
8
+ require_relative 'commands/uberjar'
9
+ require_relative 'commands/version'
10
+
11
+ module RubyLeiningen
12
+ module Commands
13
+ class << self
14
+ def define_custom_command(name, options = {}, &config_block)
15
+ klass_name = name.classify
16
+ config = (config_block || lambda { |conf| conf }).call(Config.new)
17
+
18
+ klass = Class.new(Base) do
19
+ unless options[:include_profile_support] == false
20
+ include Mixins::Profile
21
+ end
22
+
23
+ define_method "configure_command" do |builder, opts|
24
+ builder = super(builder, opts)
25
+ builder = builder.with_subcommand(name) do |sub|
26
+ config.subcommand_block.call(sub, opts)
27
+ end
28
+ config.command_block.call(builder, opts)
29
+ end
30
+ end
31
+
32
+ const_set(klass_name, klass)
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ class Config
39
+ attr_accessor :command_block, :subcommand_block
40
+
41
+ def initialize
42
+ self.command_block = lambda { |com, _| com }
43
+ self.subcommand_block = lambda { |sub, _| sub }
44
+ end
45
+
46
+ def on_command_builder(&block)
47
+ self.command_block = block
48
+ self
49
+ end
50
+
51
+ def on_subcommand_builder(&block)
52
+ self.subcommand_block = block
53
+ self
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,3 @@
1
+ module RubyLeiningen
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,36 @@
1
+ require 'ruby_leiningen/version'
2
+ require 'ruby_leiningen/commands'
3
+
4
+ module RubyLeiningen
5
+ class << self
6
+ attr_accessor :configuration
7
+
8
+ def configure
9
+ @configuration ||= Configuration.new
10
+ yield(@configuration)
11
+ end
12
+
13
+ def reset!
14
+ @configuration = nil
15
+ end
16
+ end
17
+
18
+ module ClassMethods
19
+ def version
20
+ Commands::Version.new.execute
21
+ end
22
+ end
23
+ extend ClassMethods
24
+
25
+ def self.included(other)
26
+ other.extend(ClassMethods)
27
+ end
28
+
29
+ class Configuration
30
+ attr_accessor :binary
31
+
32
+ def initialize
33
+ @binary = 'lein'
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,34 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ruby_leiningen/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'ruby_leiningen'
8
+ spec.version = RubyLeiningen::VERSION
9
+ spec.authors = ['Toby Clemson']
10
+ spec.email = ['tobyclemson@gmail.com']
11
+
12
+ spec.summary = 'A simple Ruby wrapper for invoking leiningen commands.'
13
+ spec.description = 'Wraps the leiningen CLI so that leiningen can be ' +
14
+ 'invoked from a Ruby script or Rakefile.'
15
+ spec.homepage = 'https://github.com/infrablocks/ruby_leiningen'
16
+ spec.license = 'MIT'
17
+
18
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
+ f.match(%r{^(test|spec|features)/})
20
+ end
21
+ spec.bindir = 'exe'
22
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.require_paths = ['lib']
24
+
25
+ spec.required_ruby_version = '>= 2.5'
26
+
27
+ spec.add_dependency 'lino', '~> 1.1'
28
+ spec.add_dependency 'activesupport', '~> 6.0', '>= 6.0.2'
29
+
30
+ spec.add_development_dependency 'bundler', '~> 2.0'
31
+ spec.add_development_dependency 'rake', '~> 13.0'
32
+ spec.add_development_dependency 'rspec', '~> 3.8'
33
+ spec.add_development_dependency 'gem-release', '~> 2.0'
34
+ end
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+
3
+ [ -n "$DEBUG" ] && set -x
4
+ set -e
5
+ set -o pipefail
6
+
7
+ git config --global user.email "circleci@infrablocks.io"
8
+ git config --global user.name "Circle CI"
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env bash
2
+
3
+ [ -n "$DEBUG" ] && set -x
4
+ set -e
5
+ set -o pipefail
6
+
7
+ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
8
+ PROJECT_DIR="$( cd "$SCRIPT_DIR/../../.." && pwd )"
9
+
10
+ cd "$PROJECT_DIR"
11
+
12
+ git crypt unlock
13
+
14
+ mkdir -p ~/.gem
15
+ cp config/secrets/rubygems/credentials ~/.gem/credentials
16
+ chmod 0600 ~/.gem/credentials
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+
3
+ [ -n "$DEBUG" ] && set -x
4
+ set -e
5
+ set -o pipefail
6
+
7
+ apt-get update
8
+ apt-get install -y --no-install-recommends git ssh git-crypt
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env bash
2
+
3
+ [ -n "$DEBUG" ] && set -x
4
+ set -e
5
+ set -o pipefail
6
+
7
+ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
8
+ PROJECT_DIR="$( cd "$SCRIPT_DIR/../../.." && pwd )"
9
+
10
+ cd "$PROJECT_DIR"
11
+
12
+ set +e
13
+ openssl version
14
+ openssl aes-256-cbc \
15
+ -d \
16
+ -md sha1 \
17
+ -in ./.circleci/gpg.private.enc \
18
+ -k "${ENCRYPTION_PASSPHRASE}" | gpg --import -
19
+ set -e
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env bash
2
+
3
+ [ -n "$DEBUG" ] && set -x
4
+ set -e
5
+ set -o pipefail
6
+
7
+ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
8
+ PROJECT_DIR="$( cd "$SCRIPT_DIR/../../.." && pwd )"
9
+
10
+ cd "$PROJECT_DIR"
11
+
12
+ ./go version:bump[pre]
13
+ ./go release
14
+
15
+ git status
16
+ git push
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env bash
2
+
3
+ [ -n "$DEBUG" ] && set -x
4
+ set -e
5
+ set -o pipefail
6
+
7
+ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
8
+ PROJECT_DIR="$( cd "$SCRIPT_DIR/../../.." && pwd )"
9
+
10
+ cd "$PROJECT_DIR"
11
+
12
+ git pull
13
+
14
+ ./go version:bump[minor]
15
+ ./go release
16
+
17
+ git status
18
+ git push
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env bash
2
+
3
+ [ -n "$DEBUG" ] && set -x
4
+ set -e
5
+ set -o pipefail
6
+
7
+ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
8
+ PROJECT_DIR="$( cd "$SCRIPT_DIR/../../.." && pwd )"
9
+
10
+ cd "$PROJECT_DIR"
11
+
12
+ ./go spec