From 97edc164488352897eec1313b63d42aa06bb87a8 Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Sat, 4 Jul 2020 22:33:59 +0200 Subject: Initial commit --- .builds/archlinux-msrv.yml | 19 ++++++++ .builds/archlinux.yml | 14 ++++++ .builds/lint.yml | 27 ++++++++++ .gitignore | 5 ++ Cargo.lock | 10 ++++ Cargo.toml | 16 ++++++ LICENSES/CC0-1.0.txt | 119 +++++++++++++++++++++++++++++++++++++++++++++ LICENSES/MIT.txt | 21 ++++++++ README.md | 47 ++++++++++++++++++ src/main.rs | 10 ++++ 10 files changed, 288 insertions(+) create mode 100644 .builds/archlinux-msrv.yml create mode 100644 .builds/archlinux.yml create mode 100644 .builds/lint.yml create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 LICENSES/CC0-1.0.txt create mode 100644 LICENSES/MIT.txt create mode 100644 README.md create mode 100644 src/main.rs diff --git a/.builds/archlinux-msrv.yml b/.builds/archlinux-msrv.yml new file mode 100644 index 0000000..85d494a --- /dev/null +++ b/.builds/archlinux-msrv.yml @@ -0,0 +1,19 @@ +# Copyright (C) 2020 Robin Krahl +# SPDX-License-Identifier: CC0-1.0 +image: archlinux +packages: + - rustup +sources: + - https://git.ireas.org/bibdirsync +tasks: + - setup: | + rustup set profile minimal + rustup default 1.34.2 + - version: | + rustc -V + - build: | + cd bibdirsync + cargo build --release + - test: | + cd bibdirsync + cargo test diff --git a/.builds/archlinux.yml b/.builds/archlinux.yml new file mode 100644 index 0000000..f381f32 --- /dev/null +++ b/.builds/archlinux.yml @@ -0,0 +1,14 @@ +# Copyright (C) 2020 Robin Krahl +# SPDX-License-Identifier: MIT +image: archlinux +packages: + - rust +sources: + - https://git.ireas.org/bibdirsync +tasks: + - build: | + cd bibdirsync + cargo build --release + - test: | + cd bibdirsync + cargo test diff --git a/.builds/lint.yml b/.builds/lint.yml new file mode 100644 index 0000000..5012dea --- /dev/null +++ b/.builds/lint.yml @@ -0,0 +1,27 @@ +# Copyright (C) 2020 Robin Krahl +# SPDX-License-Identifier: MIT +image: archlinux +packages: + - rustup + - python + - python-pip + - python-pygit2 +sources: + - https://git.ireas.org/bibdirsync +tasks: + - setup: | + pip install --user fsfe-reuse + rustup update stable + rustup self upgrade-data + rustup default stable + rustup component add rustfmt + rustup component add clippy + - format: | + cd bibdirsync + cargo fmt -- --check + - reuse: | + cd bibdirsync + ~/.local/bin/reuse lint + - clippy: | + cd bibdirsync + cargo clippy -- -D warnings diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e1b5d9d --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# Copyright (C) 2019 Robin Krahl +# SPDX-License-Identifier: CC0-1.0 +/target +**/*.rs.bk +*.swp diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..5f47eff --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,10 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +# Copyright (C) 2020 Robin Krahl +# SPDX-License-Identifier: CC0-1.0 +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "bibdirsync" +version = "0.1.0" + diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..b51ddc7 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,16 @@ +# Copyright (C) 2020 Robin Krahl +# SPDX-License-Identifier: CC0-1.0 + +[package] +name = "bibdirsync" +version = "0.1.0" +authors = ["Robin Krahl "] +edition = "2018" +repository = "https://git.ireas.org/bibdirsync/" +description = "Synchronization between BibTeX bibliographies and local directories" +keywords = ["bibtex", "bibliography", "synch", "pdf", "download"] +categories = ["command-line-utilities"] +readme = "README.md" +license = "MIT" + +[dependencies] diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt new file mode 100644 index 0000000..a343ccd --- /dev/null +++ b/LICENSES/CC0-1.0.txt @@ -0,0 +1,119 @@ +Creative Commons Legal Code + +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION +OR WORKS PROVIDED HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer exclusive +Copyright and Related Rights (defined below) upon the creator and subsequent +owner(s) (each and all, an "owner") of an original work of authorship and/or +a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific +works ("Commons") that the public can reliably and without fear of later claims +of infringement build upon, modify, incorporate in other works, reuse and +redistribute as freely as possible in any form whatsoever and for any purposes, +including without limitation commercial purposes. These owners may contribute +to the Commons to promote the ideal of a free culture and the further production +of creative, cultural and scientific works, or to gain reputation or greater +distribution for their Work in part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any expectation +of additional consideration or compensation, the person associating CC0 with +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work +and publicly distribute the Work under its terms, with knowledge of his or +her Copyright and Related Rights in the Work and the meaning and intended +legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be protected +by copyright and related or neighboring rights ("Copyright and Related Rights"). +Copyright and Related Rights include, but are not limited to, the following: + +i. the right to reproduce, adapt, distribute, perform, display, communicate, +and translate a Work; + + ii. moral rights retained by the original author(s) and/or performer(s); + +iii. publicity and privacy rights pertaining to a person's image or likeness +depicted in a Work; + +iv. rights protecting against unfair competition in regards to a Work, subject +to the limitations in paragraph 4(a), below; + +v. rights protecting the extraction, dissemination, use and reuse of data +in a Work; + +vi. database rights (such as those arising under Directive 96/9/EC of the +European Parliament and of the Council of 11 March 1996 on the legal protection +of databases, and under any national implementation thereof, including any +amended or successor version of such directive); and + +vii. other similar, equivalent or corresponding rights throughout the world +based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright +and Related Rights and associated claims and causes of action, whether now +known or unknown (including existing as well as future claims and causes of +action), in the Work (i) in all territories worldwide, (ii) for the maximum +duration provided by applicable law or treaty (including future time extensions), +(iii) in any current or future medium and for any number of copies, and (iv) +for any purpose whatsoever, including without limitation commercial, advertising +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the +benefit of each member of the public at large and to the detriment of Affirmer's +heirs and successors, fully intending that such Waiver shall not be subject +to revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be +judged legally invalid or ineffective under applicable law, then the Waiver +shall be preserved to the maximum extent permitted taking into account Affirmer's +express Statement of Purpose. In addition, to the extent the Waiver is so +judged Affirmer hereby grants to each affected person a royalty-free, non +transferable, non sublicensable, non exclusive, irrevocable and unconditional +license to exercise Affirmer's Copyright and Related Rights in the Work (i) +in all territories worldwide, (ii) for the maximum duration provided by applicable +law or treaty (including future time extensions), (iii) in any current or +future medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional purposes +(the "License"). The License shall be deemed effective as of the date CC0 +was applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder of +the License, and in such case Affirmer hereby affirms that he or she will +not (i) exercise any of his or her remaining Copyright and Related Rights +in the Work or (ii) assert any associated claims and causes of action with +respect to the Work, in either case contrary to Affirmer's express Statement +of Purpose. + + 4. Limitations and Disclaimers. + +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, +licensed or otherwise affected by this document. + +b. Affirmer offers the Work as-is and makes no representations or warranties +of any kind concerning the Work, express, implied, statutory or otherwise, +including without limitation warranties of title, merchantability, fitness +for a particular purpose, non infringement, or the absence of latent or other +defects, accuracy, or the present or absence of errors, whether or not discoverable, +all to the greatest extent permissible under applicable law. + +c. Affirmer disclaims responsibility for clearing rights of other persons +that may apply to the Work or any use thereof, including without limitation +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims +responsibility for obtaining any necessary consents, permissions or other +rights required for any use of the Work. + +d. Affirmer understands and acknowledges that Creative Commons is not a party +to this document and has no duty or obligation with respect to this CC0 or +use of the Work. diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt new file mode 100644 index 0000000..741cbc3 --- /dev/null +++ b/LICENSES/MIT.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2019 Robin Krahl + +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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..4bf53d4 --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ + + +# bibdirsync + +A command-line tool that synchronizes BibTeX bibliographies and local +directories. + +## Examples + +Download PDF files for the items in a bibliography file: +``` +$ bibdirsync fetch references.bib +``` + +Extract bibliography information from a PDF file and add it to a +bibliography file: +``` +$ bibdirsync import docs/interesting-article.pdf references.bib +``` + +Synchronize a bibliography file and a local directory by adding new items to +the bibliography file and downloading missing PDF files: +``` +$ bibdirsync sync docs references.bib +``` + +## Minimum Supported Rust Version + +This crate supports Rust 1.34.2 or later. + +## Contact + +For bug reports, patches, feature requests or other messages, please send a +mail to [bibdirsync-dev@ireas.org][]. + +## License + +This project is licensed under the [MIT License][]. + +`dialog-rs` complies with [version 3.0 of the REUSE specification][reuse]. + +[bibdirsync-dev@ireas.org]: mailto:bibdirsync-dev@ireas.org +[MIT license]: https://opensource.org/licenses/MIT +[reuse]: https://reuse.software/practices/3.0/ diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..ef8a6ea --- /dev/null +++ b/src/main.rs @@ -0,0 +1,10 @@ +// Copyright (C) 2019 Robin Krahl +// SPDX-License-Identifier: MIT + +#![warn(missing_docs, rust_2018_compatibility, rust_2018_idioms, unused)] + +//! A command-line tool that synchronizes BibTeX bibliographies and local directories. + +fn main() { + println!("Hello, world!"); +} -- cgit v1.2.1