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