pleme 0.0.1 → 0.0.7

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: 81b6394d8396413e433f83d4229a2b0a256418fcfc8664d910f97543a8060c7e
4
- data.tar.gz: 349cb55b7a9d55bd2419ba6b14c218538998ccd2e57ff7de416e6c84ec90062f
3
+ metadata.gz: 48d370a0da0fd00af864f52d45f27360035ae5e49e41474966419f4f3f20d77e
4
+ data.tar.gz: afed466bd87ca0e2dce72521765535ae8cc4ef8cf9d5dcfdf706bd24d4bd1bdf
5
5
  SHA512:
6
- metadata.gz: d6c25b536e2afdaee47bc628c718bcbc1c83b03295ed54bdc4b013ace8727e5615e7e83b230d6dafc7b638930d43ee834e6fd328d4b465dd927f6390a1a94619
7
- data.tar.gz: db783ee57bce5561c59f7059a8aa90e43bcdc47d2917680b057119a564ac13fc3f0b10a8b7aa9faadddf4f957c19a1cc914d25efb148ba5a786749f635cb9319
6
+ metadata.gz: 49bf95a014a49a0eaaad4ef314879d04003ca8feb1a925bef9d950340c2a4b4eade954c0428ff256d0de664dfd8d31240272c9548d5eb1c167c55e588917e739
7
+ data.tar.gz: c2d2fc1f1dcd55e56181fb71ece8dbed245de1f38c3468bae553e563602d37bb730b07612251cc495955ac44cb5957f9dae2c1f039ca9c5fb01b9c9c3f98cbdd
@@ -15,34 +15,9 @@ jobs:
15
15
  with:
16
16
  ruby_version: '2.6'
17
17
 
18
- - name: make bundle directory
19
- run: mkdir -p ~/.bundle
20
-
21
- - name: install_bundler
22
- run: gem install bundler
23
-
24
- - name: install_bundle
25
- run: gem install bundle
26
-
27
- - name: install_dependencies
28
- run: ./dependencies.sh
29
- env:
30
- GITHUB_TOKEN: ${{ secrets.LTK_GITHUB_TOKEN }}
31
-
32
- - name: rake_test
33
- run: rake test
34
-
35
- - name: rake_build
36
- run: rake build
37
-
38
- - name: make gem directory
39
- run: 'mkdir -p ~/.gem'
40
-
41
- - name: credentials
42
- run: 'echo ":github: Bearer ${{ secrets.LTK_GITHUB_TOKEN }}" >> ~/.gem/credentials'
43
-
44
- - name: correct_permissions
45
- run: 'chmod 600 ~/.gem/credentials'
46
-
47
- - name: push package
48
- run: gem push --key github --host https://rubygems.pkg.github.com/luisfelipemourapereira pkg/ltk-gem-*.gem
18
+ - name: release
19
+ run: |
20
+ set -e
21
+ gem install bundler
22
+ bundle
23
+ rake test
@@ -1,3 +1,6 @@
1
+ AllCops:
2
+ NewCops: enable
3
+
1
4
  Style/Documentation:
2
5
  Enabled: false
3
6
 
@@ -51,3 +54,9 @@ Metrics/AbcSize:
51
54
 
52
55
  Metrics/PerceivedComplexity:
53
56
  Enabled: false
57
+
58
+ Style/SoleNestedConditional:
59
+ Enabled: false
60
+
61
+ Lint/MissingSuper:
62
+ Enabled: false
@@ -1 +1 @@
1
- 2.6.4
1
+ 2.6.3
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pleme (0.0.1)
4
+ pleme (0.0.3)
5
+ docopt
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
@@ -10,6 +11,7 @@ GEM
10
11
  backport (1.1.2)
11
12
  benchmark (0.1.0)
12
13
  diff-lcs (1.4.4)
14
+ docopt (0.6.1)
13
15
  e2mmap (0.1.0)
14
16
  jaro_winkler (1.5.4)
15
17
  maruku (0.7.3)
data/Rakefile CHANGED
@@ -18,4 +18,7 @@ task :test do
18
18
  .invoke
19
19
  end
20
20
  end
