commit
782749893c
@ -0,0 +1,11 @@ |
||||
/.bundle/ |
||||
/.yardoc |
||||
/_yardoc/ |
||||
/coverage/ |
||||
/doc/ |
||||
/pkg/ |
||||
/spec/reports/ |
||||
/tmp/ |
||||
|
||||
# rspec failure tracking |
||||
.rspec_status |
||||
@ -0,0 +1 @@ |
||||
3.0.2 |
||||
@ -0,0 +1,7 @@ |
||||
--- |
||||
sudo: false |
||||
language: ruby |
||||
cache: bundler |
||||
rvm: |
||||
- 2.6.3 |
||||
before_install: gem install bundler -v 1.17.2 |
||||
@ -0,0 +1,10 @@ |
||||
source "https://rubygems.org" |
||||
|
||||
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } |
||||
|
||||
# Specify your gem's dependencies in agenda_pdf.gemspec |
||||
gemspec |
||||
|
||||
gem 'prawn', '~> 2.4' |
||||
|
||||
ruby '3.0.2' |
||||
@ -0,0 +1,47 @@ |
||||
PATH |
||||
remote: . |
||||
specs: |
||||
agenda_pdf (0.1.0) |
||||
prawn (~> 2.4) |
||||
|
||||
GEM |
||||
remote: https://rubygems.org/ |
||||
specs: |
||||
diff-lcs (1.5.0) |
||||
pdf-core (0.9.0) |
||||
prawn (2.4.0) |
||||
pdf-core (~> 0.9.0) |
||||
ttfunk (~> 1.7) |
||||
rake (10.5.0) |
||||
rspec (3.10.0) |
||||
rspec-core (~> 3.10.0) |
||||
rspec-expectations (~> 3.10.0) |
||||
rspec-mocks (~> 3.10.0) |
||||
rspec-core (3.10.1) |
||||
rspec-support (~> 3.10.0) |
||||
rspec-expectations (3.10.2) |
||||
diff-lcs (>= 1.2.0, < 2.0) |
||||
rspec-support (~> 3.10.0) |
||||
rspec-mocks (3.10.2) |
||||
diff-lcs (>= 1.2.0, < 2.0) |
||||
rspec-support (~> 3.10.0) |
||||
rspec-support (3.10.3) |
||||
thor (1.2.1) |
||||
ttfunk (1.7.0) |
||||
|
||||
PLATFORMS |
||||
ruby |
||||
|
||||
DEPENDENCIES |
||||
agenda_pdf! |
||||
bundler (~> 2.2.22) |
||||
prawn (~> 2.4) |
||||
rake (~> 10.0) |
||||
rspec (~> 3.0) |
||||
thor (~> 1.2) |
||||
|
||||
RUBY VERSION |
||||
ruby 3.0.2p107 |
||||
|
||||
BUNDLED WITH |
||||
2.2.22 |
||||
@ -0,0 +1,21 @@ |
||||
The MIT License (MIT) |
||||
|
||||
Copyright (c) 2022 Ervan Silvert |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
of this software and associated documentation files (the "Software"), to deal |
||||
in the Software without restriction, including without limitation the rights |
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
copies of the Software, and to permit persons to whom the Software is |
||||
furnished to do so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included in |
||||
all copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
||||
THE SOFTWARE. |
||||
@ -0,0 +1,39 @@ |
||||
# AgendaPdf |
||||
|
||||
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/agenda_pdf`. To experiment with that code, run `bin/console` for an interactive prompt. |
||||
|
||||
TODO: Delete this and the text above, and describe your gem |
||||
|
||||
## Installation |
||||
|
||||
Add this line to your application's Gemfile: |
||||
|
||||
```ruby |
||||
gem 'agenda_pdf' |
||||
``` |
||||
|
||||
And then execute: |
||||
|
||||
$ bundle |
||||
|
||||
Or install it yourself as: |
||||
|
||||
$ gem install agenda_pdf |
||||
|
||||
## Usage |
||||
|
||||
TODO: Write usage instructions here |
||||
|
||||
## Development |
||||
|
||||
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. |
||||
|
||||
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). |
||||
|
||||
## Contributing |
||||
|
||||
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/agenda_pdf. |
||||
|
||||
## License |
||||
|
||||
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). |
||||
@ -0,0 +1,6 @@ |
||||
require "bundler/gem_tasks" |
||||
require "rspec/core/rake_task" |
||||
|
||||
RSpec::Core::RakeTask.new(:spec) |
||||
|
||||
task :default => :spec |
||||
@ -0,0 +1,44 @@ |
||||
|
||||
lib = File.expand_path("../lib", __FILE__) |
||||
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) |
||||
require "agenda_pdf/version" |
||||
|
||||
Gem::Specification.new do |spec| |
||||
spec.name = "agenda_pdf" |
||||
spec.version = AgendaPdf::VERSION |
||||
spec.authors = ["Ervan Silvert"] |
||||
spec.email = ["ervan@derniercri.io"] |
||||
|
||||
spec.summary = %q{Allows to create a pdf file for each day of a period} |
||||
spec.description = %q{Allows to create a pdf file for each day of a period} |
||||
spec.homepage = "https://gitlab.com/esilvert/agenda_pdf" |
||||
spec.license = "MIT" |
||||
|
||||
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host' |
||||
# to allow pushing to a single host or delete this section to allow pushing to any host. |
||||
if spec.respond_to?(:metadata) |
||||
spec.metadata["allowed_push_host"] = "https://gitlab.com/esilvert/agenda_pdf/CHANGELOG.md" |
||||
|
||||
spec.metadata["homepage_uri"] = spec.homepage |
||||
spec.metadata["source_code_uri"] = "https://gitlab.com/esilvert/agenda_pdf/CHANGELOG.md" |
||||
spec.metadata["changelog_uri"] = "https://gitlab.com/esilvert/agenda_pdf/CHANGELOG.md" |
||||
else |
||||
raise "RubyGems 2.0 or newer is required to protect against " \ |
||||
"public gem pushes." |
||||
end |
||||
|
||||
# Specify which files should be added to the gem when it is released. |
||||
# The `git ls-files -z` loads the files in the RubyGem that have been added into git. |
||||
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do |
||||
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } |
||||
end |
||||
spec.bindir = "bin" |
||||
spec.executables = ['agenda_pdf'] |
||||
spec.require_paths = ["lib"] |
||||
|
||||
spec.add_development_dependency "bundler", "~> 2.2.22" |
||||
spec.add_development_dependency "rake", "~> 10.0" |
||||
spec.add_development_dependency "rspec", "~> 3.0" |
||||
|
||||
spec.add_dependency "prawn", "~> 2.4" |
||||
end |
||||
@ -0,0 +1,4 @@ |
||||
#!/usr/bin/env ruby |
||||
require 'agenda_pdf' |
||||
|
||||
AgendaPdf.execute(ARGV) |
||||
@ -0,0 +1,14 @@ |
||||
#!/usr/bin/env ruby |
||||
|
||||
require "bundler/setup" |
||||
require "agenda_pdf" |
||||
|
||||
# You can add fixtures and/or initialization code here to make experimenting |
||||
# with your gem easier. You can also use a different console, if you like. |
||||
|
||||
# (If you use this, don't forget to add pry to your Gemfile!) |
||||
# require "pry" |
||||
# Pry.start |
||||
|
||||
require "irb" |
||||
IRB.start(__FILE__) |
||||
@ -0,0 +1,8 @@ |
||||
#!/usr/bin/env bash |
||||
set -euo pipefail |
||||
IFS=$'\n\t' |
||||
set -vx |
||||
|
||||
bundle install |
||||
|
||||
# Do any other automated setup that you need to do here |
||||
@ -0,0 +1,18 @@ |
||||
require 'date' |
||||
|
||||
require "agenda_pdf/version" |
||||
require "agenda_pdf/options_parser" |
||||
require "agenda_pdf/pdf_generator" |
||||
|
||||
module AgendaPdf |
||||
class Error < StandardError; end |
||||
|
||||
def self.execute(argv) |
||||
options = OptionsParser.new |
||||
|
||||
PdfGenerator.new(options.path) do |
||||
text 'hello world' |
||||
text argv.to_s |
||||
end |
||||
end |
||||
end |
||||
@ -0,0 +1,46 @@ |
||||
require 'optparse' |
||||
require 'pathname' |
||||
|
||||
class OptionsParser |
||||
OPTIONS = %i[month verbose path].freeze |
||||
|
||||
DEFAULT_PATH = ENV['PWD'] + '/agenda.pdf' |
||||
|
||||
def initialize |
||||
@options = {} |
||||
|
||||
parse_options |
||||
end |
||||
|
||||
def path |
||||
@options[:path] || DEFAULT_PATH |
||||
end |
||||
|
||||
def month |
||||
@options[:month] || DateTime.now.month |
||||
end |
||||
|
||||
def verbose |
||||
@options[:verbose] |
||||
end |
||||
|
||||
private |
||||
|
||||
def parse_options |
||||
OptionParser.new do |opts| |
||||
opts.banner = "Usage: agenda_pdf [options]" |
||||
|
||||
opts.on("-m", "--month", "Generates a pdf for current month") do |v| |
||||
@options[:month] = DateTime.parse(v) rescue DateTime.now.month |
||||
end |
||||
|
||||
opts.on("-o", "--path", "The output file path") do |v| |
||||
@options[:path] = Pathname.new(v) |
||||
end |
||||
|
||||
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v| |
||||
@options[:verbose] = v || false |
||||
end |
||||
end.parse! |
||||
end |
||||
end |
||||
@ -0,0 +1,21 @@ |
||||
require 'prawn' |
||||
|
||||
class PdfGenerator < Prawn::Document |
||||
def initialize(path, &block) |
||||
super() |
||||
initialize_document |
||||
|
||||
instance_eval &block |
||||
|
||||
finalize_document(path) |
||||
end |
||||
|
||||
protected |
||||
|
||||
def initialize_document; end |
||||
|
||||
def finalize_document(path) |
||||
pp "Rending pdf at #{path}" |
||||
render_file(path) |
||||
end |
||||
end |
||||
@ -0,0 +1,3 @@ |
||||
module AgendaPdf |
||||
VERSION = "0.1.0" |
||||
end |
||||
@ -0,0 +1,9 @@ |
||||
RSpec.describe AgendaPdf do |
||||
it "has a version number" do |
||||
expect(AgendaPdf::VERSION).not_to be nil |
||||
end |
||||
|
||||
it "does something useful" do |
||||
expect(false).to eq(true) |
||||
end |
||||
end |
||||
@ -0,0 +1,14 @@ |
||||
require "bundler/setup" |
||||
require "agenda_pdf" |
||||
|
||||
RSpec.configure do |config| |
||||
# Enable flags like --only-failures and --next-failure |
||||
config.example_status_persistence_file_path = ".rspec_status" |
||||
|
||||
# Disable RSpec exposing methods globally on `Module` and `main` |
||||
config.disable_monkey_patching! |
||||
|
||||
config.expect_with :rspec do |c| |
||||
c.syntax = :expect |
||||
end |
||||
end |
||||
Loading…
Reference in new issue