From dff272a3263a9c2121b68e70af5d8e7ef1818b2b Mon Sep 17 00:00:00 2001 From: Petr Parolek Date: Mon, 29 Nov 2021 14:03:01 +0100 Subject: [PATCH] Added examples from playground --- examples/.gitignore | 2 + examples/composer.json | 5 + examples/composer.lock | 506 +++++++++++++++++++++++++++++++++++++++++ examples/db.sql | 100 ++++++++ examples/schema.png | Bin 0 -> 46180 bytes examples/seperate.php | 14 ++ examples/together.php | 15 ++ 7 files changed, 642 insertions(+) create mode 100644 examples/.gitignore create mode 100644 examples/composer.json create mode 100644 examples/composer.lock create mode 100644 examples/db.sql create mode 100644 examples/schema.png create mode 100644 examples/seperate.php create mode 100644 examples/together.php diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 0000000..ce373e9 --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1,2 @@ +vendor +model \ No newline at end of file diff --git a/examples/composer.json b/examples/composer.json new file mode 100644 index 0000000..6e55c31 --- /dev/null +++ b/examples/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "contributte/nextras-orm-generator": "^0.3" + } +} diff --git a/examples/composer.lock b/examples/composer.lock new file mode 100644 index 0000000..9e7f92e --- /dev/null +++ b/examples/composer.lock @@ -0,0 +1,506 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "3bdc10ef774e11e3db3b29f4083495f0", + "packages": [ + { + "name": "contributte/nextras-orm-generator", + "version": "v0.3", + "source": { + "type": "git", + "url": "https://github.com/contributte/nextras-orm-generator.git", + "reference": "61af2c272d4197816610f3e117a019faf31e3729" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/contributte/nextras-orm-generator/zipball/61af2c272d4197816610f3e117a019faf31e3729", + "reference": "61af2c272d4197816610f3e117a019faf31e3729", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.0", + "nette/database": "^2.4.0|^3.0.0.", + "nette/php-generator": "^2.5|^3.1", + "nette/utils": "^2.4|^3.0", + "php": ">=7.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "ninjify/qa": "^0.8.0", + "tracy/tracy": "^2.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Contributte\\Nextras\\Orm\\Generator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Milan Felix Sulc", + "homepage": "https://f3l1x.io" + } + ], + "description": "Nextras ORM Generator", + "homepage": "https://github.com/contributte/nextras-orm-generator", + "time": "2020-07-26T17:07:09+00:00" + }, + { + "name": "doctrine/inflector", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/4650c8b30c753a76bf44fb2ed00117d6f367490c", + "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^7.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-strict-rules": "^0.11", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector", + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2020-05-29T07:19:59+00:00" + }, + { + "name": "nette/caching", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/nette/caching.git", + "reference": "b9ecbf920f240bd1ab14900d9a77876924ad7fb4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/caching/zipball/b9ecbf920f240bd1ab14900d9a77876924ad7fb4", + "reference": "b9ecbf920f240bd1ab14900d9a77876924ad7fb4", + "shasum": "" + }, + "require": { + "nette/finder": "^2.4 || ^3.0", + "nette/utils": "^2.4 || ^3.0", + "php": ">=7.1" + }, + "require-dev": { + "latte/latte": "^2.4", + "nette/di": "^v3.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "suggest": { + "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "⏱ Nette Caching: library with easy-to-use API and many cache backends.", + "homepage": "https://nette.org", + "keywords": [ + "cache", + "journal", + "memcached", + "nette", + "sqlite" + ], + "time": "2019-11-19T18:41:40+00:00" + }, + { + "name": "nette/database", + "version": "v3.0.6", + "source": { + "type": "git", + "url": "https://github.com/nette/database.git", + "reference": "daccbd526f74311549e5c81d3181fc74f87c6733" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/database/zipball/daccbd526f74311549e5c81d3181fc74f87c6733", + "reference": "daccbd526f74311549e5c81d3181fc74f87c6733", + "shasum": "" + }, + "require": { + "ext-pdo": "*", + "nette/caching": "^3.0", + "nette/utils": "^3.1", + "php": ">=7.1" + }, + "conflict": { + "nette/di": "<3.0-stable" + }, + "require-dev": { + "mockery/mockery": "^1.0.0", + "nette/di": "^v3.0", + "nette/tester": "^2.0", + "phpstan/phpstan-nette": "^0.12", + "tracy/tracy": "^2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "💾 Nette Database: layer with a familiar PDO-like API but much more powerful. Building queries, advanced joins, drivers for MySQL, PostgreSQL, SQLite, MS SQL Server and Oracle.", + "homepage": "https://nette.org", + "keywords": [ + "database", + "mssql", + "mysql", + "nette", + "notorm", + "oracle", + "pdo", + "postgresql", + "queries", + "sqlite" + ], + "time": "2020-02-04T12:48:51+00:00" + }, + { + "name": "nette/finder", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/nette/finder.git", + "reference": "4ad2c298eb8c687dd0e74ae84206a4186eeaed50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/finder/zipball/4ad2c298eb8c687dd0e74ae84206a4186eeaed50", + "reference": "4ad2c298eb8c687dd0e74ae84206a4186eeaed50", + "shasum": "" + }, + "require": { + "nette/utils": "^2.4 || ^3.0", + "php": ">=7.1" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "phpstan/phpstan": "^0.12", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🔍 Nette Finder: find files and directories with an intuitive API.", + "homepage": "https://nette.org", + "keywords": [ + "filesystem", + "glob", + "iterator", + "nette" + ], + "time": "2020-01-03T20:35:40+00:00" + }, + { + "name": "nette/php-generator", + "version": "v3.4.1", + "source": { + "type": "git", + "url": "https://github.com/nette/php-generator.git", + "reference": "7051954c534cebafd650efe8b145ac75b223cb66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/php-generator/zipball/7051954c534cebafd650efe8b145ac75b223cb66", + "reference": "7051954c534cebafd650efe8b145ac75b223cb66", + "shasum": "" + }, + "require": { + "nette/utils": "^2.4.2 || ^3.0", + "php": ">=7.1" + }, + "require-dev": { + "nette/tester": "^2.0", + "nikic/php-parser": "^4.4", + "phpstan/phpstan": "^0.12", + "tracy/tracy": "^2.3" + }, + "suggest": { + "nikic/php-parser": "to use ClassType::withBodiesFrom() & GlobalFunction::withBodyFrom()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.4 features.", + "homepage": "https://nette.org", + "keywords": [ + "code", + "nette", + "php", + "scaffolding" + ], + "time": "2020-06-19T14:31:47+00:00" + }, + { + "name": "nette/utils", + "version": "v3.1.3", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "c09937fbb24987b2a41c6022ebe84f4f1b8eec0f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/c09937fbb24987b2a41c6022ebe84f4f1b8eec0f", + "reference": "c09937fbb24987b2a41c6022ebe84f4f1b8eec0f", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "nette/tester": "~2.0", + "phpstan/phpstan": "^0.12", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "time": "2020-08-07T10:34:21+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/examples/db.sql b/examples/db.sql new file mode 100644 index 0000000..46ce246 --- /dev/null +++ b/examples/db.sql @@ -0,0 +1,100 @@ +-- Adminer 4.2.1 MySQL dump + +SET NAMES utf8; +SET time_zone = '+00:00'; +SET foreign_key_checks = 0; +SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; + +CREATE DATABASE `nextras_orm_generator` /*!40100 DEFAULT CHARACTER SET latin1 */; +USE `nextras_orm_generator`; + +CREATE TABLE `book` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `category` int(10) unsigned NOT NULL, + `user` int(10) unsigned NOT NULL, + `image` int(10) unsigned DEFAULT NULL, + `name` varchar(100) NOT NULL, + `author` varchar(100) DEFAULT NULL, + `description` text NOT NULL, + `publisher` varchar(100) DEFAULT NULL, + `price` int(6) unsigned NOT NULL DEFAULT '0', + `year` int(4) unsigned DEFAULT NULL, + `wear` int(2) DEFAULT NULL, + `active` int(1) NOT NULL DEFAULT '0', + `state` enum('SELLING','SOLD','EXPIRED','UNKNOWN') NOT NULL DEFAULT 'UNKNOWN', + `updatedAt` datetime NOT NULL, + `createdAt` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `category` (`category`), + KEY `user` (`user`), + KEY `image` (`image`), + CONSTRAINT `book_ibfk_1` FOREIGN KEY (`category`) REFERENCES `category` (`id`), + CONSTRAINT `book_ibfk_2` FOREIGN KEY (`user`) REFERENCES `user` (`id`), + CONSTRAINT `book_ibfk_3` FOREIGN KEY (`image`) REFERENCES `image` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `book_x_image` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `image_id` int(10) unsigned NOT NULL, + `book_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `image_id_book_id` (`image_id`,`book_id`), + KEY `book_id` (`book_id`), + CONSTRAINT `book_x_image_ibfk_1` FOREIGN KEY (`image_id`) REFERENCES `image` (`id`) ON DELETE CASCADE, + CONSTRAINT `book_x_image_ibfk_2` FOREIGN KEY (`book_id`) REFERENCES `book` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `category` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) COLLATE utf8_czech_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci; + + +CREATE TABLE `image` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `filename` varchar(255) NOT NULL, + `createdAt` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `message` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `user` int(10) unsigned NOT NULL, + `book` int(10) unsigned NOT NULL, + `message` text COLLATE utf8_czech_ci NOT NULL, + `createdAt` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `user` (`user`), + KEY `book` (`book`), + CONSTRAINT `message_ibfk_1` FOREIGN KEY (`user`) REFERENCES `user` (`id`), + CONSTRAINT `message_ibfk_2` FOREIGN KEY (`book`) REFERENCES `book` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci; + + +CREATE TABLE `test` ( + `id` int(11) NOT NULL DEFAULT '5', + `def` varchar(255) COLLATE utf8_czech_ci NOT NULL DEFAULT 'ahoj1', + `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `date` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci; + + +CREATE TABLE `user` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `fbid` varchar(100) DEFAULT NULL, + `username` varchar(100) NOT NULL, + `password` varchar(100) NOT NULL, + `role` enum('USER','ADMIN') NOT NULL DEFAULT 'USER', + `loggedAt` datetime NOT NULL, + `createdAt` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `username` (`username`), + UNIQUE KEY `fbid` (`fbid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +-- 2015-06-30 10:14:47 diff --git a/examples/schema.png b/examples/schema.png new file mode 100644 index 0000000000000000000000000000000000000000..0eef8dc4b10e63818ecab515f0852e00236737ec GIT binary patch literal 46180 zcmb5W1zc6#wl=;IDM3OIlm?NMke2R{5|K{n?r!N$>5>*HX=&;1j!k!W$2ZY?&bjB@ z|98LNf9b2dd#^RutTE;o&+`leKS+x{eS-T00)adg7ZdsjfjkNZ|5YG90-w-dFr|RM z;I$=0g&_A2zrNMyMnfRP5OE>?PmakuP!C(o^%UMKgEz{P?Ys=_@HeoQ5t6^9N1C5K zoB9%g{c*}%kj)__d8WL7Dq6?je6YLLr9LV3H_k5-hn^!T(v;ORZS%@NBWqP#3)Rw! zY(8RU5``xklTYJqbpjz$zh88)9??$?hpgQl`sB8V5%wH)UM-$)udIk=CKwRDR3+k0 zb6PvL%%FS*x*5PkRk8>EhWL0QK7~Ng!_m`WAdn>tQf3H*k4wM@9^4`tFbHlqM8v=a zqaY*^fQ3L>UkMpPAfAp{DNdL=IywgZ$uIG7r5Ar;g=JaJ_RdI}!^olp2w{nvOP_h8 znTttC1lxs!hxaU*3a*^acBb&yT%6R$<5_2N#c|l53*4!F!*EJjkUDqyc>79NBCbHQ zk!PIy5ybO?F%!{k=c0BF>HhbP-rZLx>N6v0@uwm5_}5%Ispi|U7Hu{3pxdIPji|Rn zM0X3Phi(bkhyzTEGUD4wnjEZ)oGxdk1=nC^4#t$E}!q}PC^j-lUk4J zG*=9=OsC7K#tC2`p1;r+5r5rR8ko8Vn(9nV;ACZ?hxM=KSf#xZy4kvik;M{@s^+uF zJ8n5TmA@43F&N%oVMEjNZO28xX9i}u3lNPSM9Z5H1tg15h=!_llu&G z;yN+MF9$F~9no@WVfB~Y6^B6;OuLT5hbF`CX1{~QaS*~ymt+4Dt=Y0BWaSugKT`O% zk=U4->fN!N3w+0IU3^^h9MeL|LGV?EY16>KuK^?-)1M9p)43#?-Rce0uN+EjB|Jxr zdkLHQ=V-bo+n0LQ7gtU6M@y?uYdFFNd>Q9gQ z*IDE2QZBVrQUZ3qPerDtuwCTJxZFD`oXsz!@ksUbNAGfF&J4pqh&R8#!{j7J6yV!l zhsCUWf$o&{E$JW_)7{+*hr$)6ah{Fmt;|Ahs#Gj9duZi>NsJAk$EKAM;(nj68@5XBZzky{jc>1}Rt$-xbHC4!9Igqg>p?M&pkJM?{~BlHXhHFeAV zu+PCe{NrK$ci-h-QFh^_R9g5Q&)sw|^?hE)>U7N44_&YF=^J^dL@Flv9&lkk$~`qM zgC7n?U{qAw-{rj93sgEsBzDikO^2I%n1LIwg>_gi8P`XPzMkP|2LhfrLXE^vqJ<0- zmK&Wz(XBnkum!~Ut*A({)_>Hl|42f&-uvo}9;I2H9QI>*{zlmMT^szBBft0*__1Uc zO%mC7T^Q-dCXA$b-w8 zHpg7eiu*X)4a~k;gY8{)pPo-d%`QFHl~8@qZFp)%vBi;Eqa-3#oreyv#gPMfFuOD# zIO%Z>S-AJsVh#_j)S}@LbBuk~;8Jncj2_Ek65}u4@|XqjF_Z3}8_7LVGY�&R_^d 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 Z14e3WJKgOsviS%+ __DIR__ . '/model/separate']), + new DatabaseAnalyser('mysql:host=127.0.0.1;dbname=nextras_orm_generator', 'root') +); + +$factory->create()->generate(); diff --git a/examples/together.php b/examples/together.php new file mode 100644 index 0000000..3e746de --- /dev/null +++ b/examples/together.php @@ -0,0 +1,15 @@ + __DIR__ . '/model/together']), + new DatabaseAnalyser('mysql:host=127.0.0.1;dbname=nextras_orm_generator', 'root') +); + +$factory->create()->generate(); \ No newline at end of file