21
- task default: :test
21
+ task :default do
22
+ Rake::Task['test'].invoke
23
+ Rake::Task['release'].invoke
24
+ end
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'pleme/cli'
5
+
6
+ Cli.new.run
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pleme
4
+ require 'pleme/abstract_translator'
5
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ def add_bury_to_hash
4
+ Hash.send(:define_method, :bury) do |*args|
5
+ if args.count < 2
6
+ raise ArgumentError, '2 or more arguments required'
7
+ elsif args.count == 2
8
+ self[args[0]] = args[1]
9
+ else
10
+ arg = args.shift
11
+ self[arg] = {} unless self[arg]
12
+ self[arg].bury(*args) unless args.empty?
13
+ end
14
+ end
15
+ end
16
+
17
+ class AbstractTranslation
18
+ attr_accessor :template,
19
+ :context,
20
+ :data,
21
+ :ancestors
22
+
23
+ def initialize
24
+ add_bury_to_hash
25
+
26
+ @ancestors = []
27
+ @template = {}
28
+ @context = nil
29
+ @data = {}
30
+ end
31
+
32
+ def inspect
33
+ @template
34
+ end
35
+ end
36
+
37
+ class AbstractTranslator
38
+ def abstract_method_missing(translation, method_name, keys, *args)
39
+ if translation.context.nil?
40
+ unless keys.include?(method_name.to_sym) ||
41
+ keys.include?(method_name.to_s)
42
+ raise ArgumentError.new(
43
+ method_name: method_name,
44
+ keys: keys
45
+ )
46
+ end
47
+ end
48
+
49
+ keys.each do |key|
50
+ case translation.context
51
+ when key
52
+ translation.ancestors.push(method_name)
53
+ yield if block_given?
54
+ if args.length == 1
55
+ translation.template.bury(*translation.ancestors, args[0])
56
+ translation.ancestors.pop
57
+ elsif args.empty?
58
+ translation.ancestors.pop
59
+ else
60
+ raise ArgumentError,
61
+ "field: #{
62
+ method_name
63
+ } must have exactly one argument, had #{
64
+ args.length
65
+ }, which were #{args}"
66
+ end
67
+ end
68
+ next unless [key.to_s, key.to_sym].include?(method_name)
69
+
70
+ translation.ancestors.push(method_name.to_sym)
71
+ translation.ancestors.push(*args)
72
+ translation.context = method_name.to_sym
73
+ yield if block_given?
74
+ translation.ancestors = []
75
+ translation.context = nil
76
+ end
77
+ end
78
+
79
+ def eval_in_context(content)
80
+ instance_eval(content)
81
+ end
82
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ ###############################################################################
4
+ # cli
5
+ ###############################################################################
6
+
7
+ require 'docopt'
8
+ require 'json'
9
+ require 'pleme/runner'
10
+
11
+ class Cli
12
+ def initialize
13
+ @doc = <<~DOCOPT
14
+ pleme.
15
+
16
+ Usage:
17
+ pleme
18
+ pleme dotfiles
19
+ DOCOPT
20
+ end
21
+
22
+ def run
23
+ Runner.new.run(**JSON.parse(JSON[Docopt.docopt(@doc)], symbolize_names: true))
24
+ rescue Docopt::Exit => e
25
+ puts e.message
26
+ end
27
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Pleme
4
4
  module Gem
5
- VERSION = '0.0.1'
5
+ VERSION = '0.0.7'
6
6
  end
7
7
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pleme/abstract_translator'
4
+
5
+ class ResourceTranslation < AbstractTranslation
6
+ end
7
+ class ResourceTranslator < AbstractTranslator
8
+ attr_accessor :translation
9
+ attr_reader :resource_symbols
10
+
11
+ def initialize
12
+ @translation = ResourceTranslation.new
13
+ @resource_symbols = %i[resource]
14
+ end
15
+
16
+ def method_missing(method_name, *args, &block)
17
+ abstract_method_missing(
18
+ @translation,
19
+ method_name,
20
+ @resource_symbols,
21
+ *args,
22
+ &block
23
+ )
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ ###############################################################################
4
+ # define a run interface that takes a dict
5
+ # then dispatch accordingly
6
+ ###############################################################################
7
+
8
+ class Runner
9
+ def dotfiles(_spec)
10
+ hax_portal
11
+ end
12
+
13
+ def run(spec)
14
+ dotfiles(spec) unless spec[:dotfiles].nil?
15
+ end
16
+
17
+ # enter the world of hax
18
+ def hax_portal
19
+ instance_eval(File.read('hax.rb')) if File.exist?('hax.rb')
20
+ end
21
+ end
@@ -19,7 +19,8 @@ Gem::Specification.new do |spec|
19
19
  end
20
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
21
  spec.require_paths = ['lib']
22
- spec.required_ruby_version = '>= 2.6.4'
22
+ spec.required_ruby_version = '>= 2.6.3'
23
+ spec.add_dependency('docopt')
23
24
  spec.add_development_dependency('rake')
24
25
  spec.add_development_dependency('rspec')
25
26
  spec.add_development_dependency('rubocop')
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pleme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-09 00:00:00.000000000 Z
11
+ date: 2020-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: docopt
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rake
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -69,7 +83,8 @@ dependencies:
69
83
  description: Pleme
70
84
  email:
71
85
  - " luis AT pleme DOT com"
72
- executables: []
86
+ executables:
87
+ - pleme
73
88
  extensions: []
74
89
  extra_rdoc_files: []
75
90
  files:
@@ -83,9 +98,14 @@ files:
83
98
  - Gemfile.lock
84
99
  - README.md
85
100
  - Rakefile
86
- - dependencies.sh
101
+ - bin/pleme
87
102
  - init.sh
103
+ - lib/pleme.rb
104
+ - lib/pleme/abstract_translator.rb
105
+ - lib/pleme/cli.rb
88
106
  - lib/pleme/gem/version.rb
107
+ - lib/pleme/resource_translator.rb
108
+ - lib/pleme/runner.rb
89
109
  - pkg/ltk-gem-0.0.1.gem
90
110
  - pleme.gemspec
91
111
  - scripts/init.sh
@@ -102,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
122
  requirements:
103
123
  - - ">="
104
124
  - !ruby/object:Gem::Version
105
- version: 2.6.4
125
+ version: 2.6.3
106
126
  required_rubygems_version: !ruby/object:Gem::Requirement
107
127
  requirements:
108
128
  - - ">="
@@ -1,4 +0,0 @@
1
- #!/bin/sh
2
-
3
- bundle config set rubygems.pkg.github.com luisfelipemourapereira:$GITHUB_TOKEN
4
- bundle