Skip to content

Commit e9db4c5

Browse files
committed
wip : add cron expression validator
1 parent 57b99de commit e9db4c5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1428
-26
lines changed

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Once `Laravel Totem` is installed , publish `Totem` assets to your public folder
3333

3434
This package assumes that you have a good understanding of [Laravel's Task Scheduling](https://laravel.com/docs/5.4/scheduling) and [Laravel Console Commands](https://laravel.com/docs/5.4/artisan#writing-commands). Before any of this works please make sure you have a cron running as follows:
3535

36-
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
36+
* * * * * php /path-to-your-project/artisan totem:run >> /dev/null 2>&1
3737

3838
##### Web Dashboard
3939

@@ -76,7 +76,6 @@ Important versions listed below. Refer to the [Changelog](CHANGELOG.md) for a fu
7676
## Credits
7777

7878
- [Roshan Gautam](https://twitter.com/@roshangautam) for Laravel Totem
79-
- [Laravel Horizon Authors](https://github.com/laravel/horizon) for `CSS` utilities included in Laravel Horizon
8079

8180
Bug reports, feature requests, and pull requests can be submitted by following our [Contribution Guide](CONTRIBUTING.md).
8281

database/migrations/2017_08_05_194349_create_tasks_table.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public function up()
1919
$table->string('command');
2020
$table->string('cron')->nullable();
2121
$table->string('timezone')->default('UTC');
22-
$table->boolean('is_active')->default(true);
22+
$table->boolean('is_active')->default(false);
2323
$table->boolean('dont_overlap')->default(false);
2424
$table->boolean('run_in_maintenance')->default(false);
2525
$table->string('notification_email_address')->nullable();
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.define-class(@class, @ruleset) {
2+
.@{class} {
3+
@ruleset();
4+
}
5+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
.generate-responsive-variants(@ruleset, @screen, @min-width) {
2+
@prefix: ~"@{screen}\:";
3+
4+
@media (min-width: @min-width) {
5+
.@{prefix} { @ruleset(); };
6+
}
7+
}
8+
9+
.responsive(@ruleset; @i: 1) when (@i <= length(@screens)) and not (@screens = none) {
10+
@screen: extract(@screens, @i);
11+
@name: extract(@screen, 1);
12+
@screen-width: extract(@screen, 2);
13+
14+
.generate-responsive-variants(@ruleset, @name, @screen-width);
15+
.responsive(@ruleset, @i + 1);
16+
}
17+
18+
.screen(@screen, @ruleset) {
19+
.extract-match(@screens; @screen);
20+
@media (min-width: @__match) {
21+
@ruleset();
22+
}
23+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
.generate-utility-variant(@utility; @variant; @ruleset) when (extract(@variant, 1) = default) {
2+
@__variant-value: @variant;
3+
.define-class(~"@{utility}"; @ruleset);
4+
}
5+
6+
.generate-utility-variant(@utility; @variant; @ruleset) when not (extract(@variant, 1) = default) {
7+
@variant-name: extract(@variant, 1);
8+
@__variant-value: @variant;
9+
.define-class(~"@{utility}-@{variant-name}"; @ruleset);
10+
}
11+
12+
.generate-utility-variants(@utility; @variants; @ruleset; @i: 1) when (@i <= length(@variants)) and (length(extract(@variants, @i)) = 1) {
13+
& {
14+
.generate-utility-variant(@utility; @variants; @ruleset);
15+
}
16+
}
17+
18+
.generate-utility-variants(@utility; @variants; @ruleset; @i: 1) when (@i <= length(@variants)) and (length(extract(@variants, @i)) = 2) {
19+
& {
20+
@variant: extract(@variants, @i);
21+
.generate-utility-variant(@utility; @variant; @ruleset);
22+
}
23+
.generate-utility-variants(@utility; @variants; @ruleset; @i + 1);
24+
}
25+
26+
.generate-screen-utility-variant(@utility; @variant; @screen-name; @ruleset) when (extract(@variant, 1) = default) {
27+
@__variant-value: @variant;
28+
.define-class(~"@{screen-name}\:@{utility}"; @ruleset);
29+
}
30+
31+
.generate-screen-utility-variant(@utility; @variant; @screen-name; @ruleset) when not (extract(@variant, 1) = default) {
32+
@variant-name: extract(@variant, 1);
33+
@__variant-value: @variant;
34+
.define-class(~"@{screen-name}\:@{utility}-@{variant-name}"; @ruleset);
35+
}
36+
37+
.generate-screen-utility-variants(@utility; @variants; @screen-name; @ruleset; @i: 1) when (@i <= length(@variants)) and (length(extract(@variants, @i)) = 1) {
38+
& {
39+
.generate-screen-utility-variant(@utility; @variants; @screen-name; @ruleset);
40+
}
41+
}
42+
43+
.generate-screen-utility-variants(@utility; @variants; @screen-name; @ruleset; @i: 1) when (@i <= length(@variants)) and (length(extract(@variants, @i)) = 2) {
44+
& {
45+
@variant: extract(@variants, @i);
46+
.generate-screen-utility-variant(@utility; @variant; @screen-name; @ruleset);
47+
}
48+
.generate-screen-utility-variants(@utility; @variants; @screen-name; @ruleset; @i + 1);
49+
}
50+
51+
.generate-responsive-utility-variants(@utility; @variants; @screens; @ruleset; @i: 1) when (@i <= length(@screens)) {
52+
@screen: extract(@screens, @i);
53+
@screen-name: extract(@screen, 1);
54+
@screen-width: extract(@screen, 2);
55+
56+
@media (min-width: @screen-width) {
57+
.generate-screen-utility-variants(@utility; @variants; @screen-name; @ruleset);
58+
}
59+
.generate-responsive-utility-variants(@utility; @variants; @screens; @ruleset; @i + 1);
60+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
.define-bg-colors(@variants) {
2+
.generate-utility-variants('bg'; @variants; {
3+
background-color: extract(@__variant-value, 2);
4+
});
5+
}
6+
7+
.define-bg-colors(@variants; none) {
8+
.define-bg-colors(@variants);
9+
}
10+
11+
.define-bg-colors(@variants; @screens) when not (@screens = none) {
12+
.define-bg-colors(@variants);
13+
.generate-responsive-utility-variants('bg'; @variants; @screens; {
14+
background-color: extract(@__variant-value, 2);
15+
});
16+
}
17+
18+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
.define-border-colors(@variants) {
2+
.generate-utility-variants('border'; @variants; {
3+
border-color: extract(@__variant-value, 2);
4+
});
5+
}
6+
7+
.define-border-colors(@variants; none) {
8+
.define-border-colors(@variants);
9+
}
10+
11+
.define-border-colors(@variants; @screens) when not (@screens = none) {
12+
.define-border-colors(@variants);
13+
.generate-responsive-utility-variants('border'; @variants; @screens; {
14+
border-color: extract(@__variant-value, 2);
15+
});
16+
}
17+
18+
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
.generate-border-width-utility(@variant; 0; @border-color) {
2+
.generate-utility-variant('border'; @variant; { border: 0; });
3+
.generate-utility-variant('border-t'; @variant; { border-top: 0; });
4+
.generate-utility-variant('border-r'; @variant; { border-right: 0; });
5+
.generate-utility-variant('border-b'; @variant; { border-bottom: 0; });
6+
.generate-utility-variant('border-l'; @variant; { border-left: 0; });
7+
}
8+
9+
.generate-border-width-utility(@variant; @border-width; @border-color) when not (@border-width = 0) {
10+
.generate-utility-variant('border'; @variant; {
11+
border: @border-width solid @border-color;
12+
});
13+
.generate-utility-variant('border-t'; @variant; {
14+
border-top: @border-width solid @border-color;
15+
});
16+
.generate-utility-variant('border-r'; @variant; {
17+
border-right: @border-width solid @border-color;
18+
});
19+
.generate-utility-variant('border-b'; @variant; {
20+
border-bottom: @border-width solid @border-color;
21+
});
22+
.generate-utility-variant('border-l'; @variant; {
23+
border-left: @border-width solid @border-color;
24+
});
25+
}
26+
27+
.generate-border-width-utilities(@border-width-scale; @border-color; @i: 1) when (@i <= length(@border-width-scale)) {
28+
@variant: extract(@border-width-scale, @i);
29+
@border-width: extract(@variant, 2);
30+
31+
.generate-border-width-utility(@variant; @border-width; @border-color);
32+
.generate-border-width-utilities(@border-width-scale; @border-color; @i + 1);
33+
}
34+
35+
.generate-screen-border-width-utility(@variant; 0; @border-color; @screen-name) {
36+
@prefix: ~"@{screen-name}\:";
37+
38+
.generate-utility-variant(~"@{prefix}border"; @variant; { border: 0; });
39+
.generate-utility-variant(~"@{prefix}border-t"; @variant; { border-top: 0; });
40+
.generate-utility-variant(~"@{prefix}border-r"; @variant; { border-right: 0; });
41+
.generate-utility-variant(~"@{prefix}border-b"; @variant; { border-bottom: 0; });
42+
.generate-utility-variant(~"@{prefix}border-l"; @variant; { border-left: 0; });
43+
}
44+
45+
.generate-screen-border-width-utility(@variant; @border-width; @border-color; @screen-name) when not (@border-width = 0) {
46+
@prefix: ~"@{screen-name}\:";
47+
48+
.generate-utility-variant(~"@{prefix}border"; @variant; {
49+
border: @border-width solid @border-color;
50+
});
51+
.generate-utility-variant(~"@{prefix}border-t"; @variant; {
52+
border-top: @border-width solid @border-color;
53+
});
54+
.generate-utility-variant(~"@{prefix}border-r"; @variant; {
55+
border-right: @border-width solid @border-color;
56+
});
57+
.generate-utility-variant(~"@{prefix}border-b"; @variant; {
58+
border-bottom: @border-width solid @border-color;
59+
});
60+
.generate-utility-variant(~"@{prefix}border-l"; @variant; {
61+
border-left: @border-width solid @border-color;
62+
});
63+
}
64+
65+
.generate-screen-border-width-utilities(@border-width-scale; @border-color; @screen-name; @i: 1) when (@i <= length(@border-width-scale)) {
66+
@variant: extract(@border-width-scale, @i);
67+
@border-width: extract(@variant, 2);
68+
69+
.generate-screen-border-width-utility(@variant; @border-width; @border-color; @screen-name);
70+
.generate-screen-border-width-utilities(@border-width-scale; @border-color; @screen-name; (@i + 1));
71+
}
72+
73+
.generate-responsive-border-width-utilities(@border-width-scale; @border-color; @i: 1) when (@i <= length(@screens)) {
74+
@screen: extract(@screens, @i);
75+
@screen-name: extract(@screen, 1);
76+
@screen-width: extract(@screen, 2);
77+
78+
@media (min-width: @screen-width) {
79+
.generate-screen-border-width-utilities(@border-width-scale; @border-color; @screen-name);
80+
}
81+
82+
.generate-responsive-border-width-utilities(@border-width-scale; @border-color; @i + 1);
83+
}
84+
85+
.define-border-widths(@border-width-scale; @border-color) {
86+
& {
87+
.generate-border-width-utilities(@border-width-scale; @border-color);
88+
}
89+
}
90+
91+
.define-border-widths(@border-width-scale; @border-color; none) {
92+
.define-border-widths(@border-width-scale; @border-color);
93+
}
94+
95+
.define-border-widths(@border-width-scale; @border-color; @screens) when not (@screens = none) {
96+
& {
97+
.generate-border-width-utilities(@border-width-scale; @border-color);
98+
.generate-responsive-border-width-utilities(@border-width-scale; @border-color);
99+
}
100+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
.define-constrains(@variants) {
2+
.generate-utility-variants('constrain'; @variants; {
3+
max-width: extract(@__variant-value, 2);
4+
flex-basis: extract(@__variant-value, 2);
5+
});
6+
}
7+
8+
.define-constrains(@variants; none) {
9+
.define-constrains(@variants);
10+
}
11+
12+
.define-constrains(@variants; @screens) when not (@screens = none) {
13+
.define-constrains(@variants);
14+
.generate-responsive-utility-variants('constrain'; @variants; @screens; {
15+
max-width: extract(@__variant-value, 2);
16+
flex-basis: extract(@__variant-value, 2);
17+
});
18+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
.generate-grid-columns(@grid-column-count; @prefix; @i: 1) when (@i <= @grid-column-count) {
2+
.@{prefix}col-@{i} {
3+
flex-basis: 100% * (@i / @grid-column-count);
4+
max-width: 100% * (@i / @grid-column-count);
5+
}
6+
7+
@offset-i: @i - 1;
8+
.@{prefix}offset-@{offset-i} {
9+
margin-left: 100% * (@offset-i / @grid-column-count);
10+
}
11+
12+
.generate-grid-columns(@grid-column-count; @prefix; @i + 1);
13+
}
14+
15+
.generate-responsive-grid(@grid-column-count; @screen; @min-width) {
16+
@prefix: ~"@{screen}\:";
17+
18+
@media (min-width: @min-width) {
19+
.@{prefix}col {
20+
flex-grow: 1;
21+
flex-basis: 0;
22+
max-width: 100%;
23+
min-width: 0;
24+
}
25+
26+
.@{prefix}col-first {
27+
order: -1;
28+
}
29+
30+
.@{prefix}col-last {
31+
order: 1;
32+
}
33+
34+
.generate-grid-columns(@grid-column-count; @prefix);
35+
}
36+
}
37+
38+
.generate-responsive-grids(@grid-column-count; @screens; @i: 1) when (@i <= length(@screens)) {
39+
@screen: extract(@screens, @i);
40+
@name: extract(@screen, 1);
41+
@screen-width: extract(@screen, 2);
42+
43+
.generate-responsive-grid(@grid-column-count; @name; @screen-width);
44+
.generate-responsive-grids(@grid-column-count; @screens; @i + 1);
45+
}
46+
47+
.generate-all-grids(@grid-column-count) {
48+
.col {
49+
flex-grow: 1;
50+
flex-basis: 0;
51+
max-width: 100%;
52+
min-width: 0;
53+
}
54+
.col-first {
55+
order: -1;
56+
}
57+
.col-last {
58+
order: 1;
59+
}
60+
.generate-grid-columns(@grid-column-count; ~"");
61+
}
62+
63+
.generate-all-grids(@grid-column-count; none) {
64+
.generate-all-grids(@grid-column-count);
65+
}
66+
67+
.generate-all-grids(@grid-column-count; @screens) when not (@screens = none) {
68+
.generate-all-grids(@grid-column-count);
69+
.generate-responsive-grids(@grid-column-count; @screens);
70+
}

0 commit comments

Comments
 (0)